繁体   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