中间服务有个配置如接口文档经常很短时间里多次更新,集群的 n 个服务如何很小的性能损耗就能及时拿到最新的?
回答·20
最热
最新
- 方式一、用长连接推送,中间服务推送给其他 n 个服务,保证及时。对于集群的 n 个服务而言,多了一个长连接。 方式二、把配置写到 mysql,用 canal 监听配置变化,将变化推送给消息队列,其他 n 个服务监听消息队列。
- 异步通知:最终一致性。A 更新,发消息到消息队列。B 和 C 监听消息执行拉取。
- 从研发效率上讲,现在有很多的负责实现配置管理的服务(组件)可以实现这个功能。当然如果现有产品有这个功能,短期内直接用就好了。 就这个问题来说,如果做产品选型,那么就要重点关注以下几个问题。 (1)这些配置相关数据一致性的要求。 (2)配置管理和配置数据的用户端通信机制,同步文件还是接口调用? (3)更新消息是 poll 方式,还是 pub/sub/notify 机制 欢迎大家补充!
- 我接触 kubernetes 时间不长,想到一个点子。 不知道你服务上了 kubernetes 没有,在 k8S 实现起来更加丝滑,可以委托给 k8s 做配置分发,对现有服务无侵入,也可以横向扩展,应对业务压力 把你的接口配置抽象成 configmap resource,其他服务需要用到该接口配置的话,可以在部署服务的时候指明依赖该 configmap, 这样一旦 configmap 发生变化,声明依赖该 configmap 所有的服务基本能实时感知到
- 这个方案很多,让你们架构师给你选一个,避免一个项目多种机制。
- 1:可以采用消息总线的方式,配置服务更新时,发送更新消息到总线,其他服务监听到更新消息则去拉取配置。 2.在线更新时,只读取增量配置项,重启时读取全量配置文件。增量配置需版本化,配置服务可以合并多个版本的配置项一次性提供给其他服务。
- consul Zookeeper Amqp Mqtt 都可以 生产消费
- 分布式缓存 redis,应该是最容易实现的方式
- 阿里 nacos 组件很好用,架构选型做好,这都不是问题
- 可以使用消息总线,每次服务启动生成该模块所有的 api 的信息和对应的 md5 值,另一端监听到如果同一个 api 的 md5 值有变化,则进行更新