RocketMQ 的架构设计

技术架构
image.png

  • 包含以上四个部分
  • Producer:消息生产者
  • Consumer:消息消息者
  • NameServer:管理调度中心
  • BrokerServer:负责消息的存储、发送、接收
    • Remoting Module:整个 Broker 的实体,负责处理来自 clients 端的请求
    • Client Manager:负责管理客户端(Producer/Consumer)和维护 Consumer 的 Topic 订阅信息
    • Store Service:提供方便简单的 API 接口处理消息存储到物理硬盘和查询功能
    • HA Service:高可用服务,提供 Master Broker 和 Slave Broker 之间的数据同步功能
    • Index Service:根据特定的 Message Key 对投递到 Broker 的消息进行索引服务,以提供消息的快速查询image.png

部署架构

image.png

网络部署特点
  • Name Server 为无状态节点,可集群部署,节点之间无信息同步
  • Broker 部署相对复杂,分为 Master 与 Slave,
    • 一个 Master 对应多个 Slave,但一个 Slave 只能对应一个 Master
    • Master 和 Slave 的对应关系通过指定相同的 BrokerName,不同的 BrokerId 来定义,BrokerId 为 0 表示 Master,非 0 表示 Slave
    • Master 可部署多个,每个 Broker 与 NameServer 集群中的所有节点建立长连接,定时注册 Topic 信息到所有 NameServer
    • 目前版本的 RocketMQ 在部署架构上支持一 Maste r多 Slave,但只有 BrokerId = 1 的从服务器才会参与消息的读负载
  • Producer 与 NameServer 集群中的一个节点(随机选择)建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Topic 服务的 Master 建立长连接,且定时向 Master 发送心跳,Producer 完全无状态,可集群部署
  • Consumer 与 NameServer 集群中的一个节点(随机选择)建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Topic 服务的 Master、Slave 建立长连接,且定时向 Master、Slave 发送心跳。Consumer 既可从 Master 订阅消息,也可从 Slave 订阅消息,消费者在向 Master 拉取消息时,Master 服务器会根据拉取偏移量与最大偏移量的距离(判断是否读老消息,产生读 IO),以及从服务器是否可读等因素建议下一次是从 Master or Slave 拉取。
简述工作流程
  • 启动 NameServer 并监听端口,等待 Broker、Producer、Consumer 连上来,相当于一个路由控制中心
  • 启动 Broker,跟所有的 NameServer 保持长连接,定时发送心跳包。心跳包中包含当前 Broker 信息(IP、端口等)以及存储所有 Topic 信息,注册成功后,NameServer 集群中就有 Topic 跟 Broker 的映射关系
  • 收发消息前,先创建 Topic,创建 Topic 时需要指定该 Topic 要存储在哪些 Broker 上,也可以在发送消息时自动创建 Topic
  • Producer 发送消息,启动时先跟 NameServer 集群中的其中一台建立长连接,并从 NameServer 中获取当前发送送给你的 Topic 存在哪些 Broker 上,轮询从队列列表中选择一个队列,然后与队列所在的 Broker 建立长连接从而向 Broker 发消息
  • Consumer 跟 Producer 类似,跟其中一台 NameServer 建立长连接,获取当前订阅 Topic 存在哪些 Broker 上,然后直接跟 Broker 建立连接通道,消费消息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值