RocketMQ 集群模式架构分析
集群结构类型
单节点
- 优点:本地开发测试,配置简单,同步刷盘消息一条都不会丢
- 缺点:不可靠,如果宕机,会导致服务不可用
主从(异步、同步双写)
- 优点:同步双写消息不丢失,异步复制存在少量丢失,主节点宕机,从节点可以对外提供消息的消费,但是不支持写入
- 缺点:主备有短暂消息延迟,毫秒级,目前不支持自动切换,需要脚本或者其他程序进行检测然后进行停止 broker,重启让从节点成为主节点
双主
- 优点:配置简单,可以靠配置 RAID 磁盘阵列保证消息可靠,异步刷盘丢失少量消息
- 缺点:Master 机器宕机期间,未被消费的消息在机器恢复之前不可消费,实时性会受到影响
双主双从,多主多从模式(异步复制)
- 优点:磁盘损坏,消息丢失的非常少,消息实时性不会受影响,Master 宕机后,消费者仍然可以从 Slave 消费
- 缺点:主备有短暂消息延迟,毫秒级,如果Master宕机,磁盘损坏情况,会丢失少量消息
双主双从,多主多从模式(同步双写)
- 优点:同步双写方式,主备都写成功,向应用才返回成功,服务可用性与数据可用性都非常高
- 缺点:性能比异步复制模式略低,主宕机后,备机不能自动切换为主机
推荐
- 主从(异步、同步双写)
- 双主双从,多主多从模式(异步复制)
- 双主双从,多主多从模式(同步双写)
刷盘
内存和磁盘的交互
区别
消息可靠性之同步、异步刷盘
- 内存 + 磁盘
- 异步刷盘:数据可能丢失,性能高
- 同步刷盘:数据安全性高
消息可靠性之同步、异步复制
Master-Slave节点里面
- 异步复制:数据可能丢失,性能高
- 同步复制:数据安全性高,性能低一点
- 最终推荐这种方式:同步双写(即M-S同步复制),异步刷盘
剑鸣秋朔