RocketMQ各种集群模式介绍
一、RocketMQ的集群架构
RocketMQ网络部署图如下:
在RocketMQ的架构中主要存在四种角色,NameServer 、Brocker、生产者、消费者:
1、NameServer 集群:NameServer 是一个无状态的节点,可集群部署,节点都是各自独立的,无任何信息同步。
2、Broker 集群:Broker 分为 Master 与 Slave,一个 Master 可以对应多个 Slave,但一个 Slave 只能对应一个Master。
3、生产者集群:Producer 为消息的生产者,都是各自独立的无状态的节点,可以认为只要向 mq 中推送消息的节点都算作 Producer 节点。
4、消费者集群:Customer 为消息的消费者,都是各自独立的无状态的节点,可以认为只要向 mq 中获取消息的节点都算作 Customer 节点。
二、RocketMQ的四种集群模式
1、单Master模式
这种方式风险较大,一日 Broker 重启或者宕机时,会导致整个服务不可用。不建议线上环境使用,可以用干本地测试。
2、多Master模式
一个集群无 Slave,全是 Master,例如2个 Master 或者3个 Master,这种模式的优缺点如下:
(1) 优点:
配置简单,单个 Master 宕机或重启维护对应用无影响,在磁盘配置为 RAID10时,即使机器宕机不可恢复情况下,由于 RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢),性能最高。
(2) 缺点:
单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实
时性会受到影响。
3、多Master多Slave模式(异步)
每个 Master 配置一个 Slave,有多对 Master-Slave,HA采用异步复制方式,主备有短暂消息延迟(毫秒级),
这种模式的优缺点如下:
(1)优点:
即使磁盘损坏,消息丢失的非常少,目消息实时性不会受影响,同时 Master 宕机后,消费者仍然可以从 Slave 消费,而目此过程对应用透明,不需要人工干预,性能同多 Master 模式几乎一样。
(2)缺点:
Master 宕机,磁盘损坏情况下会丢失少量消息。
4、多Master多Slave模式(同步)
每个 Master 配置一个 Slave,有多对Master-Slave,HA 采用同步双写方式,即只有主备都写成功,才向应用返回成功,这种模式的优缺点如下:
(1)优点:
数据与服务都无单点故障,Master 宕机情况下,消息无延迟,服务可用性与数据可
用性都非常高
(2)缺点:
性能比异步复制模式略低(大约低10%左右),发送单个消息的RT会略高,且目前版
本在主节点宕机后,备机不能自动切换为主机。