假設我有兩個服務:customerService 和 orderService。兩者都是包含在其自己的 dockerfile 中的 Springboot 應用程式。
在生產中,它們應該使用 Kubernetes 進行管理。所以每個服務可能有多個實體。由于服務應該能夠通過 REST 相互呼叫,我想使用 ServiceDiscovery 來獲取相應其他型別的服務實體的目的地(例如 customerService 想要獲取正在運行的 orderService 實體的主機、埠等)。
我想通過在 Spring Boot 服務中使用注入的 DiscoveryClient 來實作這一點。
我了解這在生產中是如何作業的,因為 DiscoveryClient 與 Kubernetes 集群通信。
但是,在沒有 Kubernetes 而只有 Docker 運行的本地環境中,這如何作業?
uj5u.com熱心網友回復:
我認為您應該研究Kubernetes 服務,而不是使用注入的 Discovery 客戶端。
對于服務發現和負載平衡,您可以使用 Kubernetes 中的服務。來自 Kubernetes 檔案:
將在一組 Pod 上運行的應用程式公開為網路服務的抽象方法。使用 Kubernetes,您無需修改??應用程式即可使用不熟悉的服務發現機制。Kubernetes 為 Pod 提供了自己的 IP 地址和一組 Pod 的單個 DNS 名稱,并且可以在它們之間進行負載平衡。
這樣,您還可以避免維護發現服務器實體及其可用性的開銷。
這在沒有 Kubernetes 而只有 Docker 運行的本地環境中如何作業?
您可以使用spring 組態檔根據您的環境選擇此 URL。
例如,您將有兩個 spring 組態檔(application-dev、application-prod),在 dev 檔案中,第二個應用程式的 URL 將是 localhost 相對地址,而在 prod 檔案中,URL 將是您使用的 DNS將作為 Kubernetes 服務設定的一部分。因此,在本地運行時使用組態檔 dev,在生產中運行時使用 prod(或適用于您的 Kubernetes 環境的組態檔)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/390068.html
標籤:春天 弹簧靴 码头工人 Kubernetes 服务发现
