前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RocketMQ: 技术架构与启动流程

RocketMQ: 技术架构与启动流程

作者头像
一点博客
发布2022-12-10 16:15:24
3360
发布2022-12-10 16:15:24
举报
文章被收录于专栏:一点博客

技术架构

主要分为四部分:

  • 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订阅消息;

工作流程

  1. 启动NameServer, NameServer启动后监听端口, 等待Broker/ Producer/ Consumer 连接;
  2. Broker启动, 然后与NameServer保持长连接, 定时发送心跳包. 心跳包包括当前Broker的IP和端口以及存储的所有Topic信息; 然后NameServer就有Topic和Broker的映射关系;
  3. Producer启动时先和NameServer建立长连接, 然后从NameServer中获取当前Topic存在哪些Broker, 轮询从队列中选择一个队列, 然后与Broker建立长连接从而向Broker发送消息;
  4. Consumer 和其中一台NameServer建立长连接, 获取当前Topic存在哪些Broker上, 与Broker建立长连接, 开始消费消息;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一点博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 技术架构
  • 部署架构
  • 工作流程
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档