核心观点与关键数据
AMQP协议简介与演进
AMQP(高级消息队列协议)是一种面向消息中间件的应用层协议,旨在实现分布式应用系统中消息的可靠传递。其模型灵活、功能丰富,多语言客户端健全,社区活跃,成为当前分布式应用架构下使用最广泛的消息协议。AMQP协议演进历程如下:
- 2006.06: V0.8协议诞生,JPMorgan设计。
- 2006.12: V0.9快速改进。
- 2008.11: V0.9.1成熟完善,成为广泛使用的版本。
- 2011.11: V1.0成为国际标准(ISO/IEC 19464),但做了大量不兼容改进,支持产品有限。
现有开源产品架构问题
目前最广泛使用的开源产品是RabbitMQ,其架构存在以下问题:
- 堆积流控,易失败:集群模式下易受网络分区影响,消费异常时消息堆积导致流控,影响核心业务。
- 队列绑定,扩展能力弱:难以支持复杂场景和高阶特性。
腾讯云新AMQP存算分离架构
腾讯云新AMQP产品采用存算分离架构,基于RocketMQ实现:
- 计算层:负责连接处理、协议解析、安全认证等,完全无状态,可无限横向扩展。
- 存储层:由NameSrv和Broker节点组成,通过消息存储池化技术提升存储密度,默认强制跨可用区容灾。
- 存储模型映射:利用RocketMQ的轻量队列模型,一条消息可建多个索引,实现协议兼容。
发送与消费消息流程
- 发送消息:计算节点解码AMQP消息,转为RocketMQ格式写入存储,建立索引。
- 消费消息:计算节点通过POP请求从Broker拉取消息,支持拉模式和推模式消费,消费位点信息维护在Broker中。
高可用可扩展容灾部署架构
- 计算节点:多节点集群,快速弹性扩缩容,强制跨可用区容灾。
- 存储节点:NameSrv和Broker节点组成,多用户复用存储池,跨可用区容灾。
- 管控节点:不承担数据流,每个地域部署一套,强制跨可用区容灾。
新架构带来的新体验
- Serverless产品体验:基于新架构的Serverless产品支持更丰富的特性和规格,综合价格下降30-50%。客户案例显示,Celery升级后稳定性提升,机器成本下降50%。
- 更多规格,更优价格:新产品形态提供更丰富的规格选择,价格综合下降30-50%。
- 商业化计划:目前处于邀测阶段,预计下半年正式商业化。