主从切换引入目的

RocketMQ 4.5.0 版之前只提供了主从同步功能,主从同步部署架构如图9-1所示。

image 2025 02 06 12 38 24 747
Figure 1. 图9-1 RocketMQ主从同步部署图

如果broker-a的主节点宕机,消费者无法再向broker-a写消息,所有的消息将写入broker-b,但消息消费者可以继续从broker-a的从节点消费,即集群的主节点一旦宕机,整个Broker集群的写负载能力会明显下降,这是因为可用的写节点减少了。在分布式领域,broker-a、broker-b其实有一个专业术语:复制组。这是因为broker-a/主节点、broker-a/从节点这两台broker中的数据完成一致,而broker-a、broker-b中的数据不同,所以成为分片。

试想一下,如果一个复制组中的主节点宕机,能否由该复制组内的其他节点来代替呢?如果能由复制组内的从节点代替,整个集群的写负载能力就不会因主节点宕机而立即受到影响,这就是采用主从切换机制的目的。

因为主从切换机制能极大地提高集群的可用性,所以RocketMQ 4.5.0开始正式支持这一特性。