15818558013

消息服务 CMQ

腾讯云消息服务(Cloud Message Queue)是分布式消息队列服务,能够为分布式部署的不同应用之间或者一个应用的不同组件之间,提供基于消息的可靠的异步通信机制,消息被存储在高可靠、高可用的CMQ队列中,多进程可以同时读写,互不干扰。
客户案例了解更多
产品概述
优势 腾讯云消息服务 开源消息中间件软件
高性能

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

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

高扩展性

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

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

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

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

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

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

高可靠性

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

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

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

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

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

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

业务安全

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

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

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

安全防护功能有限;

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

便宜

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

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

产品功能
  • 入门说明
  • 队列模型(Queue)
  • 主题模型(Topic)
  • 异步的通信协议

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

    保证消息的传递

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

    解耦

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

    提供路由

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

  • 消息推拉模式

    PULL

    丰富的队列功能

    CMQ 提供了丰富的队列属性配置选项,您可以个性化配置队列属性来满足不同的应用场景,支持多次消费、批量发送消费、重试策略配置等。

    支持并发访问

    支持多个生产者和消费者并发访问同一个队列,无需特殊设置即可自由调整并发度,并能确保某条消息在取出之后的特定时间段内,无法被其他消费者获得。

    消息并发发送及接收

    支持批量并发发送和接收消息,提升业务的吞吐性能。

    消息投递保障

    在消息有效期内,确保消息至少能被成功消费一次。用户间资源隔离,确保您队列中的消息不会被非法获取。

    支持多次消费

    若应用程序在处理消息的过程中由于断电等原因处理失败,可多次重试。

  • 消息推拉模式

    PUSH

    一对多消息投递

    一条通知消息可以同时被多个订阅者订阅和消费,支持将某 Queue 设为订阅者。

    多种投递方式

    支持 HTTP/HTTPS 等多种投递方式。

    消息过滤

    可根据消息 TAG、订阅者 TAG 进行消费过滤,增加消费灵活性 。

    消息投递保障

    在消息有效期内,保证发布到 Topic 中的消息会按照指定的重试策略,进行多次重试投递,尽可能保证业务成功接收消息。

入门场景
  • 系统解耦
  • 削峰填谷
  • 消息复用
  • 免费API
  • 数据交换
  • 系统解耦

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

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

  • 削峰填谷

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

  • 消息复用

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

  • 免费API

    CMQ屏蔽了不同平台、不同编程语言的差异,提供标准API接入,使系统之间的数据交互变得非常简单。

  • 数据交换

    CMQ还支持机房的数据交换能力,无需打通企业A和B的内网,公司内部局域网也无须暴露在公网环境下,即可轻松实现企业A向企业B数据交换及同步。

产品架构
  • 支持春晚红包
  • 海量数据处理
  • 在线图片处理
  • 架构说明

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

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

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

    • 红包发送系统执行:读取A账户余额、A账户减去10元、结果写回A账户
    • 红包接收系统执行:读取B账户余额、拆取红包读取数值、B账户增加10元、结果写到B账户
    • B账户更新余额失败时,红包入账失败的请求将转入CMQ,而手机客户端显示等待状态。账户系统将不断从CMQ拉取并重试此更新操作,直至红包金额被取出,从而保证红包入账永不丢失。

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

  • 架构说明

    大数据入门的第一步,就是对海量数据进行挖掘分析,提炼有价值的结果,引导未来的商业模型。

    大众点评、滴滴打车等企业在腾讯云已有深度的实践。

    在数据处理的场景中,消息生产者是海量日志数据的输入,在线分析的Storm集群是消费者。从经验来看,消息消费端Storm处理消息的业务逻辑可能很复杂(涉及到实时计算、数据流式处理、Topology的数据处理);且消息消费端Storm出现故障的概率较高,这种情况会导致短暂时间内无法消费或消费不畅。

    Push方式下,由于无法得知当前消息消费者的状态,所以只要有数据产生便会不断进行推送。在Storm集群处于高负载时,使用Push的方式可能会导致消息消费者的负载进一步加重,甚至崩溃。

    腾讯云CMQ提供PULL/PUSH两种数据获取方式,消费者可用并且准备好时才允许读取数据,为消息生产者与消息消费者之间加了一层缓冲区,缓解消息生产者与消息消费者之间不同步问题。

  • 架构说明

    某美图公司在腾讯云搭建了在线图片处理服务,该服务可以让用户上传照片,并指定需要对这些照片执行的操作,比如裁剪、生成缩略图等。用户上传图片后,提交任务,然后等待图片处理完,下载处理后的图片。不同的操作会耗费不同的处理时间,从几秒到几分钟不等,而且用户可能一次上传几张也可能是几十张甚至几百张图片,所以总的处理时间就与上传的图片数量、图片大小以及用户选择的操作有关。

    利用CMQ实现上述需求,用户的图片存储在腾讯云存储中(CBS/COS等),用户的每一个操作请求都会作为一个消息存入请求队列(Request Queue)中,消息内容为图片索引,由图片名称+用户请求的操作类型+图片存储的位置索引key等组成。

    运行在CVM的图片处理服务,从Request Queue中获取消息(图片索引),图片处理服务器从云端下载数据,并进行图片编辑,完毕后把处理结果发送到结果队列(Response Queue),结果图片存储到云存储中。

腾讯云服务器

为企业提供:云服务器/视频/游戏/微信开发/软件/网站/APP…云解决方案

  • QQ群咨询:377986805 咨询电话:15818558013
  • 技术支持:0755-33940501-808 17603077568
  • 产品咨询:0755-33940501-803 15818558013
  • 华北:
  • 华东:
  • 华南:

咨询电话:15818558013

15818558013