【发布时间】:2021-12-13 06:50:50
【问题描述】:
让我们考虑一种情况,多个服务中继的数据可以随时更改,并且应该在每个微服务中大致同时更新 - 例如,有一个支持的语言列表或一些可能在一天内更改的通用政策并同时影响许多服务。
我能想到的一个解决方案是拥有另一个可以保存该数据的微服务,并且任何需要当前状态的服务都可以请求它。缺点是这些数据的变化不是很频繁,通过 HTTP 请求并不便宜,并且有很多流量到这个假设是全局注册服务。由于它不经常更改,因此许多服务可能只是缓存数据 - 为了不每次都请求它 - 并且在对配置进行更改时无法足够快地响应更改。
另一种解决方案可能是将此类配置外部化 - 例如,在 AWS 中,S3 上可能有一些配置文件可供其他人使用。这里的缺点是(据我所知)无法跟踪此类文件中的更改,并且如果配置中的更改值正确(没有拼写错误等),也无法添加一些逻辑进行验证,等等
所以我的问题是如何处理微服务世界中的全局配置/注册表,以便几乎没有 HTTP 开销,您可以审计更改以及在许多服务中同时引入更改?
【问题讨论】:
-
我也遇到了这个问题。我的案例是在多个项目或微服务之间共享一些常见的
constants或config。我的选择: 1. 将此通用模块发布到npm注册表。 2. 由于使用 GCP,请考虑将这些常量或配置存储到Datastore或metadata。但我不知道哪种方式更好。
标签: microservices