[英]Configure downstream API endpoints in microservices
在微服務世界中,配置下游 API 端點的推薦方法是什么?
例如,如果服務 A 需要調用服務 B 中的端點,我們有兩種選擇:
一個。 使服務 B 的主機名和端口號 API 在服務 A (service-b:8080) 中可配置,並將 append 設置為代碼中的路徑 URI
或者
灣。 在服務 A (http://service-b:8080/somepath) 中使完整的端點可配置
雖然我喜歡使端點可配置的想法,但它留下了很大的錯誤空間,因為需要指定整個路徑。 當需要從服務 A 調用多個端點到服務 B 時,它也不太適合,這可能具有不同的路徑,需要我們配置多個端點。
另一方面,由於上述原因,選項 (a) 似乎更具可擴展性。
大多數在線搜索結果只是演示了一個服務如何調用另一個服務,並使用硬編碼的 URL 進行演示。 很高興知道社區在現實世界的項目中是如何做到這一點的。
PS:我們使用Spring Webflux並部署到k8s。
我看到大多數團隊使用選項 a,其中 serviceB“baseUrl”(基本上是 https://serviceb-hostname:8080)在部署期間作為環境屬性(kubernetes configmap)注入到應用程序中。
The specific API specific paths are configured in application yaml or in the "proxy config" class itself as constants (eg. ServiceBProxy.java - proxy classes are those which will make rest-calls to the dependent services like service B).
這是來自其中一個微服務(來自我的一個項目)的應用程序 yaml 的一部分:
authorizationService:
baseUri: ${authorizationServiceBaseUri}/api
tenantService:
baseUri: ${tenantServiceBaseUri}/api/v1
tenantsUri: ${tenantService.baseUri}/tenants
settingsService:
baseUri: ${settingsServiceBaseUri}
iamService:
fetchBatchSize: 500
baseUri: ${iamServiceBaseUri}
這里iamServiceBaseUri,settingsServiceBaseUri,tenantServiceBaseUri,authorizationServiceBaseUri的值都是在部署時注入的。 它們中的每一個都包含帶有端口的clusterIP。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.