您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[腾讯]:焕新分布式应用体验,腾讯云AMQP消息协议全新升级 - 发现报告

焕新分布式应用体验,腾讯云AMQP消息协议全新升级

2024-09-10腾讯邵***
AI智能总结
查看更多
焕新分布式应用体验,腾讯云AMQP消息协议全新升级

腾讯云AMQP消息协议产品全新升级 岳小均主讲人: AMQP协议简介和演进01 AMQP协议介绍 AMQP(Advanced MessageQueuingProtocol,高级消息队列协议)是一种为面向消息中间件设计的应用层协议,旨在实现分布式应用系统中消息的可靠传递。 交易信息 订单系统 发布消息 AMQP协议以其模型灵活,功能丰富,多语言客户端健全,社区活跃,成为当前分布式应用架构下使用最广泛的消息协议,并有大量消息队列产品兼容支持。 AMQP协议演进历程 2011.11 2008.11 2006.12 现在 2006.06 V0.9.1成熟完善 V0.9快速改进 V1.0国际标准 V0.8协议诞生 广泛使用 成为国际标准IOS/IEC19464,但做了大量不兼容改进升级,所以支持的产品比较有限。 有大量云厂商和独立厂商围绕AMQP协议开发,形成了一个完善生态。 目前最被用户广泛使用的成熟完善的版本,有很多开源或商业化产品支持。 在0.8基础上做了快速改进,根据用户需求,丰富消息特性和改进性能。 JPMorgan在 金 融业务场景中,为了分布式应用之间消息互通,设计的一个开放的消息传输标准。 开源AMQP产品存在的问题02 现有主流开源产品架构问题 现在最被广泛使用的开源产品是RabbitMQ产品,以其简单易用,文档丰富俘获了大量用户,广泛被用在核心业务系统。 堆积流控,易失败 但其架构在集群模式受集群架构和存储模型限制,容易受网络分区造成集群不可用,当消费异常时,消息堆积导致流控影响消息发送,经常给用户造成核心业务中断。 队列绑定,扩展能力弱 腾讯云新AMQP存算分离架构03 AMQP 0.9.1模型定义 核心模型元素 •VirtualHosts•Exchange(Fanout、Direct、Topic...)•Queue•RoutingKey/BindingKey•Connection•Channel•Message•Producer•Consumer 自研的存算分离架构 基于存算分离的架构,方便在云上支持Serverless弹性产品形态。 计算层: 计算层负责连接处理,协议解析,安全认证,限流熔断,业务逻辑处理等功能,是一个完全无状态的应用。 存储层: 存储节点由NameSrv和Broker节点组成,通过各种消息存储池化技术,组成一个多用户复用的存储池,提升存储密度,默认强制跨可用区容灾部署。 存储模型映射 我们通过利用RocketMQ的轻量队列模型,一 条 消 息 可 以 建 多 个 索 引,将RocketMQ的一 个 轻 量 消 息 队 列和AMQP协议中的队列映射起来,可以满足一条消息被多个队列索引的场景。 其他AMQP协议中的扩展字段也都可以作为header存储在RocketMQ消息中,实现协议兼容。 这样RocketMQ可以作为AMQP协议理想的存储层,并非常方便扩展高阶特性,比如消息轨迹。 发送消息流程 计算节点收到AMQP SDK发送的消息后,会按照AMQP协议标准进行解码,然后根据订阅关系,计算目标队列列表,然后按照上一页介绍的模型映射关系,将AMQP消息转为RocketMQ的消息格式,写到存储的Broker中,并在存储层建立合适的索引,用来查询或消费消息。 消费消息流程 因为AMQP协议是面向长连接的,并且支持拉模式和推模式消费,计算节点中通过连接的订阅关系信息,从Broker拉取消息,推送消息给AMQP客户端。 计算节点中维护一个轻量的SDK,通过POP请求和Broker交互获取消息,队列的消费位点信息维护在Broker中,这样计算层完全无状态,并且可以无限横向扩展。 高可用可扩展容灾部署架构 计算节点: 用 户 购 买 的 每 个 集 群 实 例 都 对 应 一 个AMQPProxy集群,每个集群都是多节点,可以快速的弹性扩缩容,并且强制跨可用区容灾部署。 存储节点: 存储节点由NameSrv和Broker节点组成,通过各项消息存储池化技术,组成一个多用户复用的存储池,提升存储密度,默认强制跨可用区容灾部署,并且铂金版存储集群也独占提供更高的隔离保障。 管控节点: 管控节点不承担数据流,每个地域部署一套管控服务,也强制跨可用区容灾部署。 新架构带来的新体验04 基于新架构的Serverless产品体验 客户案例–Celery支撑优化 Celery是一个基于Python的分布式任务队列系统,它主要用于处理大量消息的异步任务队列,后端经常选用RabbitMQ作为任务调度和存储。 Celery重度依赖RabbitMQ并且使用广播消息,自动删除队列,TTL,定时消息等高阶特性,之前经常会遇到性能瓶颈和内存溢出等问题,通过升级RabbitMQ后,稳定性明显提升,并且机器成本下降50%。 更多规格,更优价格 新的产品形态也重新设计了价格体系,除了更丰富的特性和规格选择,综合对比之前的形态大约有30~50%的下降。 目前已经处于邀测阶段,预计下半年会正式商业化。