目录
一、背景
上图为当前RocketMQ Master-Slave冷备部署,在该部署方式下,即使一个Master掉线,发送端仍然可以向其他Master发送消息,对于消费端而言,若开启备读,Consumer会自动重连到对应的Slave机器,不会出现消费停滞的情况。但也存在以下问题:
- 一些仅限于在Master上进行的操作将无法进行,包括且不限于:
- searchOffset
- maxOffset
- minOffset
- earliestMsgStoreTime
- endTransaction
所有锁MQ相关操作,包括lock, unlock, lockBatch, unlockAll
具体影响为:
- 客户端无法获取位于该副本组的mq的锁,故当本地锁过期后,将无法消费该组的顺序消息
- 客户端无法主动结束处于半状态的事务消息,只能等待broker回查事务状态
- Admin tools或控制中依赖查询offset及earliestMsgStoreTime等操作在该组上无法生效
-
故障Broker组上的二级消息消费将会中断,该类消息特点依赖Master Broker上的线程扫描CommitLog上的特殊Topic,并将满足要求的消息投放回CommitLogÿ