稀土掘金技术社区 2024年12月26日
分享几个RocketMQ5.0新特性!
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了RocketMQ 5.0版本在架构上的重大升级。为了更好地适应云原生环境,RocketMQ 5.0引入了弹性无状态的代理模式,将客户端协议适配、权限管理等计算逻辑从Broker中抽离至Proxy层,使Broker专注于数据存储。同时,新增GRPC协议支持,提升了通信效率。在消费模式上,将负载均衡、消费位点管理等功能移至Broker端,客户端变得更加轻量级。此外,5.0版本还引入了Controller模式,实现了在主从部署模式下的自动Master切换,提升了系统的高可用性。这些改进旨在提高资源利用率和弹性能力,使RocketMQ更加适应云原生环境。

🚀RocketMQ 5.0引入Proxy代理层,将客户端协议适配、权限管理等计算逻辑从Broker中剥离,使Broker专注于数据存储,更好地适应云原生环境。

🔄RocketMQ 5.0支持GRPC协议,这是一种高性能的RPC框架,基于Protobuf序列化,能够提高网络通信效率。

⚖️RocketMQ 5.0将负载均衡、消费位点管理等功能移至Broker端,减轻客户端负担,并支持消息粒度的负载均衡,使得同一消费组内的多个消费者可以更均匀地分摊消息。

💡RocketMQ 5.0引入Controller模式,实现了在主从部署模式下的自动Master切换,提高了系统的高可用性和稳定性。

程序员飞鱼 2024-12-25 18:02 重庆

点击关注公众号,“技术干货” 及时达!

点击关注公众号,“技术干货” 及时达!


文章内容收录到个人网站,方便阅读:http://hardyfish.top/

资料分享

RocketMQ技术内幕:

深入理解Kafka:核心设计与实践原理

为了向云原生演进,提高资源利用和弹性能力,RocketMQ5.0进行了架构的调整与升级。

Proxy代理层

RocketMQ5.0以前架构:

RocketMQ5.0以前使用自定义的Remoting协议底层基于Netty进行网络通信,计算存储是一体的,都在Broker中。

生产者和消费者从NameServer中拉取到路由信息,之后直接与Broker交互进行消息的生产与消费。

图片

RocketMQ5.0架构:

5.0以后引入了弹性无状态的代理模式,对Broker的职责进行了拆分。

将客户端协议适配、权限管理、消费管理等计算逻辑进行了抽离,放入Proxy层,Broker专注数据的存储。

    以便更好的适应云原生环境,实现资源弹性调度。

并且5.0以后增加了GRPC协议的支持。

    它是Google开源的高性能RPC框架,基于Protobuf序列化。

图片

POP消费模式

RocketMQ5.0之前

消费有两种方式可以从Broker获取消息,分别为Pull模式和Push模式。

Pull模式

消费需要不断的从阻塞队列中获取数据,如果没有数据就等待,这个阻塞队列中的数据由消息拉取线程从Broker拉取消息之后加入的。

所以Pull模式下消费需要不断主动从Broker拉取消息。

Push模式

需要注册消息监听器,当有消息到达时会通过回调函数进行消息消费,从表面上看就像是Broker主动推送给消费者一样,所以叫做推模式

底层依旧是消费者从Broker拉取数据然后触发回调函数进行消息消费,只不过不需要像Pull模式一样不断判断是否有消息到来。

RocketMQ5.0

将负载均衡、消费位点管理等功能放到了Broker端,减少客户端的负担,使其变得轻量级,并且5.0之后支持消息粒度的负载均衡。

消息粒度负载均衡:

消息粒度负载均衡策略中,同一消费组内的多个消费者将按照消息粒度平均分摊主题中的所有消息。

    即同一个队列中的消息,可被平均分配给组内多个消费者共同消费。

POP消息消费:

首先客户端(消费者)向服务端(Broker)发送Pop请求,Broker端收到请求后以Pop模式获取消息,之后返回给客户端。

客户端消费消息成功之后,向Broker发送ACK请求确认消息消费成功。



Controller模式

RocketMQ5.0以前,有两种集群部署模式,分别为主从模式(Master-Slave模式)和Dledger模式。

RocketMQ5.0以后推出了Controller模式,它的特点如下:

在主从部署模式下就具有自动切换Master的能力,5.0之前需要使用DLedger才可以。

可以利用RocketMQ原生存储复制能力,并统一RocketMQ的存储和复制能力。

RocketMQ5.0Broker选主相关的功能进行了抽离,放在Controller中。

实现了在主从部署模式下就可以自动切换Master,Controller可以独立部署也可以嵌入在NameServer中部署。

独立部署下的Controller


嵌入NameServer中的部署图如下:


参考:

https://rocketmq.apache.org/version/

https://developer.aliyun.com/article/801815

https://rocketmq.apache.org/zh/docs/deploymentOperations/03autofailover/


点击关注公众号,“技术干货” 及时达!


阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

RocketMQ 5.0 云原生 消息队列 架构升级 Controller模式
相关文章