RocketMQ集群流程以及核心概念

一、为什么要集群

  • 单点存在单点故障问题
  • 集群可以分担压力,提高QPS
  • 主从可以保证消息可靠性,比如只有M没S。M磁盘坏了,那未被消费的消息都丢了。而S可以作为备份。

二、单M模式

1、特点

  • 只有一个Master节点,所以单点故障是致命缺点。
  • 优点:配置简单,方便部署。
  • 缺点:单点故障,一旦Broker重启或者直接宕机了,那会导致整个服务不可用。

2、图解

三、多M模式

1、特点

  • 一个集群无Slave节点,全是Master节点。
  • 优点:配置相对不复杂,单个M宕机或者重启对业务系统无感知,照常提供服务。只是这个broker上如果有消息未被消费的话可能无法继续消费,但是消息不会丢失,持久化到磁盘的。异步刷盘的话会存在少量丢失。
  • 缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到受到影响。

2、图解

 

 

四、多M多S模式

一个集群既有Master节点又有Slave节点。

1、异步复制

  • 每个 Master 配置一个 Slave,有多对Master-Slave, HA,采用异步/同步复制方式,主备有短暂消息延迟,毫秒级。
  • 优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,因为Master 宕机后,消费者仍然可以从 Slave消费,此过程对应用透明。不需要人工干预。性能同多 Master 模式几乎一样。
  • 缺点:Master 宕机,磁盘损坏情况,会丢失少量消息。

2、同步双写

  • 每个 Master 配置一个 Slave,有多对Master-Slave, HA采用同步双写方式,主备都写成功,向应用返回成功。

  • 优点:数据与服务都无单点, Master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高。

  • 缺点:性能比异步复制模式略低,大约低 10%左右,发送单个消息的 RT会略高。目前主宕机后,备机不能自动切换为主机,后续会支持自动切换功能。

  • 要想真正意义的保证消息不丢失,这个同步双写是必须的 。

3、图解

五、queue的分布

一个topic的queue可以分布到多个Broker上。比如一个topic有4个queue,他可能分配到broker-a上三个queue,broker-b上1个queue,这个queue的分配是由broker端决定的。但是为了验证猜想我们可以手动从管控台去创建这个topic,成功的话可以验证我们的猜想。

首先我有2M2S的一个集群

 

 创建topic

 

 

 

 查看status,可以发现为我们在每个broker上都创建了4个queue,也就是一共8个queue了。

 

 点击【TOPIC CONFIG】更改配置

 

 再次查看就会发现已经生效了,验证了我们的猜想

 

 每个queue的消息都是不一样的,也就是比如你发N条消息,他可能一部分在broker-a上一部分在broker-b上,不管他在哪,消息都是不一样的,不要理解成M-S那种复制。他只是负载均衡将queue分配到了不同的broker上。

posted @ 2021-05-22 11:31  苏先生139  阅读(30)  评论(0编辑  收藏  举报