RocketMQ 5.0 vs 4.9.X 图解架构

简介: 2图胜万言

一、RocketMQ 4.9.X架构

image.png在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心跳,上报当前消费者实例信息


二、RocketMQ 5.0.0 架构


image.png

在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
  1. 生产者通过Topic路由信息,把消息直接发送给Broker
  2. 生产者定期和Broker心跳,上报当前生产者实例信息
Remoting消费者 消费消息
Remoting消费者<-> Namesrv

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

Broker IP

Remoting消费者 <-> 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 <-> Broker

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

5.0.0新增模块

新Client

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

5.0.0新增模块

新Client <-> Proxy

新客户端访问Proxy进行收发消息,管理


相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
2月前
|
消息中间件 存储 JSON
RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读
RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读
30 0
|
3月前
|
消息中间件 存储 容灾
9个问答牢记RocketMQ架构
RocketMQ是Java兄弟们常用的消息中间件,虽说常用,但对于RocketMQ架构经常忘记。究其原因就2点:忙于业务开发然后长时间不看则忘了、不理解架构设计的根本原因记不牢。本文用大白话描述架构设计过程,牢记RocketMQ架构。
9个问答牢记RocketMQ架构
|
6月前
|
消息中间件 程序员 Apache
阿里RocketMQ创始人首次分享出这份RocketMQ技术内幕神级架构手册
RocketMQ的发展史? RocketMQ的开源正是源于对这种开源文化的认同,开放是为了更好的协同创新,并将这一技术推向新的高度。在经历了阿里巴巴集团内部多年“双11”交易核心链路工业级场景在验证,2016年11月,团队将RocketMQ捐献给全球享有盛誉的Apache软件基金会正式质为孵化项目。 至此,RocketMQ开启了迈向全球顶级开源软件的新征程。
|
7月前
|
消息中间件 存储 负载均衡
RocketMQ 5.0 架构解析:如何基于云原生架构支撑多元化场景
RocketMQ 5.0 架构解析:如何基于云原生架构支撑多元化场景
EMQ
|
8月前
|
安全 物联网 Serverless
MQTT 服务新趋势:了解 MQTT 多租户架构
MQTT 的多租户架构为物联网服务提供商提供灵活可扩展的新选择,本文将介绍其优势和挑战。
EMQ
165 0
|
9月前
|
消息中间件 存储 缓存
万字长文讲透 RocketMQ 4.9.X 消费逻辑
RocketMQ 是笔者非常喜欢的消息队列,4.9.X 版本是目前使用最广泛的版本,但它的消费逻辑相对较重,很多同学学习起来没有头绪。 这篇文章,笔者梳理了 RocketMQ 的消费逻辑,希望对大家有所启发。
万字长文讲透 RocketMQ 4.9.X 消费逻辑
|
10月前
|
消息中间件 Cloud Native RocketMQ
带你读《企业级云原生白皮书项目实战》——6.3.1 行业背景
带你读《企业级云原生白皮书项目实战》——6.3.1 行业背景
|
10月前
|
消息中间件 Cloud Native 大数据
带你读《企业级云原生白皮书项目实战》——6.3.2 RocketMQ 在陪伴体系中的应用
带你读《企业级云原生白皮书项目实战》——6.3.2 RocketMQ 在陪伴体系中的应用
114 0
|
5天前
|
消息中间件 设计模式 数据库
深入探讨后端微服务架构中的分布式事务处理
【2月更文挑战第6天】在当今互联网应用开发领域,后端微服务架构已经成为一种常见的设计模式。本文将深入探讨在后端微服务架构中如何有效处理分布式事务,包括事务管理、一致性保障和异常处理策略,帮助开发者更好地应对复杂的业务场景。
92 4
|
8天前
|
监控 数据可视化 关系型数据库
微服务架构+Java+Spring Cloud +UniApp +MySql智慧工地系统源码
项目管理:项目名称、施工单位名称、项目地址、项目地址、总造价、总面积、施工准可证、开工日期、计划竣工日期、项目状态等。
147 6