RocketMQ从2022年9月份开始推出了新的5.x大版本。相比于之前的4.x版本,5.x版本向云原生前进了一大步。在增强原因功能的基础上,更是支持多语言客户端,周边生态也进行了补强和完善,明显可以看到离Kafka老大哥又近了很大一步。
一、整体部署组件优化
在服务部署方面,5.x新版本进一步靠近云原生。将各种复杂功能进一步化整为零,通过更灵活的服务组合,提升整体性能。

1、在Broker与客户端之间增加Proxy组件
Proxy组件主要是为了兼容多语言客户端(c/c++, golang, csharp,rust,python, nodejs)。如果还是使用的Java客户端,则不需要启动Proxy。
Proxy组件部署分为两种模式,Local模式以及Cluster模式。其中,Local模式就是随Broker一起部署。 部署方式是在执行bin/mqbroker脚本启动Broker时,增加–enable-proxy参数。Cluster模式则是与Broker分开部署。部署方式是在启动Broker时不要添加–enable-proxy参数,而通过执行bin/mqproxy脚本单独启动Proxy服务。通过-n参数执行NameServer即可。如果需要定制配置项,可以通过添加-pc或者–proxyConfigPath参数指定一个单独的JSON配置文件。目前5.1.0版本中,这个配置文件还没有什么配置项,只有一个rocketMQClusterName属性指定对应的Broker集群的名字。
2、在Broker与NameServer之间增加Controller组件
在之前的4.x版本中,如果需要搭建具备自动主从切换的高可用集群,是需要搭建Dledger集群的,对应发布版本的conf/dledger下的配置文件。这种模式在5.x版本中依然可以使用,不过,5.x版本增加了一种更轻量级进行主从切换的方式,那就是Controller组件。
4.x版本中Dledger集群对RocketMQ的影响包含两个方面,一方面是通过集群选主,支持主从切换,另一方面就是接管RocketMQ的CommitLog日志文件读写。而Controller的作用就是将集群选主功能单独提取出来,提供主从切换的高可用功能。使用Controller组件后,RocketMQ就可以使用自己原有的日志读写机制搭建高可用集群,这样可以更好的用上RocketMQ原生的文件读写功能。未来应该会是RocketM

RocketMQ5.x引入了新特性,包括Proxy组件以支持多语言客户端,Controller组件提供轻量级主从切换,增强了部署灵活性。此外,Broker与NameServer间的Controller组件简化了高可用集群的搭建,而BrokerContainer允许在同一节点运行多个Broker,提高资源利用率。Docker和Kubernetes的集成使得部署更加便捷。

2421

被折叠的 条评论
为什么被折叠?



