RocketMQ: 技术架构与启动流程
2023-06-13 09:15:45 时间
技术架构
主要分为四部分:
- 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建立长连接, 开始消费消息;
相关文章
- 九章云极DataCanvas开源技术副总裁杨健:从预测到决策,YLearn全流程解决因果学习难题
- 流程控制-循环控制
- Web相关技术基础介绍与浏览器解析渲染流程详述
- 结构建模设计——Solidworks软件之绘制一个手机支架模型,使用3D打印技术输出实物的全流程实战
- ios AppStore 上架流程(Xcode11.5)
- 数据仓库建模方法详解视频_三维建模流程步骤
- 技术分享 | TiUP工具 - TiDB集群滚动升级核心流程解析
- React源码中的计算流程和优先级
- 阿里面试官:说说 Spring 源码中 BeanFactory 的创建流程
- fecify订单结账流程详细解析,提升跨境独立站转化率
- Xilinx FPGA Vivado 开发流程
- 【数据挖掘】数据挖掘简介 ( 数据挖掘引入 | KDD 流程 | 数据源要求 | 技术特点 )
- 产学研高峰对话:流程挖掘学术与应用现状及发展趋势 | Q推荐
- 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
- FTP协议的工作流程
- 管理Mysql的流程管理:构建一个可持续的系统(mysql流程)
- Google Glass未死,这家公司在用它改善医生工作流程
- 部署Oracle作业优化存储工作流程(oracle作业存储)
- 开启百万级流程管理之路Oracle BPM安装指南(oracle bpm安装)