文章目录
- 消息同步策略
- 殊途同归
- 同步基于offset而不是消息本身
- 刷盘策略
RocketMQ broker服务端以组为单位提供服务的,拥有着一样的brokerName则认为是一个组。其中brokerId=0的就是master,大于0的则为slave。
消息同步策略
master和slave都可以提供读服务,但是只有master允许做写入操作,slave仅从master同步数据并不断上报自己的同步进度(slave自己的物理max offset)。
在Broker配置中,如果是有三个可选的brokerRole:ASYNC_MASTER、SYNC_MASTER、SLAVE
。也就是说Master其实是分两种,决定其不同消息同步方式。
ASYNC_MASTER
是异步复制的方式,生产者写入消息到Master后无需等待消息复制到slave即可返回,消息的复制由旁路线程进行异步复制。
SYNC_MASTER
是同步复制的方式,表现出来的是类似同步双写的策略。即Master写入完消息之后,需要等待Slave的复制成功。注,这里只需要有一个Slave复制成功并成功应答即算成功,所以在这种模式下,如果有3个Slave,当生产者获得SEND_OK的应答时,代表消息已经达到Maser和一个Slave(注:这里并不代表已经持久化到磁盘,而只能证明肯定到了Pa