编辑: 霜天盈月祭 | 2016-05-16 |
【商标声明】 及其它腾讯云服务相关的商标均为腾讯云计算(北京)有限责任公司及其关联公司所有.本文档涉及的第三方主体 的商标,依法由权利人所有. 【服务声明】 本文档意在向客户介绍腾讯云全部或部分产品、服务的当时的整体概况,部分产品、服务的内容可能有所调整.您 所购买的腾讯云产品、服务的种类、服务标准等应由您与腾讯云之间的商业合同约定,除非双方另有约定,否则, 腾讯云对本文档内容不做任何明示或模式的承诺或保证. 产品简介 产品文档 版权所有:腾讯云计算(北京)有限责任公司 第3 共21页 文档目录 产品简介 消息队列概述 应用场景 应用场景概述 一对多生产 异步通知 系统解耦 削峰填谷 可靠传递,多次复用 屏蔽平台差异 跨用户数据交换 产品功能 产品优势 服务等级协议(SLA) 产品简介 产品文档 版权所有:腾讯云计算(北京)有限责任公司 第4 共21页CMQ 消息队列介绍 CMQ(Cloud Message Queue) 是基于腾讯自研消息引擎的分布式消息队列系统,CMQ 通过腾讯自研分布式 Raft 算法保证消息强一致,消息同步
3 副本落盘保障消息高可靠,提供消息队列、发布订阅、消息回溯、延时消息、顺 序消息、消息轨迹等服务.具有高可靠、高可用、高性能、动态伸缩等优势. CMQ 的开发迭代历程超过
7 年,为 腾讯内部包括微信、webank、QQ 秀、手机 QQ 等大型业务提供异步的消息服务支持. CMQ 已经正式商用,目前在腾讯云全球多个地域提供了高可用消息云服务,机房硬件设施按照腾讯自建 IDC 的高 标准来实施.单个地域内采用多机房部署,即使整个机房都不可用,仍然可以为应用提供消息发布服务.同时在深 圳金融专区、上海金融专区均有部署,提供金融级数据高可靠消息队列服务. CMQ 目前提供 HTTP(S)、TCP 协议的接入.提供 PHP、Java、Python 等丰富语言的 SDK 接入. 接入方式 HTTP(S) 接入 TCP 接入 面向场景 提供基于 HTTP(S) 协议的同步接入方式, 支持 Restful API 和多语言的 SDK 简单方 便接入. 提供 TCP 同步/异步接入方式,支持多语言 SDK, 提高生产端和消费端的效率,提供更高性能的消息 队列服务 亮点能力 消息无限堆积、水平扩展 金融级消息高可靠,消息实时落盘 TCP 异步非阻塞方式收发消息,提升效率 消息无限堆积、水平扩展金融级消息高可靠,消息 实时落盘 说明: CMQ TCP 接入方式,正在内测中,欢迎工单联系售后工程师,将有专人为您开通内测服务. CMQ 支持私有化部署,欢迎工单联系售后工程师,将有专人为您开通内测服务. 应用场景概述 在需要进行异步通信的应用情景中推荐使用 CMQ.例如: 产品简介 消息队列概述 最近更新时间:2018-09-06 14:41:31 产品简介 产品文档 版权所有:腾讯云计算(北京)有限责任公司 第5 共21页 应用需要确保消息的可靠传递,即使发送消息时接收者由于断电、宕机或 CPU 负载过高等原因不可用,消息也可 以在接收者可用时被送达.传统的消息队列把消息储存在内存中,故而不具备这一功能.腾讯云 CMQ 分布式消 息队列中的消息会被持久化保存,直到接收者成功获取它. 需要在访问量与日俱增、囤积在队列中的消息数日益增长的情况下也能正常运转.传统的消息队列把消息存在本 地内存中,单机的处理能力和内存容量都是有限的,不具备可扩展性.腾讯云 CMQ 的分布式架构保证了其扩容 的简易性,更重要的是扩容对 CMQ 的使用者是完全透明的. 两个服务在网络不能互通或者应用的路由信息(比如 IP 和端口)不确定的情况下需要通信.例如,两个腾讯云上 的服务在不知道对方地址的情况下需要进行通信,则可以通过约定队列名,一个向队列发送消息,一个从队列中 收取消息而实现. 系统组件之间或者应用之间通信较多,需要组件或者应用自身维护彼此的网络连接,而且通信的内容不仅一种. 这时,使用传统的架构会使得系统设计复杂.例如:当有一个中央处理服务需要向多个任务处理服务分派任务时 (类似于 master-worker 模式),master 需要维护与所有 worker 的连接,并判断 worker 是否开始处理任务从 而决策是否需要重新分派任务.同时,worker 的任务结果也需要汇报给 master.要在一个层面维护这样的系统 会导致设计复杂,实现难度和维护成本大.如下图所示,使用腾讯云 CMQ 减轻两方的之间耦合性会使系统简洁 高效许多. 系统组件之间或者应用之间耦合较紧,尤其对依赖的组件可控性较弱的情况下,希望降低耦合度.比如公司业务 CGI 收到用户提交的内容,将部分数据存储在自身的系统中,并将处理后的数据转发给其他业务应用(如数据分 析系统、数据存储系统等).传统的解决方案是服务间通过 socket 建立连接,此时如果接收方的 IP 或端口改 变,或换了另一个接收方,则需要数据发送者进行修改.使用腾讯云 CMQ,发送者和接收者对彼此信息无感知, 耦合度大大降低. 产品简介 产品文档 版权所有:腾讯云计算(北京)有限责任公司 第6 共21页 在需要进行异步通信的应用情景中推荐使用CMQ.例如: 应用需要确保消息的可靠传递,即使发送消息时接收者由于断电、宕机或cpu负载过高等原因不可用,消息也可 以在接收者可用时被送达.传统的消息队列把消息储存在内存中,故而不具备这一功能.腾讯云CMQ分布式消息 队列中的消息会被持久化保存,直到接收者成功获取它. 需要在访问量与日俱增、囤积在队列中的消息数日益增长的情况下也能正常运转.传统的消息队列把消息存在本 地内存中,单机的处理能力和内存容量都是有限的,不具备可扩展性.腾讯云CMQ的分布式架构保证了其扩容的 简易性,更重要的是扩容对CMQ的使用者是完全透明的. 两个服务在网络不能互通或者应用的路由信息(比如ip和端口)不确定的情况下需要通信.例如,两个腾讯云上 的服务在不知道对方地址的情况下需要进行通信,则可以通过约定队列名,一个向队列发送消息,一个从队列中 收取消息而实现. 系统组件之间或者应用之间通信较多,需要组件或者应用自身维护彼此的网络连接,而且通信的内容不仅一种. 这时,使用传统的架构会使得系统设计复杂.例如:当有一个中央处理服务需要向多个任务处理服务分派任务时 (类似于master-worker模式),master需要维护与所有worker的连接,并判断worker是否开始处理任务从而决 策是否需要重新分派任务.同时,worker的任务结果也需要汇报给master.要在一个层面维护这样的系统会导致 设计复杂,实现难度和维护成本大.如下图所示,使用腾讯云CMQ减轻两方的之间耦合性会使系统简洁高效许 多. 应用场景 应用场景概述 最近更新时间:2017-12-08 16:44:00 产品简介 产品文档 版权所有:腾讯云计算(北京)有限责任公司 第7 共21页 系统组件之间或者应用之间耦合较紧,尤其对依赖的组件可控性较弱的情况下,希望降低耦合度.比如公司业务 CGI收到用户提交的内容,将部分数据存储在自身的系统中,并将处理后的数据转发给其他业务应用(如数据分析 系统、数据存储系统等).传统的解决方案是服务间通过socket建立连接,此时如果接收方的IP或端口改变,或 换了另一个接收方,则需要数据发送者进行修改.使用腾讯云CMQ,发送者和接收者对彼此信息无感知,耦合度 大大降低. 产品简介 产品文档 版权所有:腾讯云计算(北京)有限责任公司 第8 共21页CMQ的topic主题订阅模型,支持生产者向多个订阅者,同时异步投递消息的能力.您可将消息投递到不同 http/https终端,或投递到Queue队列内.CMQ还提供消息、订阅TAG,提供消息过滤能力. 参考图示如下: 一对多生产 最近更新时间:2017-04-25 11:41:03 产品简介 产品文档 版权所有:腾讯云计算(北京)有限责任公司 第9 共21页CMQ支持将queue/topic模式混合使用.典型的场景是client端发起异步调用请求,后端为重逻辑,无法实时反馈 结果.传统的做法是client端多次重复轮询.使用CMQ添加订阅,可配置在后端重逻辑完成时,将通知投递给client 端用户 参考图示如下: 异步通知 最近更新时间:2017-04-25 11:41:16 产品简介 产品文档 版权所有:腾讯云计算(北京)有限责任公司 第10 共21页 以电商的IT架构作为例子,在传统紧耦合订单场景里,客户在电商网站下订单(如买一台手机),订单系统接收到请 求后,立即调用库存系统接口,库存减一;