队列削峰 削峰填谷

产品详细信息 - 消息队列 TDMQ_分布式消息队列_金融级分布式消息中间件 - 腾讯云 https://cloud.tencent.com/product/tdmq/details

腾讯云 TDMQ 产品详细信息

腾讯云消息队列 TDMQ(Tencent Distributed Message Queue)是一款基于 Apache 顶级开源项目 Pulsar 自研的金融级分布式消息中间件。其计算与存储分离的架构设计,使得它具备极好的云原生和 Serverless 特性,用户按量使用,无需关心底层资源。它拥有原生 Java 、 C++、Python、GO 等多种 API,同时支持 kafka 协议以及 HTTP 协议方式接入,可为分布式应用系统提供异步解耦和削峰填谷的能力,具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。TDMQ 目前已应用在腾讯计费绝大部分场景,包括支付主路径、实时对账、实时监控、大数据实时分析等方面。

功能

TDMQ 解耦生产和消费,提供高一致性,高可靠的消息传输能力。

削峰填谷

企业不定时举办的一些营销活动,新品发布上线,节日抢红包等等,往往都会带来临时性的流量洪峰,这对后端的各个应用系统考验是十分巨大的,如果直接采用扩容方式应对又会带来一定的资源浪费。消息队列此时便可以承担一个缓冲器的角色,将上游突增的请求集中收集,下游可以根据自己的实际处理能力来消费请求消息。

异步解耦

交易引擎作为腾讯计费最核心的系统,每笔交易订单数据需要被几十几个下游业务系统关注,包括物品批价、道具发货、积分、流计算分析等等,多个系统对消息的处理逻辑不一致,单个系统不可能去适配每一个关联业务。此时,TDMQ 可实现高效的异步通信和应用解耦,确保主站业务的连续性。

顺序收发

顺序消息的应用出现在在业务场景中。例如王者荣耀的皮肤道具购买与发放,过程中的订单创建、支付、退款等流程都是严格按照顺序执行的,与先进先出(First In First Out,FIFO)原理类似,TDMQ 提供一种专门应对这种情形的顺序消息功能,即保证消息 FIFO。

分布式事务一致性

腾讯计费(米大师)是孵化于支撑腾讯内部业务千亿级营收的互联网计费平台,承载了公司每天数亿收入大盘,解决的核心问题是如何确保钱货一致,使用 TDMQ 与分布式事务应用结合来处理交易事务,可以大大提升处理效率和性能。

计费的交易链路通常比较长,出错或者超时的概率比较高,借助 TDMQ 的自动重推和海量堆积能力来实现事物补偿,并实现支付 Tips 通知和交易流水推送最终一致性。

大数据分析

数据在“流动”中产生价值,传统数据分析大多是基于批量计算模型,而无法做到实时的数据分析,利用 TDMQ 与流式计算引擎相结合,可以很方便的实现对业务数据进行实时的分析。

 

 消息队列 MNS版-消息通知服务-阿里云 https://www.aliyun.com/product/mns

交易系统

 

 

 

 

红包秒杀

 

 

场景描述-交易系统解耦

作为淘宝/天猫主站最核心的交易系统,每笔交易订单数据的产生会引起几百个下游业务系统的关注,包括物流、购物车、积分、阿里妈妈、流计算分析等等,整体业务系统庞大而且复杂,为了保证主站业务的连续性,必须采用分布式的架构设计,各个系统间进行解耦;

 

  • 高可用松耦合架构设计
    通过上、下游业务系统的松耦合设计,即便下游子系统(如物流、积分等)出现不可用甚至宕机,都不会影响到核心交易系统的正常运转;
  • 灵活适应业务的快速增长
    应业务要求新增业务系统时,不会影响基础的技术架构改动,也不会影响其他系统间的正常运转;

 

 

 

关闭未支付订单

 

 

 

场景描述

订单未支付后的业务逻辑处理,并触发定时任务

通过队列设计定时消息

创建订单库存减1的同时,发送付款检查任务的定时消息到消息服务Queue; 定时消息在30分钟后可见,后端服务消费到付款检查任务的消息;

通过MNS完成实时通知

后端服务进行付款检查,如果订单还未支付,对订单进行回滚,库存加1。

能够解决的问题

  • 创建定时消息
    比如通过创建定时消息以判断电商交易中超时未支付的订单是否已付款或者需要关闭订单;(满足消息生产和消费的时间差的业务要求
  • 完成定时通知
    比如上场景中对超时未支付订单对用户发送提醒消息(满足通过消息触发定时任务的业务场景设计)

 

 

用户信息注册

 

 

 

场景描述

表单注册等系统同步转异步,实现异步通知

 

用户注册成功后,需要发送注册成功邮件、新用户积分、优惠券等,加入MNS,可以提升主流程用户注册流程的响应速度,而发送通知等非主流程或非重要任务可以异步集中处理,同时还可以将任务聚合然后批量处理。

能够解决的问题

  • 减少请求、提升效率和系统并行能力,提高系统吞吐量
    MNS 通知功能,可以在后端服务处理完成任务时,回调通知用户。进而减少用户、Web前端和后端服务之间大量不必要的轮询请求。
  • 设计运营通知
    消息推送通知是运营方法中使用频率较高的一种。它可以在某个时间节点提醒用户进行某项操作,比如上新活动推送、有趣新闻内容提醒、或派送优惠券通知等,增强用户黏性。

 


在线抽奖设计

 

 

 

场景描述

在线抽奖系统架构设计,随机生成奖品信息,完成抽奖请求判定及用户通知

随机生成奖品队列

用户在线抽奖,访问抽奖系统前端集群; 抽奖系统后端管理集群随机生成奖品信息,注入奖品队列;

通过两个队列进行中奖信息同步

前端通过奖品队列读取奖品信息,对用户的抽奖请求进行判定;命中之后,发送中奖信息到中奖信息队列;

通过中奖队列、中奖主题、中奖信息的组合,通知用户

后端管理集群收取中奖信息队列中奖信息,发送通知消息到奖品通知主题;奖品通知主题推送奖品通知短信、邮件到用户,通知实时统计系统http 回调进行中奖统计

能够解决的问题

  • 前端抽奖系统和后段奖品系统松耦合
    通过奖品队列,完成用户在线抽奖和奖品随机生成
  • 通过队列、主题、消息的结合,实现了用户事件的实时推送,保证中奖信息的时效性
    完成中奖情况的判定、中奖消息的同步和用户的通知

 

任务系统设计

 

 

场景描述

设计任务系统,完成HTTP回调

通过队列异步执行任务计算

用户提交任务执行消息到任务队列中;任务执行集群消费任务队列中的任务消息,异步执行计算任务;

通过MNS完成实时通知

计算任务执行结束,发送送通知消息到主题,主题异步调用任务管理服务器上的http回调,并且发送邮件和短信通知用户

能够解决的问题

  • 避免解决并发请求带来的数据洪峰,压缩会场页面响应时间
    比如双11大促,各个分会场几百上千个商品需要实时感知价格变化,大量并发访问数据库,数据库的访问压力极大;
  • 避免因为带宽瓶颈限制商品变更的访问流量,实时通知商品数据的变化

 

跨私网数据交换

 

 

场景描述

相互隔离的内网间的数据通过公网进行

 

  • 数据同步和交换
    无需打通企业A和B的内网,也无需暴露企业A内网服务,消息服务作为公共消息通道实现企业A向企业B数据同步和交换
  • 灵活设置访问策略
    消息服务已经支持RAM访问控制和STS临时授权方式,可以灵活设置公网队列的访问策略

视频系统架构

 

 

场景描述

视频上传、视频处理服务、视频上架等松耦合

视频上传和视频处理服务解耦

视频上传至oss,oss发送视频上传完成事件消息到消息任务队列;

视频处理通过MNS完成状态更新

视频处理服务MTS读取任务队列中事件消息,根据时间消息拉取文件,进行视频转码,重新上传转码结果,发送通知到通知主题;

视频上架

视频网站更新数据,上架视频;CDN对新转码的视频进行加速,加快用户观看体验;

能够解决的问题

  • 多任务间松耦合设计,提高业务并发处理能力
     
  • 多任务间顺序进行,保证业务流程流畅

 

 

 

消息队列 RocketMQ - 打造金融级消息服务 - 阿里云 https://www.aliyun.com/product/rocketmq

异步解耦

 

削峰填谷

 

顺序消息

 

分布式事务消息

 

大数据分析

 

分布式模缓存同步

 

 

异步解耦

 

 

场景描述

作为淘宝/天猫主站最核心的交易系统,每笔交易订单数据的产生会引起几百个下游业务系统的关注,包括物流、购物车、积分、阿里妈妈、流计算分析等等,整体业务系统庞大而且复杂,架构设计稍有不合理,将直接影响主站业务的连续性;

 

  • 高可用松耦合架构设计
    通过上、下游业务系统的松耦合设计,即便下游子系统(如物流、积分等)出现不可用甚至宕机,都不会影响到核心交易系统的正常运转;
  • 灵活适应业务的快速增长
    商场如战场,通过 MQ 的异步化设计,可以灵活高效的适应因业务快速发展而带来的变化,如新增业务系统;

 

削峰填谷

 

 

场景描述

诸如秒杀、抢红包、企业开门红等大型活动时皆会带来较高的流量脉冲,或因没做相应的保护而导致系统超负荷甚至崩溃,或因限制太过导致请求大量失败而影响用户体验,削峰填谷是解决该问题的最佳方式;

 

  • 超高流量脉冲处理能力
    MQ 超高性能的消息处理能力可以承接流量脉冲而不被击垮,在确保系统可用性同时,因快速有效的请求响应而提升用户的体验;
  • 海量消息堆积能力
    确保下游业务在安全水位内平滑稳定的运行,避免超高流量的冲击;
  • 合理的成本控制
    通过削弱填谷可控制下游业务系统的集群规模,从而降低投入成本;

 

顺序消息

 

 

场景描述

细数日常中需要保证顺序的应用场景非常多,比如证券交易过程时间优先原则,交易系统中的订单创建、支付、退款等流程,航班中的旅客登机消息处理等等。与FIFO原理类似,MQ提供的顺序消息即保证消息的先进先出;

 

  • 严格保序
    与部分开源产品不同,无论是服务上下线、扩缩容,网络不稳定等情况下,MQ 始终保证消息的有序;
  • 高性能&可扩展
    支持全局顺序与分区顺序,分别满足不同的业务需求,如证券交易系统中相同股别采用全局顺序,交易系统的不同订单之间采用分区顺序;分区顺序在严格保序的同时,通过分区动态扩展能力提高整体的并发与扩展能力;

 

分布式事务消息

 

场景描述

阿里巴巴的交易系统、支付红包等场景需要确保数据的最终一致性,大量引入 MQ 的分布式事务,既可以实现系统之间的解耦,又可以保证最终的数据一致性。

 

  • 传统事务
    多个系统或者应用组件之间的业务处理会耦合到一个大事务中,响应时间长,业务链路长从而影响系统的整体性能和可用性,甚至引起系统崩溃;
  • 分布式事务
    将核心链路业务与可异步化处理的分支链路进行拆分,将大事务拆分成小事务,减少系统间的交互,既高效又可靠;MQ 的可靠传输与多副本技术在确保消息不丢,At-Least-Once 特性确保数据的最终一致性;

 

 

 大数据分析

 

 

场景描述

数据在"流动"中产生价值,传统数据分析大多是基于批量计算模型,而无法做到实时的数据分析,利用阿里云消息队列(MQ)与流式计算引擎相结合,可以很方便的实现将业务数据进行实时分析。

 

  • 应用与分析解耦
    构建应用系统和分析系统的桥梁,并将它们之间的关联解耦,同时由于数据产生非常快且数据量大,需要非常高的可扩展性;
  • 大数据分析
    可对接 Storm/Spark 实时流计算引擎,亦可对接 Hadoop/ODPS 等离线数据仓库系统;

 

分布式模缓存同步

 

 场景描述 天猫双11大促,各个分会场琳琅满目的商品需要实时感知价格变化,大量并发访问数据库导致会场页面响应时间长,集中式缓存因为带宽瓶颈限制商品变更的访问流量,通过 MQ 构建分布式缓存,实时通知商品数据的变化;  实时数据更新 通过消息实时推送的方式,让数据实时得以更新; 降低页面响应时间 大量并发访问商品数据库,减少页面响应时间 满足大规模访问需求 大促众多分会场,多缓存的架构设计,满足对商品变更的大量访问需求;

 

 

 

posted @ 2017-04-21 20:03  papering  阅读(1025)  评论(0编辑  收藏  举报