簡體   English   中英

在微服務中配置下游 API 端點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM