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

简介: 图解+详细说明,秒懂!

本文作者:李伟,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进行收发消息,管理。

相关实践学习
5分钟轻松打造应对流量洪峰的稳定商城交易系统
本实验通过SAE极速部署一个微服务电商商城,同时结合RocketMQ异步解耦、削峰填谷的能力,带大家体验面对流量洪峰仍旧稳定可靠的商城交易系统!
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
消息中间件 大数据 关系型数据库
RocketMQ实战—3.基于RocketMQ升级订单系统架构
本文主要介绍了基于MQ实现订单系统核心流程的异步化改造、基于MQ实现订单系统和第三方系统的解耦、基于MQ实现将订单数据同步给大数据团队、秒杀系统的技术难点以及秒杀商详页的架构设计和基于MQ实现秒杀系统的异步化架构。
328 64
RocketMQ实战—3.基于RocketMQ升级订单系统架构
|
3月前
|
人工智能 自然语言处理 数据可视化
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
|
1月前
|
消息中间件 存储 Kafka
一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
本文详细介绍了分布式消息中间件RocketMQ的核心概念、部署方式及使用方法。RocketMQ由阿里研发并开源,具有高性能、高可靠性和分布式特性,广泛应用于金融、互联网等领域。文章从环境搭建到消息类型的实战(普通消息、延迟消息、顺序消息和事务消息)进行了全面解析,并对比了三种消费者类型(PushConsumer、SimpleConsumer和PullConsumer)的特点与适用场景。最后总结了使用RocketMQ时的关键注意事项,如Topic和Tag的设计、监控告警的重要性以及性能与可靠性的平衡。通过学习本文,读者可掌握RocketMQ的使用精髓并灵活应用于实际项目中。
476 7
 一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
|
3月前
|
消息中间件 存储 设计模式
RocketMQ原理—5.高可用+高并发+高性能架构
本文主要从高可用架构、高并发架构、高性能架构三个方面来介绍RocketMQ的原理。
431 21
RocketMQ原理—5.高可用+高并发+高性能架构
|
4月前
|
消息中间件 人工智能 自然语言处理
基于 RocketMQ 事件驱动架构的 AI 应用实践
基于 RocketMQ 事件驱动架构的 AI 应用实践
126 2
|
4月前
|
存储 消息中间件 人工智能
基于 Apache RocketMQ 的 ApsaraMQ Serverless 架构升级
基于 Apache RocketMQ 的 ApsaraMQ Serverless 架构升级
|
7月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
8月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
182 3
|
3月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
222 12
|
8月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####

热门文章

最新文章