RocketMQ 5.0 大手笔,拥抱云原生,支持流处理,高可用架构升级!

简介: RocketMQ 5.0 大手笔,拥抱云原生,支持流处理,高可用架构升级!

大家好,我是君哥。

RocketMQ 5.0 已经发布一段时间了,今天来分享一下 RocketMQ 5.0 有哪些新特性。

1 架构变化

RocketMQ 5.0 架构上的变化主要是为了更好的走向云原生。

RocketMQ 4.x 架构如下:

微信图片_20221213122024.png

Broker 向 Name Server 注册 Topic 路由信息,Producer 和 Consumer 则从 Name Server 获取路由信息,然后 Producer 根据路由信息向 Broker 发送消息,Consumer 则根据路由信息从 Broker 拉取消息。


这个架构存在以下几个问题:

1.富客户端,客户端同时支持 Java、C++、Go 等各种语言,如果为了跟应用程序隔离,把客户端部署到 sidecar 中,这个 sidecar 会很大,部署难度高;

2.Broker 同时承担计算和存储的功能,不利于云原生环境下的资源解耦。


RocketMQ 5.0 架构如下图:

微信图片_20221213122050.png

RocketMQ 5.0 在架构上主要做了两个优化:1.通过引入无状态的代理模块,将 Broker 原来的协议适配、权限管理、消息管理等计算功能抽离到了代理模块中,Broker 则专注于存储功能。这样在云环境下可以更好地进行资源调度;

2.RocketMQ 5.0 基于 gRPC 支持多语言 SDK,各语言 SDK API 在本地语言层面对齐,API 非常轻量级,更容易被使用和集成。

2 集成事件、流处理

RocketMQ 5.0 采用事件驱动架构来支持消息流式处理和轻计算,可以实现消息的就近计算和分析。


RocketMQ 5.0 增加了 RocketMQ-EventBridge 组件,这个组件兼容标准 CloudEvents 协议标准,既可以链接社区活跃的生态,又可以跟各大云厂商的产品进行集成,对云原生的支持非常友好。下面这张图来自官网:

微信图片_20221213122113.jpg

2.1 流式处理

为了更好地支持流失处理,RocketMQ 5.0 在原有 MessageQueue 的基础上抽象出了逻辑队列。一个逻辑队列可以包含多个物理队列,以此拼接出流式队列。如下图:

微信图片_20221213122150.png

这样可以更加轻量级,做到秒级的扩缩容,即使物理节点发生变化也不需要复制迁移数据,数据存储的调度也更加灵活。

2.2 计算框架

在计算框架方面,RocketMQ 5.0 主要有两个变化:

1.引入流式处理框架 RSteams,这样 RocketMQ 自身就可以完成轻量级的理和计算;

2.引入轻量级 SQL 查询引擎 RSQLDB,RSQLDB 可以兼容了 Flink/Blink SQL 标准,实现了 RocketMQ 和 Flink/Blink 的融合。比如对于轻量级的计算,可以使用 SQL 在 RocketMQ 完成,而对于重量级的计算,RocketMQ 资源受限时,可以从 RocketMQ 迁移到 Flink 处理。

3 高可用

在 RocketMQ 5.0 之前,高可用架构有两个阶段:

1.RocketMQ 4.5 之前采用 Master-Slave 部署,这种架构 Master 发生故障后是不能自动切换的,对集群的影响会比较大;

2.RocketMQ 4.5 之后采用基于 raft 协议的 DLedger 算法来进行主从切换,架构如下图:

微信图片_20221213122215.png

3.1 Master-Slave 架构优化

RocketMQ 5.0 对 Master-Slave 架构和基于 Raft 的架构都做了优化。


对于 Master-Slave 架构的升级,RocketMQ 5.0 引入了 BrokerContainer 的概念,一个 BrokerContainer 中可以部署多个 Broker,这些 Broker 拥有独立的端口,功能完全独立,可以通过 admin 来增加或减少 Broker。如下图:

微信图片_20221213122236.png

这样一个 BrokerContainer 中的多个 Broker 可以共享同一个节点的资源,提高资源利用率。

同时,在一个 BrokerContainer 中可以同时部署 Broker 的 Master 和 Slave 节点,这样就可以通过 Master/Slave 交叉部署来实现节点对等,如下图两节点对等部署:

微信图片_20221213122256.png

即使 Node1 挂了,Node2 节点中的 Broker1 可以提供读功能,并不会丢消息,Broker2 可以提供读写功能。

再看下面三个节点的对等部署架构图:

微信图片_20221213122329.png

每个 Node 的 BrokerContainer 中都有 1 个 Master 跟 2 个 Slave 节点,如果其中一个 Node 挂了,其他两个 Node 上的 Broker 可以继续提供读写服务。

3.2 Raft 架构优化

基于 Raft 架构虽然可以实现主节点故障后自动切换,但也存在几个问题:

1.消息日志副本数必须是 3 个以上,这个是 Raft 协议自动选主的要求,造成资源浪费;

2.Raft 选主过程中必须有多数节点同意才能选主成功,副本数越多时间开销会越大,这会加大 ACK 延时;

3.CommitLog 主从同步需要使用 DLedger 库,也就是说 CommitLog 被看作是 Raft log 进行复制,这样 RocketMQ 原生的零拷贝、堆外内存的优势无法保留了。


RocketMQ 5.0 专门增加了轻量级的 DLedgerControlller 选主组件,将选主的切换能力上移,这个组件是可拔插的,既可以部署在 NameServer 中,也可以部署在本地。如下图:

微信图片_20221213122351.png

引入了 DLedgerControlller 组件后,消息主备复制还是采用 RocketMQ 原生的基于 Master-Slave 架构的复制能力,复制效率高。

4 总结

本文概括性地介绍了 RocketMQ 5.0 比较有亮点的新特性,希望能够让你对新版本有一定了解,深入的介绍见后面的文章。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
30天前
|
消息中间件 存储 Java
RocketMQ(一):消息中间件缘起,一览整体架构及核心组件
【10月更文挑战第15天】本文介绍了消息中间件的基本概念和特点,重点解析了RocketMQ的整体架构和核心组件。消息中间件如RocketMQ、RabbitMQ、Kafka等,具备异步通信、持久化、削峰填谷、系统解耦等特点,适用于分布式系统。RocketMQ的架构包括NameServer、Broker、Producer、Consumer等组件,通过这些组件实现消息的生产、存储和消费。文章还提供了Spring Boot快速上手RocketMQ的示例代码,帮助读者快速入门。
|
2月前
|
人工智能 安全 Cloud Native
阿里云云原生安全能力全线升级,护航百万客户云上安全
【重磅发布】9月20日,在杭州云栖大会上,阿里云宣布云原生安全能力全线升级,首次发布云原生网络检测与响应产品NDR(Network Detection Response,简称NDR)。同时,阿里云还宣布将持续增加免费的安全防护能力,帮助中小企业客户以极低投入完成基础的云上安全风险治理。
173 15
|
2月前
|
存储 SQL 缓存
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
快手 OLAP 系统为内外多个场景提供数据服务,每天承载近 10 亿的查询请求。原有湖仓分离架构,由离线数据湖和实时数仓组成,面临存储冗余、资源抢占、治理复杂、查询调优难等问题。通过引入 Apache Doris 湖仓一体能力,替换了 Clickhouse ,升级为湖仓一体架构,并结合 Doris 的物化视图改写能力和自动物化服务,实现高性能的数据查询以及灵活的数据治理。
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
|
1月前
|
分布式计算 大数据 Serverless
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
在2024云栖大会开源大数据专场上,阿里云宣布推出实时计算Flink产品的新一代向量化流计算引擎Flash,该引擎100%兼容Apache Flink标准,性能提升5-10倍,助力企业降本增效。此外,EMR Serverless Spark产品启动商业化,提供全托管Serverless服务,性能提升300%,并支持弹性伸缩与按量付费。七猫免费小说也分享了其在云上数据仓库治理的成功实践。其次 Flink Forward Asia 2024 将于11月在上海举行,欢迎报名参加。
190 1
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
|
1月前
|
存储 消息中间件 人工智能
ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用
本文整理自2024年云栖大会阿里云智能集团高级技术专家金吉祥的演讲《ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用》。
|
1月前
|
存储 消息中间件 运维
架构升级的救星!流量回放自动化测试的必备指南
大家好,我是小米,一名29岁的技术宅。今天分享一个物联网领域的实用技能——流量回放自动化测试。系统重构后,测试工作量巨大,本文介绍如何通过日志收集和数据回放进行自动化测试,包括离线、实时和并行回放模式,帮助快速定位Bug,提升测试效率和系统稳定性。欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
45 3
|
1月前
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
|
2月前
|
缓存 物联网 数据库
如何帮助我们改造升级原有架构——基于TDengine 平台
一、简介 TDengine 核心是一款高性能、集群开源、云原生的时序数据库(Time Series Database,TSDB),专为物联网IoT平台、工业互联网、电力、IT 运维等场景设计并优化,具有极强的弹性伸缩能力。同时它还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少系统设计的复杂度,降低研发和运营成本,是一个高性能、分布式的物联网IoT、工业大数据平台。 二、TDengine 功能与组件 TDengine 社区版是一开源版本,采用的是 AGPL 许可证,它具备高效处理时序数据所需要的所有功能,包括: SQL 写入、无模式写入和通过第三方工具写入 S标准 SQL 查
79 13
|
2月前
|
消息中间件 弹性计算 运维
云消息队列RabbitMQ 版架构优化评测
云消息队列RabbitMQ 版架构优化评测
65 6
|
3月前
|
安全 网络安全 网络虚拟化
优化大型企业网络架构:从核心到边缘的全面升级
大型企业在业务运作中涉及多种数据传输,涵盖办公应用、CRM/ERP系统、数据中心、云环境、物联网及安全合规等多个方面。其复杂的业务生态和全球布局要求网络架构具备高效、安全和可靠的特性。网络设计需全面考虑核心层、汇聚层和接入层的功能与冗余,同时实现内外部的有效连接,包括广域网连接、远程访问策略、云计算集成及多层次安全防护,以构建高效且可扩展的网络生态系统。
优化大型企业网络架构:从核心到边缘的全面升级
下一篇
无影云桌面