腾讯云CMQ:高可靠分布式消息队列技术解析

0 下载量 17 浏览量 更新于2024-08-29 收藏 401KB PDF 举报
"本文主要介绍了腾讯云分布式高可靠消息队列CMQ的架构,强调了其在金融、交易和订单等关键业务场景中的应用。CMQ具有高可靠、强一致和可扩展的特点,并通过实例展示了如何在腾讯充值系统中实现异步解耦和流量削峰。文中还详细阐述了CMQ的内部结构,包括brokerset的设计以及在可靠性、一致性和可用性上的保障措施。" 腾讯云分布式高可靠消息队列CMQ是一款自研的高性能消息中间件,它在腾讯内部广泛应用于微信红包、话费充值和广告订单等服务,现在已开放给外部用户。CMQ特别适合对可靠性与可用性有严格要求的业务,例如金融交易和订单处理。通过异步消息传递,CMQ能够降低模块间的耦合度,同时缓冲大规模突发请求对后端系统的影响。 CMQ的架构包含多个组成部分,如brokerset,通常由3个节点构成,通过多副本策略保证消息的可靠性,并通过增加节点数量提升系统的可用性。在消息的生命周期中,CMQ注重三个层面的可靠性:生产、存储和消费。 生产可靠是指消息在超过半数的broker刷盘成功后才会向客户端返回确认,若客户端在一定时间内未收到确认,则会重试。然而,由于网络异常可能导致确认消息丢失,从而产生重复消息,此时幂等性需要由业务逻辑来保证。 存储可靠则依赖于raft一致性算法,所有消息由SET中的leader节点处理,消息先写入raftlog并同步到其他follower节点,只有在超过半数的节点成功同步并刷盘后,消息才被认为被可靠存储。 消费可靠确保消息被正确消费。CMQ支持消息的顺序消费,同时提供消息回溯和补偿机制,以应对消费者可能出现的故障或错误处理。此外,CMQ还具备强大的堆积能力,能有效缓解后端消费模块的压力。 系统可用性方面,CMQ通过多节点和多副本策略实现高可用,即使单个节点故障,其他节点仍能继续提供服务。而可扩展性体现在可以通过增加set内的节点数量,线性提升系统的处理能力和存储容量。 消息全路径追踪功能使得CMQ能够监控和跟踪消息从生产到消费的全过程,这对于问题排查和性能优化至关重要。腾讯云的CMQ提供了全面的解决方案,满足了分布式系统中对于消息传递的高效、稳定和安全的需求。