我正在构建一个分布式系统,在该系统中,我需要刷新两个服务(服务 A 和服务 B)的所有 pod 的特定配置。此配置由另一个服务-C 处理。用户可以向 service-C 发送 api 请求,该请求需要传播到 service-A 和 service-B 的所有 pod。
- 服务 A 和服务 B 在 grpc 上工作,不对外公开。
- 这些服务可以在不同的节点上运行(因此我们不能在这些节点之间共享文件系统)。
- 配置平均约为 100KB,这样的配置大约有 100K。
可能的想法:
我可以使用 kafka 创建一个消息总线,并将这些配置推送到该总线上,然后由不同的 pod 监听。这种方法的问题是服务 A 和服务 B 将运行 100 个 pod,因此会有大约 100 个消费者组,而且如果一个新的 pod 出现,它必须从一开始就消耗队列,这将非常耗时。
使用像 consul 或 etcd 这样的轻量级瞬态键值存储,因此 Service-C 会将数据推送到 consul 中,然后 Service-A 和 Service-B 可以读取这些数据。这种方法的问题是,这么多的 pod 监听 consul 会导致延迟。
有人可以帮我一些想法,我可以如何在 kubernetes 上实现这一点吗?
谢谢。