本文作者:李伟,Apache RocketMQ Committer,RocketMQ Python客户端项目Owner ,Apache Doris Contributor,腾讯云数据库开发工程师。

01 RocketMQ 4.9.X架构

在4.9.X中每个组件和组件之间的通信简单说明如下:

组件和数据流 说明
Namesrv 无状态服务,保存Topic路由信息Topic路由=topic-queue-broker
Broker 有状态服务,处理计算和存储。计算 = 生产者请求,消费者请求,管理请求,Broker系统服务(比如索引构建服务,消息过期服务)存储  = 消息存储,索引存储
Broker -> Namesrv Broker定期把Broker信息+当前Broker中的Topic信息上报Namesrv
生产者 生产消息
生产者<-> Namesrv 生产者从Namesrv获取Topic路由信息, 包含Broker IP
生产者<-> Broker 生产者通过Topic路由信息,把消息直接发送给Broker生产者定期和Broker心跳,上报当前生产者实例信息
消费者 消费消息
消费者<-> Namesrv 消费者从Namesrv获取Topic路由信息, 包含Broker IP
消费者 <-> Broker 消费者通过Topic路由信息,从指定Broker中拉取消息消费消费者定期和Broker心跳,上报当前消费者实例信息

1、生产者通过Topic路由信息,把消息直接发送给Broker。

2、生产者定期和Broker心跳,上报当前生产者实例信息。

消费者消费消息消费者<-> Namesrv

1、消费者从Namesrv获取Topic路由信息, 包含

Broker IP消费者 <-> Broker 。

  • 消费者通过Topic路由信息,从指定Broker中拉取消息消费。
  • 消费者定期和Broker心跳,上报当前消费者实例信息。

02 RocketMQ 5.0.0 架构

在5.0.0 中每个组件和组件之间的通信简单说明如下:

组件和数据流 说明
Namesrv 无状态服务,保存Topic路由信息Topic路由=topic-queue-broker。在5.0.0时,Namesrv进程中可以嵌入Controller模块。若设置enableControllerInNamesrv=true,在Namesrv进程中嵌入启动一个Controller实例
Broker 有状态服务,处理计算和存储。计算 = 生产者请求,消费者请求,管理请求,Broker系统服务(比如索引构建服务,消息过期服务)存储  = 消息存储,索引存储在5.0.0时, Broker支持主从切换,Broker的角色包含:master,slave,learner。若设置asyncLearner=true,则Broker为learner,只同步数据, 不参与选举master
Broker -> Namesrv Broker定期把Broker信息+当前Broker中的Topic信息上报Namesrv
Remoting生产者 生产消息
Remoting生产者<-> Namesrv 生产者从Namesrv获取Topic路由信息, 包含Broker IP
Remoting生产者<-> Broker 产者通过Topic路由信息,把消息直接发送给Broker生产者定期和Broker心跳,上报当前生产者实例信息
Remoting消费者 消费消息
Remoting消费者<-> Namesrv 消费者从Namesrv获取Topic路由信息, 包含Broker IP
Remoting消费者 <-> Broker 消费者通过Topic路由信息,从指定Broker中拉取消息消费消费者定期和Broker心跳,上报当前消费者实例信息
5.0.0新增模块Controller(控制器) 和Kafka Controller类似,在RocketMQ中负责Broker Master的选举和通知Broker
5.0.0新增模块Broker <-> Controller Broker定期把Broker信息上报ControllerBroker同步副本状态Controller选举新的Broker Master后,通知全部Broker
5.0.0新增模块Proxy 无状态服务,新客户端通过Grpc接口访问Proxy进行收发消息。社区已支持Remoting协议。Proxy中支持嵌入Broker。若设置proxyMode=LOCAL,则会在Proxy进程中启动一个Broker实例
5.0.0新增模块Proxy <-> Broker Proxy通过Remoting协议和Broker通信,可以把Proxy当作一个Remoting的Client
5.0.0新增模块新 Client 新客户端,支持生产、消费、管理功能。目前支持Grpc协议
5.0.0新增模块新Client <-> Proxy 新客户端访问Proxy进行收发消息,管理

1、生产者通过Topic路由信息,把消息直接发送给Broker。

2、生产者定期和Broker心跳,上报当前生产者实例信息。

Remoting消费者消费消息Remoting消费者<-> Namesrv

1、消费者从Namesrv获取Topic路由信息, 包含Broker IPRemoting消费者 <-> Broker 。

  • 消费者通过Topic路由信息,从指定Broker中拉取消息消费。
  • 消费者定期和Broker心跳,上报当前消费者实例信息。

5.0.0新增模块

Controller(控制器)和Kafka Controller类似,在RocketMQ中负责Broker Master的选举和通知Broker 。

5.0.0新增模块

Broker <-> Controller

  1. Broker定期把Broker信息上报Controller
  2. Broker同步副本状态
  3. Controller选举新的Broker Master后,通知全部Broker

5.0.0新增模块

Proxy无状态服务,新客户端通过Grpc接口访问Proxy进行收发消息。

社区正在讨论支持Remoting协议。

Proxy中支持嵌入Broker。

若设置proxyMode=LOCAL,则会在Proxy进程中启动一个Broker实例。

5.0.0新增模块

Proxy <-> BrokerProxy

通过Remoting协议和Broker通信,可以把Proxy当作一个Remoting的Client。

5.0.0新增模块

新Client新客户端,支持生产、消费、管理功能。目前支持Grpc协议

5.0.0新增模块

新Client <-> Proxy新客户端访问Proxy进行收发消息,管理。

RocketMQ 5.0 vs 4.9.X 图解架构对比的更多相关文章

  1. VMware vSphere6.0 服务器虚拟化部署安装图解(最全,最详细)-搭建的所有步骤

    VMware vSphere6.0 服务器虚拟化部署安装图解 一 .VMware vSphere部署的前期规划要点 1.vSphere的优点 (略) 2如何利用现在的设备架构虚拟化环境 在虚拟化过程中 ...

  2. RocketMQ 5.0 POP 消费模式探秘

    作者:凯易&耘田 审核校对:白玙 编辑&排版:雯燕 前言:随着 RocketMQ 5.0 preview 的发布,5.0 的重大特性逐步与大家见面.POP Consumer 作为 5. ...

  3. 基于云基础设施快速部署 RocketMQ 5.0 集群

    本文作者:蔡高扬,Apache RocketMQ Committer, 阿里云智能技术专家. 背景 上图左侧为 RocketMQ 4.x版本集群,属于非切换架构.NameServer 作为无状态节点可 ...

  4. Apache RocketMQ 5.0 笔记

    RocketMQ 5.0:云原生"消息.事件.流"实时数据处理平台,覆盖云边端一体化数据处理场景. 核心特性 云原生:生与云,长与云,无限弹性扩缩,K8s友好 高吞吐:万亿级吞吐保 ...

  5. 01.从0实现一个JVM语言之架构总览

    00.一个JVM语言的诞生过程 文章集合以及项目展望 源码github地址 这一篇将是架构总览, 将自顶向下地叙述自制编译器的要素; 文章目录 01.从0实现一个JVM语言之架构总览 架构总览目前完成 ...

  6. solr6.5.0版本(Windows安装图解)

    此教程为solr6.5.0安装,自己制作,希望可以帮到你们.

  7. ActionMQ5.8.0 JMS实例 手把手详细图解

    出自:http://blog.csdn.net/tongjie008/article/details/40687087 ActionMQ 是开源的JMS实现 1.下载ActiveMQ 去官方网站下载: ...

  8. VMware vSphere6.0 服务器虚拟化部署安装图解

    一 VMware vSphere部署的前期规划要点 1 vSphere的优点 (略) 2 如何利用现在的设备架构虚拟化环境 在虚拟化过程中,用户大多会考虑目前现有的服务器.存储.交换机等基础设备是否可 ...

  9. MyEclipse10.0的破解过程详细图解

    1 首先下载破解软件包:http://pan.baidu.com/s/1pLB6xEb 并解压: 2 按照百度经验操作即可http://jingyan.baidu.com/article/cbf0e5 ...

  10. QT5.1.0,QT4.8.0以及VC2010、VC2012的测试对比

    QT5.1.0,QT4.8.0以及VC2010.VC2012的交叉测试对比. 测试1: 用VC2012静态编译了QT5.1.0. 编译速度很慢,生成完成后,用VC2012+QT5.1.0进行程序生成, ...

随机推荐

  1. jquery操作class

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Zabbix技术分享——监控windows进程资源使用情况

    监控系统进程资源的使用情况是IT运维的常规操作.在实际工作中,运维人员有可能遇到可以使用Zabbix Agent监控linux系统进程,却无法监控windows系统进程的情况.这是因为Zabbix A ...

  3. C++编程笔记(STL学习)

     一.顺序容器   1.1.vector   1.2.dequeue   1.3.list  二.关联性容器   2.3.set   2.3.map  三.算法   3.1.遍历算法(for_each ...

  4. Selenium4+Python3系列(十三) - 与docker中的jenkins持续集成

    前言 文章更新到这一篇时,其实我还是很开心的,因为这也正是这系列教程的最后一篇文章,也算是完成了一个阶段性的小目标,也很感谢那些愿意看我文章与我交流学习的同学,感谢有你们的支持和陪伴. Jenkins ...

  5. centos7安装MySql8.0.29教程

    个人名片: 对人间的热爱与歌颂,可抵岁月冗长 Github‍:念舒_C.ying CSDN主页️:念舒_C.ying 个人博客 :念舒_C.ying @ 目录 1 安装之前检测系统是否有自带的MySQ ...

  6. Jmeter 之 jp@gc - Stepping Thread Group

    jp@gc - Stepping Thread Group 自定义线程组,根据业务需要进行设计用户增加间隔时间等 1.  下载jmeter-plugins-manager-1.3.jar插件放入lib ...

  7. Mybatis-plus实现数据库的增删改查操作

    目录 1.MybatisPlus简介 2.MybatisPlus注解介绍 3.常用方法 4.SpringBoot整合MybatisPlus实现增删改查的一个简单Demo 5.参考资料 1.Mybati ...

  8. 第三方模块的下载与使用 requests模块 openpyxl模块

    今日内容 第三方模块下载操作 第三方模块: 别人写的魔魁啊 一般情况下都很强大 python中模块很多 如果想使用第三方模块 第一次必须先下载 后面就可以反复使用 =内置模块 下载第三方模块的方式: ...

  9. 特殊input框需求,粘贴文字或者扫码筛选检查后加密为password格式,否则正常显示/假如用户输入的信息是以mima开头,就切换输入框为密码类型

    1.angular8粘贴文字或者扫码筛选检查后加密为password格式,否则正常显示 <input [type]="myInputType" (keyup.enter)=& ...

  10. 今天遇到的报错Babel noteThe code generator has deoptimised the styling of ...as it exceeds the max of 500KB.

    解决办法如下: { test: /.js$/, exclude: /node_modules/, use: 'babel-loader' } 然并卵,我已经设置了这个东西了,突然发现我的文件并不在no ...