当前位置: 首页 > 科技观察

还在为秒杀而苦恼吗?来看看MQ是怎么处理的

时间:2023-03-22 12:43:04 科技观察

前言我们简单回顾一下,订单系统是整个电商交易平台的核心。在处理内部模块和外部第三方系统的过程中,需要完成很多额外的步骤:为用户发放红包、优惠券、库存扣减通知、物流系统发送短信通知引入MQ后,我们可以让订单系统只完成最核心的功能,然后向MQ发送消息。比如你需要减少库存,你可以向库存消息队列发送消息,然后库存系统就可以从这个MQ中获取消息,然后进行处理。这些耗时的步骤被缓慢执行,从而实现了系统间的通信。解耦。但是MQ还有一个更强大的功能:缓冲流量,削峰填谷,比如双11,瞬间大量的订单请求可能会直接压垮服务器,导致整个系统瘫痪,通过使用MQ我们可以更好地解决流量高峰的问题。本文基于秒杀场景,看完你会有更清晰的认识。本文将从以下几个方面介绍相关知识。相信大家耐心看完后都会有所收获。编码单词并不容易。不要忘记“观看”和“转发”。经典闪杀场景流量洪峰带来的难点使用MQ削峰填谷升级整体架构文01经典闪杀场景闪杀场景一般出现在类电商APP中。双十一、618等大优惠屡见不鲜。各种节日都可以成为买手的理由。就连饥饿营销也被大公司玩得越来越多。像我自己,我喜欢运动鞋,我喜欢买AJ和椰子。有过抢鞋经历的同学一定知道有多痛苦,尤其是每次都是这样的结果。图片。每年双11活动都会在午夜后开启特别大优惠。例如,如果您在前五分钟内下单并购买了五件商品,则可以享受30%的折扣。无数全中国的少男少女都会在双11前几天在购物车里精心挑选大量商品,等到了半夜,疯狂点击下单。每个接口对应的业务复杂度不同。对于某些接口,一个请求可能需要五六个数据库操作。即使我们使用高配置的16核32G和SSD固态硬盘机器,当流量高峰到来时,CPU、磁盘、IO等负载也会骤然飙升。一段时间后,系统将无法处理连续的请求。02流量泛滥带来的困难经典的秒杀场景主要有两个特点:(1)秒杀过程中会出现大量用户同时抢购,网站流量瞬间暴涨;盘点数量,仅需少量用户即可秒杀成功。随后,给我们的系统带来了一系列的需求:(1)并发量在短时间内急剧增加,给系统造成很大的压力,容易造成崩溃;写多,场景少,如何分配流量;(3)如何在分布式环境下实现一致性处理;(4)如何在竞争资源有限的情况下实现精准把控,准时准时,不多买,不少卖,不重复买。在这么多困难中,我们的首要任务就是解决并发激增的问题。如果过多的传入请求直接压垮了服务器,那么其他功能就无从谈起了。03使用MQ削峰填谷除了使用异步的方式实现系统间的解耦,MQ还可以在Double等尖峰事件中通过削峰填谷的方式处理瞬间涌入的大量请求11、什么是削峰填谷?削峰填谷本身就是电力行业的概念。电力企业通过必要的技术和管理手段,降低电网的高峰负荷,增加低负荷,平滑负荷曲线,提高负荷率,确保电网的稳定。跑步。考虑一个每秒可以处理1000个请求的应用程序。如果第一秒收到2000个请求,接下来的两秒没有请求到达。整个应用肯定面临两个问题:(1)第一秒直接被2000个请求压垮;(2)假设第一秒没有被压垮,这一秒只能处理1000个请求,第二秒和第三秒完全空闲,浪费系统资源。因此,我们可以利用MQ将请求尖峰在一段时间内平均分散,使系统负载保持在请求处理水平内,同时处理尽可能多的请求,从而达到“削峰填谷”的效果和填平山谷”。红色部分是超出系统处理能力的部分,可以将红色部分的消息分散开,等空闲的时候再处理,这样可以让系统负载保持在一个稳定的水平,更多的消息可以尽可能地进行处理。通过配置流控规则,可以达到消息均速处理的效果。04升级系统架构随着越来越多的用户使用应用,系统的压力也会越来越大。无论是并发量还是数据量,你都会发现整个系统的每个模块都需要优化。高并发、大数据量的系统架构需要不断的迭代和演进,涉及大量的技术方案和架构重构。对于秒杀场景,上游发起一个高并发的排序操作。由于下游处理能力有限,两端速度不匹配。这个时候我们引入MQ对流量进行缓冲,实现削峰填谷。上行速度很快,你每秒发起5万个请求也没关系,直接发给MQ就行了。下游系统虽然每秒只能处理1000个请求,但是可以按照自己的节奏,每隔一段时间主动拉取几条信息,实现限流的效果,保护自己。这个过程中只需要引入MQ组件,上下游业务代码没有太多修改。下一篇我会更详细的介绍,使用目前主流的消息中间件RocketMQ来实现,敬请期待~本文转载自微信公众号“程序员王”,可以通过以下方式关注二维码。转载本文请联系程序员大帝公众号。