RocketMQ整体结构

image

一、角色介绍

Rocketmq整体包含4个角色

  1. Producer:消息⽣产者和发送者,就是寄件人。
  2. NameServer:路由注册中⼼,管理Broker,就是卫星。
  3. Broker:消息存储服务器,暂存和传输消息,就是邮局。
  4. Consumer:消息消费者和接收者,就是收件人。

在介绍完以上4个角色以后,还需要重点介绍一下Topic和Message Queue:

  1. Topic:主题,用来区分不同类型的消息
  2. Message Queue:一个Topic可以设置一个或多个Message Queue,相当于Topic的分区,用于并行发送和接收消息。

二、集群特点

NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。

Broker部署相对复杂,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。每个Broker与NameServer集群中的所有节点建立长连接,定时注册Topic信息到所有NameServer。

Producer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取Topic路由信息,并向提供Topic服务的Master建立长连接,且定时向Master发送心跳。Producer完全无状态,可集群部署。

Consumer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取Topic路由信息,并向提供Topic服务的Master、Slave建立长连接,且定时向Master、Slave发送心跳。Consumer既可以从Master订阅消息,也可以从Slave订阅消息,订阅规则由Broker配置决定。

这里面最核心的是每个Broker与Name Server集群中的所有节点建立长连接这样做好处多多。

  • 这样可以使Name Server之间可以没有任何关联,因为它们绑定的Broker是一致的。
  • 作为Producer或者Consumer可以绑定任何一个Name Server 因为它们都是一样的。

三、集群模式

  1. 单Master模式
  2. 多Master模式
  3. 多Master多Slave模式(异步)
  4. 多Master多Slave模式(同步)
posted @ 2019-11-20 13:43  要好好吃饭  阅读(199)  评论(0编辑  收藏  举报