消息队列RocketMQ应对双十一流量洪峰的“六大武器”

简介: 消息队列 RocketMQ 是如何帮助各企业交易系统扛住瞬间千万级 TPS、万亿级流量洪峰的冲击,并保持各个应用之间的消息通畅的呢?下文将为您介绍消息队列 RocketMQ 应对双十一流量洪峰的“六大武器”。

作者:不周

审核&校对:岁月、明锻

编辑&排版:雯燕


“ 4982 亿,58.3 万笔/秒 ”的背后


在新冠肺炎疫情催化下,数字化生活方式渐成新常态。“4982 亿,58.3 万笔/秒”是 2020 天猫双 11 全球狂欢节(简称:天猫双 11 )对数字经济的先发优势和巨大潜能的直观体现。


1.png


面对千万级并发、万亿级的流量洪峰,背后有力支撑的便是双十一交易核心链路的官方指定产品:消息队列 RocketMQ 。


2.png


双十一交易场景业务痛点


随着双十一的逐年升温,保障交易场景的稳定性已成为各企业在双十一业务中的关键,每年双十一活动的凌晨,是“万民狂欢”的日子,同时也是各企业交易系统备受考验的时候,保证核心交易系统的业务处理能力、有效应对每秒数十万笔的交易订单成为重中之重,若不能进行流量缓冲将直接引发这些系统的崩溃。避免系统崩溃的核心“秘诀”便是消息队列 RocketMQ。


消息队列 RocketMQ 是如何帮助各企业交易系统扛住瞬间千万级 TPS、万亿级流量洪峰的冲击,并保持各个应用之间的消息通畅的呢?下面为您介绍消息队列 RocketMQ 应对双十一流量洪峰的“六大武器”。


消息队列 RocketMQ 的“六大武器”


双十一的流量洪峰究竟会给用户和商家系统业务带来哪些问题?消息队列 RocketMQ 的“六大武器”是如何解决这些问题的呢?小编带您初探一二:


武器一:“异步解耦”


背景:双十一的 夜晚,当用户在手机上“指点江山”时,可曾想,一个小小的购物 APP 背后其实是一个个庞大的系统,从用户选购商品的那一刻起,就要和成百个业务系统打交道,每一笔交易订单数据都会有几百个下 游业务系统的关联,包括物流、购物车、积分、直充、流计算分析等等,整个系统庞大而且复杂,架构设计稍有不合理,将直接影响主站业务的连续 性。


面对如此复杂且庞大的系统,避免系统业务之间相互耦合影响,便要用到消息队列 RocketMQ 的“异步解耦”功能,通过消息队列 RocketMQ 实现上、下游业务系统松耦合,松耦合可以降低系统的复杂度,缩短用户请求的响应时间(将原多个步骤的所需时间之和压缩到只需一条消息的时间),保证下游某个子系统的故障不影响整个链路。


3.png


武器二:“削峰填谷”


背景:在处理完交易业务背后庞大的系统所带来的耦合性问题后,从用户视角出发来看,双十一期间 0 点这个时间有成百上千万的用户在同时点击着购买页面,由于用户海量请求,导致流量激增,面对如此大量的访问流量,下游的通知系统可能无法承载海量的调用量,甚至会导致系统崩溃等问题而发生漏通知的情况。


为解决这些问题,就要用到消息队列 RocketMQ 的“削峰填谷”功能,可在应用和下游通知系统之间加入消息队列 RocketMQ,RocketMQ 支持高并发的消息低延迟写入,以及无限的堆积能力,可以避免超高流量的冲击,确保下游业务在安全水位内平滑稳定的运行。


4.png


武器三:“分布式事务消息”


背景:通过前面的介绍了解到,通过消息的异步解耦,可实现消息的分布式处理,在传统的分布式事务处理方式中,用户创建了一条新的订单信息,伴着这条订单信息的变更,在整个业务链条中的购物车、用户表、积分等都需要变更,系统需要借助分布式事务协调组件来保证多个业务调用的事务一致性。传统的分布式事务组件追求强一致性,性能吞吐低,系统复杂。那如何才能既实现分布式事务,同时又不使系统过于复杂?


这个时候消息队列 RocketMQ 的“分布式事务消息”的功能便起到了关键作用,通过原创的轻量级订单流转事务协调能力,只需发送一条消息,就可以实现消息最终一致性的分布式事务,同时确保订单状态持久化和下游调用一致。


5.png


武器四:“消息过滤”


背景:通过以上介绍会发现从客户下单到客户收到商品这一过程会生产一系列消息,按消息种类可以分为交易消息、物流消息、购物车消息等,如何保证各个种类的消息进行有效投递并被准确消费?


这时候就要用到消息队列 RocketMQ 的“消息过滤”功能,可以通过 Tag 给不同种类的消息定义不同的属性,根据消息属性设置过滤条件对消息进行过滤,只有符合过滤条件的消息才会被投递到消费端进行消费。比如给物流消息定义地域属性,按照地域分为杭州和上海:

  • 订单消息
  • 物流消息
  • 物流消息且地域为杭州
  • 物流消息且地域为上海


6.png


武器五:“定时消息”


背景:除了以上系统级别中可能出现的问题外,用户自己在购物过程中可能都遇到过一些小细节,比如在点击了购买按钮后,会出现“请您在 30 分钟内完成支付”的提示,如果超过 30 分钟未支付,订单就会自动关闭。


这个业务用到的是消息队列 RocketMQ 的“定时消息”功能,消息队列 RocketMQ 可以实现自定义秒级精度间隔的定时消息,通过消息触发一些定时任务,比如在某一固定时间点向用户发送提醒消息,最终实现海量订单状态变更超时的中心调度。


7.png


image.gif武器六:“顺序收发”


背景:在双 11 大促中,买家业务侧和交易系统本身会面临诸多问题,卖家侧也会遇到一些难点,比如,买家买了东西,卖家自己却看不到。


为了解决这个问题,一般需要使用消息队列的顺序消息同步能力将买家表的变更订阅同步到卖家表。此时依赖 RocketMQ 的无热点、高性能、高可靠顺序消息可以保障数据库变更的顺序同步,保证买卖家订单同步。


8.png





相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
7天前
|
消息中间件 网络安全 RocketMQ
消息队列 MQ产品使用合集之配置controller时,出现无法选举master,该怎么解决
阿里云消息队列MQ(Message Queue)是一种高可用、高性能的消息中间件服务,它允许您在分布式应用的不同组件之间异步传递消息,从而实现系统解耦、流量削峰填谷以及提高系统的可扩展性和灵活性。以下是使用阿里云消息队列MQ产品的关键点和最佳实践合集。
|
7天前
|
消息中间件 RocketMQ Apache
消息队列 MQ产品使用合集之如何修改proxy的端口
阿里云消息队列MQ(Message Queue)是一种高可用、高性能的消息中间件服务,它允许您在分布式应用的不同组件之间异步传递消息,从而实现系统解耦、流量削峰填谷以及提高系统的可扩展性和灵活性。以下是使用阿里云消息队列MQ产品的关键点和最佳实践合集。
|
1天前
|
消息中间件 自然语言处理 负载均衡
RabbitMQ揭秘:轻量级消息队列的优缺点全解析
**RabbitMQ简介** RabbitMQ是源自电信行业的消息中间件,支持AMQP协议,提供轻量、快速且易于部署的解决方案。它拥有灵活的路由配置,广泛的语言支持,适用于异步处理、负载均衡、日志收集和微服务通信等场景。然而,当面临大量消息堆积或高吞吐量需求时,性能可能会下降,并且扩展和开发成本相对较高。
13 0
|
5天前
|
消息中间件 中间件
中间件消息队列的优势流量削峰
【6月更文挑战第7天】
12 3
|
7天前
|
消息中间件 测试技术 开发工具
消息队列 MQ操作报错合集之收到"WARN RocketmqClient - consumeMessage Orderly return"警告,是什么原因
在使用消息队列MQ时,可能会遇到各种报错情况。以下是一些常见的错误场景、可能的原因以及解决建议的汇总:1.连接错误、2.消息发送失败、3.消息消费报错、4.消息重试与死信处理、5.资源与权限问题、6.配置错误、7.系统资源限制、8.版本兼容性问题。
|
7天前
|
消息中间件 设计模式 网络安全
消息队列 MQ操作报错合集之broker启用controller配置时,遇到报错,是什么导致的
在使用消息队列MQ时,可能会遇到各种报错情况。以下是一些常见的错误场景、可能的原因以及解决建议的汇总:1.连接错误、2.消息发送失败、3.消息消费报错、4.消息重试与死信处理、5.资源与权限问题、6.配置错误、7.系统资源限制、8.版本兼容性问题。
|
7天前
|
消息中间件 Java 测试技术
消息队列 MQ操作报错合集之设置了setKeepAliveInterval(1)但仍然出现客户端未连接,该怎么解决
在使用消息队列MQ时,可能会遇到各种报错情况。以下是一些常见的错误场景、可能的原因以及解决建议的汇总:1.连接错误、2.消息发送失败、3.消息消费报错、4.消息重试与死信处理、5.资源与权限问题、6.配置错误、7.系统资源限制、8.版本兼容性问题。
|
7天前
|
消息中间件 Apache RocketMQ
消息队列 MQ操作报错合集之设置了controller后,有一主一从,但只显示一个,该怎么解决
在使用消息队列MQ时,可能会遇到各种报错情况。以下是一些常见的错误场景、可能的原因以及解决建议的汇总:1.连接错误、2.消息发送失败、3.消息消费报错、4.消息重试与死信处理、5.资源与权限问题、6.配置错误、7.系统资源限制、8.版本兼容性问题。
|
7天前
|
消息中间件 网络安全 网络虚拟化
消息队列 MQ操作报错合集之如何实现公网访问内网RocketMQ集群
在使用消息队列MQ时,可能会遇到各种报错情况。以下是一些常见的错误场景、可能的原因以及解决建议的汇总:1.连接错误、2.消息发送失败、3.消息消费报错、4.消息重试与死信处理、5.资源与权限问题、6.配置错误、7.系统资源限制、8.版本兼容性问题。
|
7天前
|
消息中间件 RocketMQ
消息队列 MQ操作报错合集之无法自动创建topic,该怎么办
在使用消息队列MQ时,可能会遇到各种报错情况。以下是一些常见的错误场景、可能的原因以及解决建议的汇总:1.连接错误、2.消息发送失败、3.消息消费报错、4.消息重试与死信处理、5.资源与权限问题、6.配置错误、7.系统资源限制、8.版本兼容性问题。

热门文章

最新文章

相关产品

  • 云消息队列 MQ