RocketMQ 的 Broker 主从同步机制是怎样的?

RocketMQ的Broker主从同步机制主要通过消息的异步复制来实现:

  1. Master将接收到的消息首先进行持久化,然后同时将消息主题与偏移量信息推送到对应的Slave。
  2. Slave接收到主题与偏移量信息后,从CommitLog中读取对应消息并进行持久化。
  3. Slave完成消息持久化后,向Master发送ACK确认。Master在接收到所有Slave的ACK后,才会向生产者返回SUCCESS响应。
  4. 如果Master在推送消息时,Slave无响应,Master会定期重试推送。Slave启动后也会主动通过偏移量信息定期同步未同步消息。

异步复制相关代码:

  1. org.apache.rocketmq.broker.async.AsyncBrokerOuterAPI:Master推送消息主题与偏移量至Slave。
  2. org.apache.rocketmq.broker.slave.UpdateMasterWhenNoMaster:Slave定时主动同步未同步消息。
  3. org.apache.rocketmq.broker.slave.HAConnection:Master与Slave TCP长连接,发送同步请求与返回ACK。
  4. org.apache.rocketmq.broker.latency.BrokerFixedThreadPool:Master接收到Slave ACK后,将响应返回至生产者。
  5. org.apache.rocketmq.store:Slave根据接收到的主题与偏移量读取CommitLog消息并持久化。

理解Broker主从同步机制,可以让我们在配置集群时根据业务需求设置恰当的同步参数。