icon传统架构遇到挑战icon
系统紧耦合

系统组件之间或者应用之间耦 合较紧,消费者出现任何问题 (升级停服、宕机、不可用等 ),都会影响生产者的业务。 系统可用性和效率较低。

处理性能低

突发的海量消息压力,消费者无法实 时高效的处理消息时,容易产生雪崩 效应。没有消息持久化机制,系统发 生故障会丢失消息。

扩展难度高

消息存在本地内存中,单机的 处理能力和内存容量都是有限 的,不具备可扩展性,同时系 统组件高度耦合,扩展难度大。

icon消息队列应运而生icon
RabbitMQ

Erlang编写, 重量级,路由(Routing),负载均衡(Load balance)或者 数据持久化。

ØMQ(ZeroMQ)

轻量级,非持久性的队列,必须学习它的80页的手册。

Jafka/Kafka

scala语言开发,轻量级、高吞吐,快速持久化,客户端需要自己测试和开发。

Apache ActiveMQ

开源项目,Java优先,支持master-slave,broker-cluster集群。

Rocket MQ

模型简单,接口易用。性能好,阿里商业化版本,没有在MQ核心实现JMS,接口只支持Java。

icon有没有这样的消息队列,同时满足icon
轻量部署
不需要读80页的手册。轻松上手,部署简单,更少节点支撑。
消息堆积无上限
消息处理缓慢或消费方出现问题时,堆积消息无上限。
宕机不丢消息
机房停电、服务器重启等极端环境中消息不丢失。
支持多语言SDK
多种语言支持,不再限定语言开发者技能要求。便于团队管理。
icon消息队列CMQ—来了!icon
金融级可靠
同步刷盘机制,保证了数据的可靠生产。客户端生产的消息在set中超过半数的broker刷盘成功后会返回 确认消息告知生产消息成功。
强一致
三副本raft算法强一致性,实时刷盘。无脏数据。依赖 Leader 节点的可 用性来确保集群数据的一致性。数据 的流向只能从 Leader 节点向 Follower 节点转移。
 
 
堆积无上限
需要海量堆积的服务来说可以通过 路由调度来提升堆积上限,理论上 可以达到无限堆积。
 
高性能
保证高可靠前提下,同等物理设备,CMQ吞吐量优于 RabbitMQ的四倍以上。单集群QPS超过10万
iconCMQ - 核心价值icon
系统解耦

耦合系统中,消费者出现任何问题( 升级停服、宕机、不可用等),都会 影响生产者的业务。使用CMQ提供的松耦合服务,生产 者无需了解消费者,消费者无需关心 生产者,系统很方便地做到异步化。

削峰填谷

对于突发流量,数据可先堆 积在CMQ server,消费者按 照实际能力来消费,防止雪 崩效应和消息丢失。

消费复用

数据生产一次并堆积到CMQ server,不同消费场景可多次复 用。例如订单数据生产一次,逻 辑、业务、计费、监控、统计模 块都可以消费。

iconCMQ - 核心价值icon
生产可靠

客户端生产的消息在broker 刷盘成功后会返回确认消息告知生产消息成功。如果在一定时间之内客户端没有收到确认信息需要重试来确保消息发送成功。

消费可靠

消费者拉取消息时会指定当前消息的隐藏时间,在隐藏时间内消费者比较显式的对消息进行确认删除, 如果超过隐藏时间没有主动删除, 此条消息将重新对外可见,可以继续消费。

存储可靠

消息服务每条消息在返回给用户写成功之时就确保数据已被复制3份写到不同物理机上,并且后台数据复制机制保证任何一台物理机故障时其上的数据能够快速迁移,时刻保证用户数据3份副本可用,可靠性达99.999999%;采用Raft一致性算法,保证数据强一致性。

CMQ架构概述
CMQ架构优势: 1、消息多份存储,高可靠、强一致 2、control master、proxy 节点自动 failover 切换 3、水平透明扩展,理论上性能无上限 4、节点负载实时上报,高效准确调度策略 5、一致性hash,降低broker-Set横向扩容、收缩时带 来的震荡 6、raft一致性算法,保证消息落盘强一致性
Broker: 1、实现消息的接收、存储和发送 2、三副本raft算法强一致性,实时刷盘
管理系统-Control Master: 1、对客户端进行鉴权判断 2、Agent/Proxy下发配置、管理全局路由、 3、动态调整全局负载等功能(横向扩容,缩容) 4、流量管控、过载保护 5、还承担monitor的功能负责对消息的跟踪定位、告警等功能
CMQ技术原理
客户端生产的消息在broker 刷盘成功后会返回确认消息告 知生产消息成功。如果在一定时间之内客户端没有收到确认信息需要重试来确保消息发送成功。 可靠生产带来的一个问题就是消息的重复,在网络异常等 情况下很可能CMQ broker已经存储消息成功只是确认包在 网络上丢失了,这样客户端重试生产后,在broker上存在两 条重复的消息。考虑到消息去重开销较大,目前消息的幂 等性需要业务逻辑来保证。消费者拉取消息时会指定当前消息的隐藏时间,在隐藏时间内消费者需要显式的对消息进行确认删除(ACK),消息才会真真的被删除。如果超过隐藏时间没有主动删除, 此条消息将重新对外可见,可以继续消费。显式确认删除消息是为了防止消息在投递、处理过程中异 常而导致的消息丢失。
CMQ技术原理
CMQ SET中一个节点为leader 其他节点为follower, leader 负责所有消息的生产消费。当生产消息到达 leader 节点后,通过raft 一致性模块将请求顺序写raft log 并同步刷盘,同时将构造好的raft log 按顺序通过网 络发送到其他follower节点,follower节点同步刷盘并返 回成功。当leader 收到过半数的节点同步成功信息后 将此条请求提交到mq 处理状态机,由mq 状态机将请 求应用到相应queue。 对于返回客户端成功的消息至少是分别在两个节点磁 盘上存储成功的,这就将磁盘故障引起的数据丢失大 大降低。另外数据在磁盘上存储时会将检验结果一同 记下来,消费者在消费数据之前CMQ broker 会进行比 较,确保消息是完整有效的。
CMQ技术原理
CMQ中,Raft 协议强依赖 Leader 节点的可用性来确保集群数据的一致性。数据的流向只能从 Leader 节点向 Follower 节点转移。 当 Client 向集群 Leader 节点提交数据后,Leader 节点接收到的数据处于未提交状态(Uncommitted),接着 Leader 节点会并发向所有 Follower 节点复制数据并等待接收响应,确保至少集群中超过半数节点已接收到数据 后再向 Client 确认数据已接收。 一旦向 Client 发出数据接收 Ack 响应后,表明此时数据状态进入已提交(Committed),Leader 节点再向 Follower 节点发通知告知该数据状态已提交。
CMQ技术原理
 
CMQ controller server 根据set的负载情况 实时对queue进行调度搬迁。 如果某个queue的请求量超过当前set 的服务阈值,controller server 可以将 queue 路由分布到多个set 上来提高并发量 ,对于需要海量堆积的服务来说可以通过 路由调度来提升堆积上限,理论上可以达 到无限堆积。 当topic/queeu 所属集群负载高时(生 产消费QPS超高,消息堆积达到警戒线时 )。Master将新扩容的SET 实时的推送到 agent/Proxy,为了降低路由调整对现网生 产流的影响,此处使用一致性hash来降低全局震荡。
CMQ功能
部署: 简单、无第三方组件依赖
运营: 1)有完善的web 运营管理系统 2)可以通过管理系统进行topic queue的增删改查、调度迁移 3)支持在线版本升级和变更 4)支持对queue 进行流控、鉴权等个性化配置
监控告警: 机器负载、逻辑异常、堆积量、请求次数等全方位细粒度的监控 告警(1min)
审计: 1)支持按照消息类型进行过滤匹配(根据生产时间、Queue name) 2)支持全量消息备份到bankup queue
全路径trace: 1)支持对消息的生产 消费全流程机型trace 2)方便定位问题和代码debug
iconCMQ功能icon

消息回溯(rewind)接口为Queue属性,修改后,所有消费者都遵循最新的rewind时间轴进行消费。 1、回溯的时间点,只允许指定消息已删除,但处于消息可回溯周期之内的时间点。 2、rewind支持修改,也只能重新选择,消息可回溯区间内的时间点。 3、指定后,所有消费者,将从指定的时间点(在可回溯范围内),开始消费,一直消费到当前时间。 4、当指定了早于可回溯范围的时间点进行回溯时,会报错,接口会自动指定『最近的可回溯时间点』。

死信队列称为Dead letter Exchange。主要满足2种场景下的诉求: 1、便于定位问题:如可设定,某条消息,被多次消费后,却未被删除。这种情况下往往是该消息未被正确的消费。可能存在问题需要回溯定位。 可设置最大消费次数。超额后,该消息会被淘汰到指定的死信队列。便于后续问题发现。 2、优先级队列:还可以用作优先级处理,如摩拜单车等o2o客户,对访问时延、实时性要求非常高。如单车开锁逻辑,当MQ中堆积了1亿 条消息时,会优先处理最新生产的部分消息,老的消息淘汰到死信队列,当消费者有能力时。再处理 (往往老的消息,比如用户扫码开车 ,在等待时已流失了,老的消息的价值会偏小。建议优先处理最新的消息)。

iconCMQ功能icon

事务消息。主要满足以下场景的诉求:由于传统的处理方式无法解决消息生成者本地事务处理成功与消息发送成功两者的一致性问题,因此事务消息就诞生了,它实现了消息生成 者本地事务与消息发送的原子性,保证了消息生成者本地事务处理成功与消息发送成功的最终一致性问题。用户实现类似 X/Open XA 的分布事务功能,通过CMQ事务消息能达到分布式事务的最终一致。

icon消息队列CMQ的用户们icon
icon客户案例—微信支付、第三方支付实现异步解耦icon
与微信支付紧密合作的第三方移动金融支付解决方案提供商,如深圳威富通等,促进了全国各行各 业的线下商铺,通过微信支付,提高效率,免除现金结算的低效率。支付系统主要架构如下:1、用户在便利店购物(如7-11)提交的支付请求,发送给微信支付,微信支付确认后会返回ACK。2、返回的ACK确认后,微信支付系统会下发一条『订单支付成功的消息』,详细说明了消费的账 户信息、时间、金额,终端信息等。该消息会发给威富通。3、威富通将该明细,写入CMQ,用作暂存。『订单支付成功的消息』作为威富通与商家(便利店 )之间结算的重要凭证,必须可靠传递,保证不丢。4、异步的,将CMQ内的『订单支付消息』,返回给多商家的服务器(便利店),这个返回的过程 不需要及时,可以异步处理。具体怎么做呢?是将该消息写到Queue里,然后一个http代理,来拉 消息。取出后,http发给商家。
5、在未接入cmq之前,由于通知商户的峰值压力比较高,经常出现通知超时、失败等。使用CMQ 做异步处理后,可根据能力作通知,成功率大大提升。原来当威富通通知商户失败,威富通会重新 向微信支付发起请求,微信随后会再次将同样的『订单支付消息』投递给威富通。接入CMQ之后, 从微信的角度来看,威富通系统的成功率提升不少,微信对其评级会提升(可靠性、信誉)。6、最后,每笔『订单支付消息』,由另一个topic,不断向风控管理、活动管理、促销活动等系统 投递。例如风控管理会持续分析topic投递的每一笔订单支付情况,当商家A在短时间内交易额大幅 上涨时(刷单嫌疑),会用回调接口,禁止商家A的后续交易。
icon客户案例—助力阅文集团,系统解耦,削峰填谷icon
阅文集团旗下的起点中文网,使用CMQ满足了3个核心需求: 1、『仗义书财』的运营系统,里面抢红包月票的功能,消费者入账的 时候是异步的。入账信息会先写到MQ里。 消费者过来拉,且消费者确 认已成功消费后,回调接口把MQ里的信息删掉。2、另一个场景是,起点文学网的各大系统,包括运维、告警、运营系 统的日志流水,会先聚合到CMQ中,后端的大数据分析集群,会按处理 能力,不断到CMQ中拉去,分析。CMQ理论上支持的消息堆积数量无 上限,使用无后顾之忧。
3、提供类似于kafka的消息回溯能力。当业务成功消费,并删除消息 后,使用消息回溯,可重新消费已删除的消息。可指定offset的位置进 行调整。这便于起点文学网,做账单的对账、业务系统重试等。 起点文学的整体业务对CMQ的压力,API请求的QPS超过10万,全天请 求量超10亿次,客户担忧如此大的业务压力,CMQ是否能稳定支持? CMQ后端的集群对用户来说是透明无感知的,CMQ controller server 可 根据集群的负载情况实时对queue进行调度搬迁。如果某个queue的请 求量超过当前集群的服务阈值,controller server 可以将queue 路由分 布到多个集群上来提高并发量,理论上可以达到无限的消息堆积以及超高的QPS。
icon客户案例—腾讯IEG一次生产、多次消费场景icon
腾讯IEG游戏使用场景,对于游戏内容和属性等及时通知相关用户,实 现消息批量推送。
1.游戏道具上下架,属性变更触发生产消息入cmq mq server 将消息推 送给订阅者 。
2.业务订阅者将道具变更信息push给游戏玩家游戏道具上下架,属性变 更触发生产消息入cmq
3.mq server 将消息推送给订阅者,订阅者会包含多个系统如业务逻辑 、监控告警、运营系统等。实现一次生产,多次调用
4.业务订阅者将道具变更信息push给游戏玩家
icon客户案例—财付通跨园区容灾解决方案icon
Webank 财付通等金融用户对业务可靠性和可用性有严格的 要求,通过在深圳两个金融机房分别部署两套CMQ,实现异 地备份和容灾:
1、消息body的存储,可根据业务特性选择,同步落盘 (强一致性)、异步落盘(最终一致性)的等不同策略。
2、当主节点MQ数据彻底丢失时,主备节点的RPO在 5min以内。腾讯云提供failover、failback切换的api接 口,将灾难恢复、切换的控制权交给客户。准备切换后 ,存在数据的差异,可关联其他DB做对账等处理,补回数据。
icon客户案例—助力华润智慧停车场业务icon
华润停车场业务通过CMQ实现个业务模块的解 耦和异步通信,保障控制信息,配置信息,推送信息等高可靠传递,绝不丢失。
1.CMQ提供的queue模式,对停车场和反向寻车 系统上传的数据进行高可靠传递
2.利用Topic模式将通知信息,管理信息等push 到外部应用和管理平台,实现一条消息多次消费
3.对于停车场监控设备,开关设备等,新上的设 备通过后端配置中心利用CMQ下发初始化配置 和上传控制信息到控制中心
4.系统间通过解耦,设备增加,平台变更不影响彼此,随着消息量和接入设备的增加,通过 CMQ的水平扩展特性,弹性伸缩应对并发高峰
icon客户案例—为互联网金融客户提供金融级数据可靠消息队列服务icon
微民保险核心业务全面接入CMQ,提供金融 级高可靠消息队列服务。
1.支付业务,订单业务等利用cmq实现业务消 息的高可靠传递,提供99.999999%数据可靠 性和99.95数据可用性。
2.利用Topic模式,将价格变动信息,活动通 知等运营信息推送到用户侧,实现批量消息 实时推送。
3.各个业务模块将监控信息,统计信息,告警 信息等海量信息通过cmq高可靠的上报到运 维监控平台,实现的监控运维和统计分析。
产品推荐 查看更多>>
    轻量应用服务器 Lighthouse

    腾讯云轻量应用服务器(Lighthouse)是新一代面向中小企业和开发者的云服务器产品,具备轻运维、开箱即用的特点,适用于小型网站、博客、论坛、电商以及云端开发测试和学习环境等轻量级业务场景

    简化了云服务操作、使用和管理复杂度,具备独立的产品控制台

    开支清晰透明,完美平衡大带宽和高性价比

    具备极高的服务可用性和数据可靠性

    腾讯云CA证书政务行业解决方案

    腾讯云CA是一家权威、公正的第三方电子认证服务机构,遵照《电子认证服务管理办法》 《中华人民共和国电子签名法》、《中华人民共和国密码法》的要求和相关规定,可为用户提供数字证书全生命周期管理及电子认证相关服务;同时还向大规模行业客户和地区提供电子认证服务系统(如:CA、RA和受理点)建设服务。

    权威、公正的第三方电子认证服务机构

    提供数字证书全生命周期管理

    提供电子认证相关服务

    提供电子认证服务系统

    腾讯云知识图谱TKG

    腾讯云知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。

    集成了图数据存储、图计算引擎、图可视化分析的一站式平台

    支持千亿级节点关系的存储和计算

    支持PageRank、社群发现、相似度计算、模糊子图匹配等离线计算

    拥有丰富的图数据可视化展现方式