本文作者:古崟佑,阿里云中间件开发。

RocketMQ 5.0 版本拥有非常多新特性,比如存储计算分离、 batch 能力的提升等,它是具有里程碑意义的版本。
提到新版本,我们往往会首先想到服务端架构的设计变动,很容易忽略客户端的设计理念。客户端也是消息产品的必要组成部分,许多特性需要 client 与 server 两端互相协作,才能更好地实现。
轻量化、云原生以及统一模型是 RocketMQ 5.0 客户端的三个设计理念。
01 轻量化

轻量化的重点在于轻逻辑、轻流程,化繁为简,减少多语言生态发展的阻碍。
上图列举了 RocketMQ 4.x 版本和 RocketMQ 5.0 版本的差异。
①4.x 版本的序列化使用 JsonCodecs 和 RocketMQCodecs,5.0 版本使用的则是标准的 Protobuf 协议。多语言发展的阻碍包括许多不规范,比如 RocketMQ 自定义序列化对于其他的语言需要自己实现一套协议以实现正反序列化解析。而 Json 作为标准序列化协议,基本可以实现所有语言的正反序列化,但缺点也非常明显,冗余信息过多,体积占用太大,因此更多用于 restful 架构等前后端交互的场景。此外,消息中间件场景无需关心传输数据时是否可读。因此, Protobuf 成为了选择,它原生支持多语言,且传输时体积占用非常小,成熟且标准。
②此前客户端使用 consumer 消费信息时,会存在计算逻辑比如重平衡 以及系统级 topic 处理。但是 RocketMQ 5.0 版本将所有计算逻

RocketMQ 5.0 强调轻量化设计,采用Protobuf协议减少多语言生态障碍,移除客户端计算逻辑以减轻负担。云原生特性体现在极致弹性伸缩、低耦合和云端一体,如Pop协议提升消费并发。统一模型明确了消息模型,加强了topic类型校验和消费者类型定义,简化了使用流程。
最低0.47元/天 解锁文章
184

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



