主从结构:
方案1:多master无slave模式
缺点:
- 若broker宕机,则broker上未被消费的消息在broker恢复前无法消费
方案2:多“master-slave”异步复制模式

给master分配slave从节点,生产者发消息给master后,异步将master的数据增量复制到slave
优点:master出现异常后,slave能继续提供消费服务。
缺点:broker宕机后,slave永远无法成为master,即producer无法再向该mater写入消息
方案3:多“master-slave”同步复制模式(同步双写)
producer写数据时,同步向master和slave同步写入,都写入成功才向producer返回“写入成功”的响应。
优点:数据的可靠性比上面强
缺点:broker宕机后,slave永远无法成为master,即producer无法再向该mater写入消息
方案4:DLedger(多副本)模式(唯一的推荐使用方案)
前提:在RocketMQ4.5版本以后提供了DLedger集群架构,要求一个broker集群中至少要提供有三个broker集群分片(即多对“1master多slave”),一旦master节点宕机,DLedger会自动从剩下的多个slave中选举出一个新的master继续对外提供服务。master与slave之间的数据同步可以支持异步模式和同步模式。

优点:master节点异常时,能自动选举出新master提供服务
缺点:耗费资源较多
重复消费问题:
扩容问题: