技术架构
主要分为四部分:
- Producer: 消息的生产者. 支持快速失败并且低延迟.
- Consumer: 消息的消费者. 支持push/pull 两种模式对消息消费. 支持集群消费和广播消费.
- NameServer: 两个功能:
(1) Broker管理, 接收Broker集群的注册信息并保存下来, 提供心跳机制;
(2) 路由信息管理, Producer和 Consumer 通过NameServer 获取Broker集群的路由信息, 进行投递和消费;
- BrokerServer: 负责消息的存储 / 投递 / 和查询. 包含以下几个重要模块:
(1) Remoting Module: 负责处理来自Client端的请求;
(2) Client Manager: 负责管理客户端(Producer/Consumer)和维护Consumer的Topic订阅信息;
(3) Store Serivce: 提供API接口处理消息存储到物理硬盘和查询功能;
(4) HA Service: 高可用服务, 提供Master 和 Slave 之间的数据同步功能;
(5) Index Service: 根据Message Key对投递到Broker 的消息进行索引服务, 提供消息的快速查询;
部署架构
- NameServer: 无状态节点, 可集群部署, 节点之间无信息同步;
- Broker: 分为Master和Slave, 每个Broker与NameServer集群中的所有节点建立长连接, 定时注册Topic信息到所有的NameServer.
- Producer: 与NameServer集群中的其中一个节点(随机选择) 建立长连接, 定期从NameServer获取Topic路由信息, 并向提供Topic服务的Master建立长连接, 且定时向Master发送心跳;
- Consumer: 与NameServer 集群中的其中一个节点(随机选择) 建立长连接, 建立长连接, 定期从NameServer获取Topic路由信息, 并向提供Topic服务的Master Slave建立长连接, 且定时向Master slave发送心跳; Consumber 既可以从Master订阅消息, 也可以从Slave订阅消息;
工作流程
- 启动NameServer, NameServer启动后监听端口, 等待Broker/ Producer/ Consumer 连接;
- Broker启动, 然后与NameServer保持长连接, 定时发送心跳包. 心跳包包括当前Broker的IP和端口以及存储的所有Topic信息; 然后NameServer就有Topic和Broker的映射关系;
- Producer启动时先和NameServer建立长连接, 然后从NameServer中获取当前Topic存在哪些Broker, 轮询从队列中选择一个队列, 然后与Broker建立长连接从而向Broker发送消息;
- Consumer 和其中一台NameServer建立长连接, 获取当前Topic存在哪些Broker上, 与Broker建立长连接, 开始消费消息;
本文参与
腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-08,如有侵权请联系
cloudcommunity@tencent.com 删除