27 Topic 分区 订阅如何实现
动态配置
在消息队列里面,因为需要保持架构的简洁度,基于本地文件也是一种常用的方案。比如 Kafka 和 Pulsar 就是基于 ZooKeeper 来实现的动态配置,因为架构中已经集成了 ZooKeeper。RocketMQ 的 Nameserver 是一个缓存组件,没有实际的存储和 Watch 机制,无法实现类似 ZooKeeper 的效果,所以用的是热加载本地文件的方案。
集群和节点元数据的格式和存储
因为 Broker 数量不会很多,一个集群大概是百或千的量级,所以如果从 Broker 数量来看,这两个方案的区别不大。目前业界主要使用的是第二个思路,主要的原因是:Broker 元数据分开存储方便管理,避免节点间相互影响,也可以避免单个 ZooKeeper Node 的数据量过大存不下。