客户案例

 

产品概述

优势 腾讯云消息服务 开源消息中间件软件
高性能

兼顾性能与可靠性,单 CMQ 集群 QPS 超过10万。

数据可靠性与性能无法兼顾。

高扩展性

队列数量及队列存储容量可扩展性强;

底层系统根据业务规模自动弹性伸缩,上层业务无感知;

支持无限数量的消息服务,随时读取和写入无限数量的消息;

迭代一提供北京、上海、广州地域的多地域服务。

队列数量和消息堆积数量有限;

每个 IDC 机房必须重新部署购买并部署设备,非常繁琐。

高可靠性

基于腾讯自研 CRMQ(Cloud Reliable Message Queue)分布式框架,已在腾讯内部业务如 QQ/微信红包、彩票等业务上得到广泛使用;

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

采用 Raft 一致性算法,保证数据强一致性。

数据单机或简单主从结构,存在数据单点问题,一旦丢失不可回溯;

开源的 replicia 算法,在集群新增、删除服务器节点时,会引发全局的数据重新均衡,引起可用性急剧下降;

如 Kafka 使用异步刷盘方式,异步 replication,无法保证数据强一致性。

业务安全

多纬度的安全防护和防 DDoS 攻击服务;

提供了身份验证机制,确保 CMQ 队列中的消息受到保护,防止未经授权的访问;

支持跨服务商间安全的消息服务。

安全防护功能有限;

考虑到公网的网络威胁,常常无法提供跨地域、跨 IDC 的公网服务。

便宜

无前期费用或固定开支,通过 CMQ 发送消息只会收取少量的单次请求处理费和数据传输费(2元/百万次请求)。

需要前期投入大量的固定设备用于业务部署。

 

产品功能

入门说明
异步的通信协议

腾讯云消息服务提供异步的通信协议。消息的发送者将消息发送到消息队列后可以立即返回,不用等待接收者的响应,消息会被保存在队列中,直到被接收者取出。

保证消息的传递

如果发送消息时接收者不可用,消息队列会保留消息,直到成功地传递它。

解耦

腾讯云消息服务降低了两个进程间的耦合度。只要消息格式不变,即使接收者的接口、位置或者配置改变,也不会给发送者带来任何改变;而且,消息发送者无需知道消息接收者是谁,使得系统设计更清晰;相反的,例如,远程过程调用(RPC)或者服务间通过 socket 建立连接,如果对方接口改变了或者对方 IP/端口改变了,那么另一方需要改写代码或者改写配置。

提供路由

发送者无需与接收者建立连接,双方通过消息队列保证消息能够从发送者路由到接收者,甚至对于本来网络不易互通的两个服务,也可以提供消息路由。

队列模型(Queue)
主题模型(Topic)
 

入门场景

系统解耦

紧耦合系统中,消费者出现任何问题(升级停服、宕机、不可用等),都会影响生产者的业务;

使用CMQ提供的松耦合服务,生产者无需了解消费者,消费者无需关心生产者,系统很方便地做到异步化。

 

产品架构

架构说明

红包海量并发处理的场景下,若使用传统的事务处理方式,红包拆取失败时回滚且频繁轮询数据库,将会给系统造成并发压力甚至系统崩溃。微信红包系统引入了腾讯云CMQ,有效避免了分布式事务增加对系统所造成的开销。

以A用户向B用户发送10元红包为例。

定义三种角色:红包发送系统、CMQ红包队列、红包接收系统

红包发送系统执行:读取A账户余额、A账户减去10元、结果写回A账户

红包接收系统执行:读取B账户余额、拆取红包读取数值、B账户增加10元、结果写到B账户

B账户更新余额失败时,红包入账失败的请求将转入CMQ,而手机客户端显示等待状态。账户系统将不断从CMQ拉取并重试此更新操作,直至红包金额被取出,从而保证红包入账永不丢失。

CMQ消息队列保证了红包消息的可靠存储、传递,实时写三份保证数据不丢。资金入账失败时可多次重试,避免失败回滚和频繁轮询数据库等传统方式的弊端。

了解更多

 

开发者资源

SDK资源

Java

V1.0.32017-03-10

下载

Python

V1.0.32017-03-10

下载

Php

V1.0.32017-03-10

下载

C++

V1.0.32017-03-10

下载