从源码上看,RocketMQ 5.0 跟 RocketMQ 4.x相比增加了哪几个模块
创始人
2024-01-28 18:36:44
0

今天来介绍一下 RocketMQ 5.0 源码上的变化。

RocketMQ 5.0 是一个里程碑式的版本,经历了近 5 年的打磨,代码变更达到 60%。

首先看一下源码中模块的变化,如下图:

从图中可以看到,RocketMQ 5.0 主要增加了 4 个模块儿,下面介绍一下这 4 个模块儿。

1 bazel

bazel 是 Google 开源的构建工具,目前广泛用于云计算领域的开源软件(如 Kubernetes)构建,它有如下特点:1.支持增量式编译、支持缓存、支持分布式扩展;2.bazel 可以清晰地以依赖关系图的方式展现出当前的依赖关系,比 makefile 更加方便;3.bazel支持多语言构建。

RocketMQ 5.0 引入了 bazel 构建。

2 container

在 RocketMQ 4.x 时代,如果采用 Master-Slave 架构,Broke 节点一旦挂了,是不能自动切换的。RocketMQ 5.0 对这个架构进行了改进,引入了 BrokerContainer 的概念,一个 BrokerContainer 中可以部署多个 Broker,这些 Broker 拥有独立的端口,功能完全独立,并且可以共享同一个节点的资源。如下图:

有创造性的是,在一个 BrokerContainer 中可以交叉部署 Master 和 Slave 节点,如下图两节点对等部署:

这样做有即使 Node1 节点挂了,Node2 节点中的 Broker1 可以提供读功能,并不会丢消息,而 Broker2 则可以继续提供读写功能。

3 controller

RocketMQ 5.0 引入了 DLedger Controller 架构,解决传统 DLedger 架构的不足。

3.1 传统 DLedger

在 RocketMQ 4.x 中,如果采用 DLedger 架构部署,Broker 挂掉后,是可以自动实现主从切换的。但这样需要用 Raft Commitlog 来取代 RocketMQ 自身的 Commitlog,因为只有这样 Commitlog 才会具有选举的能力。Broker 主节点挂掉后,从节点依照 DLedger 协议进行内部协商,选举出新的主节点,自动完成主备切换。

不过这样存在几个问题:

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

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

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

3.1 DLedgerController

通过引入 DLedger Controller 架构,RocketMQ 将 DLedger 选主切换的能力独立成一个可以拔插的组件,这样 Master-Slave 架构也可以具有 Failover 的能力。

DLedger Controller 可以独立部署,也可以部署在 NameServer 中,共享 NameServer 资源。

部署在 NameServer:

独立部署:

4 Proxy

RocketMQ 5.0 为了更好地拥抱云原生,实现了计算和存储相分离。把计算相关的功能抽象到了 Proxy,协议适配、权限管理、消息管理等。Broker 则专注于存储,架构如下图:

这样 RocketMQ 可以更好地上云,更好地进行资源调度。

5 总结

本文从源码角度讲述了 RocketMQ 5.0 主要的变化。

为了更好地拥抱云原生, RocketMQ 5.0 架构上发生了比较大的变化,实现计算存储相分离,并且引入 bazel 进行构建。

在高可用方面,RocketMQ 5.0  对传统的基于 DLedger 的高可用进行了改造,同时引入了 BrokerContainer 对等部署方案。

希望本文对你理解新版本的 RocketMQ 有所帮助。

相关内容

热门资讯

抗战英雄浩气长存|刘老庄八十二...   1943年3月,侵华日军对江苏北部淮海抗日根据地进行大规模“扫荡”,17日,日伪军1600余人分...
中国战略性新兴产业发展势头强劲... 国际在线报道(记者王洹星):27日,由中国国家发展和改革委员会等相关部门联合主办的第二届战略性新兴产...
创业板改革激发深圳创新活力 创... 确定不再关注此人吗确定取消原标题:创业板改革激发深圳创新活力■深圳特区报记者熊子恒日前,中央全面深化...
创业板就要实施注册制了 创业板... 新闻晨报讯(首席记者连建明)创业板就需要实施注册制了。2020年4月27日,中央政府全方位推进改革联...
发改委:长三角一体化创新创业合... 发改委:长三角一体化创新创业合作推进会在杭州召开发改委网站长三角一体化创新创业合作推进会在杭州召开国...
中山澳门共建粤澳青年创新创业基... 3月29日,《关于建设粤澳青年创新创业基地(中山)的合作框架协议》在澳门签署,标志着中山与澳门合作示...
5g为产业发展注入5g会带来哪... 5G本身就是一个巨大的新兴产业。同时,在5G这一新型基础设施之上,云计算、大数据、物联网、人工智能等...
5g新科技赋能中国新兴媒体产业... 确定不再关注此人吗确定取消原标题:5G新科技赋能中国新兴媒体产业融合发展第七届中国新兴媒体产业融合发...
豫确定十个重点培育新兴产业 看... (香港文汇网记者冯雷河南报道)1月15日下午,记者从河南省政府新闻办召开的新闻发布会获悉,现代生物和...
安徽舒城县青年创业者协会成立 ... 12月5日,安徽省舒城县青年创业者协会成立大会在舒怡大酒店召开。来自全县商协会代表、各乡镇的优秀创业...