前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RocketMQ 5.0 vs 4.9.X 图解架构对比

RocketMQ 5.0 vs 4.9.X 图解架构对比

作者头像
小伟
发布2022-12-14 14:22:56
5740
发布2022-12-14 14:22:56
举报
文章被收录于专栏:魔都程序缘魔都程序缘

一、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

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

消费者 <-> Broker

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

  1. 生产者通过Topic路由信息,把消息直接发送给Broker
  2. 生产者定期和Broker心跳,上报当前生产者实例信息

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

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

二、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

1. 消费者从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

  1. 消费者通过Topic路由信息,从指定Broker中拉取消息消费
  2. 消费者定期和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进行收发消息,管理

其他5.0文章

How RocketMQ Proxy Startup?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 魔都程序缘 微信公众号,前往查看

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

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

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