痛点与困局
Aliware
-
富客户端形态,RocketMQ 的富客户端包含大量的企业级特性,富客户端意味着逻辑复杂,容易出 Bug,依赖客户经常性更新到最新 Release 来保持客户端和服务端良好的兼容性。在单个组织内往往没有任何问题,阿里集团内部通过潘多拉等容器也可以自动为用户升级,但云产品的用户多样性强,升级的驱动力也不足,导致线上存在大量的旧版本客户端,带来稳定性风险。 -
计算存储一体化,计算存储一体化的 Broker 具备部署结构简单,开源用户可以做的开箱即用;部署节点少,低成本支持集团双十一万亿级的消息规模;数据就近处理,无中间环节,性能高,延迟低。但在云上复杂网络情况下,会带来较多额外的运维工作,难以满足云用户多样性的网络诉求,比如 SingleTunel、AnyTunnel、PrivateLink、公网等。
存算分离新思路
Aliware
-
RocketMQ 在集团已经充分验证了其架构优秀的特征,是否需要适配云的需求进行存算分离?由此带来的延迟、额外的成本是否能覆盖新架构带来的新价值? -
阿里云上多款消息产品已经是存算分离的架构形态,比如消息队列 RabbitMQ,消息服务 MNS,新的架构怎么与这些产品架构进行融合,又有哪些差一点?
-
「分」有两层解释,首先代表了模块和职责的分明,属于计算的逻辑应该封闭在计算模块,属于存储的逻辑应该下成到存储模块;第二层是计算和存储要支持分开部署,计算完全采用无状态的部署方式,存储是有状态的放式,来很好的解决在云上多租户场景面临的种种问题。 -
「合」的前提是从代码设计上要先分开,至于是分开部署还是合并部署完全是业务的选择,新的架构必须要支持合并的部署形态,满足吞吐型的业务场景,比如阿里集团内部超大规模的消息流场景。又比如小规模单租户场景,不需要服务化的场景,合并部署可以快速将 RocketMQ 投产。
存储计算分离架构
-
多语言瘦客户端,基于 gRPC 协议重新打造的一批多语言客户端,采取 gRPC 的主要考虑其在云原生时代的标准性、兼容性以及多语言传输层代码的生成能力。 -
导航服务(Navigation Server),通过 LB Group 暴露给客户端,客户端通过导航服务获取数据面的接入点信息(Endpoint),随后通过计算集群 Proxy 的 LB Group 进行消息的收发。通过 EDS 来暴露 Proxy 的接入点信息与通过 DNS 解析的负载均衡进行路由相比而言,可以作出更智能与更精细的租户及流量控制、负载均衡决策等。 -
NameServer,RocketMQ 中原有的核心组件,主要提供用于存储的 Broker 集群发现(CDS),存储单元 Topic 的路由发现(RDS)等,为运维控制台组件、用户控制台组件、计算集群 Proxy 提供 xDS 服务。 -
Proxy,重新研发的无状态计算集群,数据流量的入口,提供鉴权与签名、商业化计量、资源管理、客户端连接管理、消费者管控治理、客户端 RPC 处理、消息编解码处理、流量控制、多协议支持等。 -
Broker,原 Broker 模块的存储部分独立为新的存储节点,专注提供极具竞争力的高性能、低延迟的存储服务,存储计算分离后也更易加速存储能力的创新。原 Broker 模块的计算部分逐渐上移到 Proxy 集群当中。 -
LB Group,根据用户的需求提供 Classic VIP,VPC VIP,Internet VIP,Single Tunnel,PrivateLink 等多样化的接入能力。
-
关于延迟,存储和计算节点从本地方法调用转换为远程调用后,无可避免地增加了延迟,一般是毫秒级别,在阿里云上及时是跨 AZ 的网络通信,延迟一般在 2ms 以内,这种量级的延迟增加,对大多数业务来讲是完全可以接受的。 -
关于成本,存算的分开,导致网络传输层面,序列化和反序列化层面不可避免需要更多的 CPU 资源。但另一方面,存储和计算一个属于磁盘 IO、内存密集型,一个是 CPU 密集型,拆开后可以更好的设计规格,更好的利用碎片化资源,更容易提高资源利用率,利用云的弹性能力,成本反而可以降低。
存储计算合并架构
-
在开源场景,开源用户更加期望 RocketMQ 是一款开箱即用,部署简单的消息中间件,存储计算分离架构会带来一定的复杂度,影响开源生态的建设。 -
在集团的场景,数千台物理机的规模,存储计算分离将带来额外的机器成本。 -
在专有云场景,很多专有云可能节点数量有限,更倾向于采用一体化的架构。
单一架构多产品形态
-
存储集群足够抽象,满足通用的消息存取需求。 -
计算集群多合一,足够的模块化,可插拔,满足多产品部署带来不同权限体系、不同协议、不同抽象模型等的需求。
总结
Aliware
本文转载自林清山 阿里巴巴中间件,原文链接:https://mp.weixin.qq.com/s/8UFfUctHcopdaFbxyXvRAQ。