时间:2022-08-28 14:02:19来源:网络整理
前言
最近,部门一直在讨论电子商务业务秒杀活动的总体思路。大家对这个讨论的反馈还不错,所以我简单整理了一下,分享给大家参考
业务介绍
概念
秒杀
什么是尖峰?通俗的讲,就是网上商家为了促销等目的而组织的网上购物活动。
比如京东的秒杀就是定时定量的秒杀。在规定时间内,无论产品的秒杀是否完成,该会话的秒杀活动都会结束。这种秒杀对时间的要求不是特别严格。只要起步快,几秒命中的概率还是比较大的。
淘宝之前做过一元抢购,一般限1件,价格“吓人”。这种秒杀通常在开始时间的1到3秒内售罄。参与本次秒杀一般是运气问题,不要太勉强
业务特点
大量瞬时并发
秒杀期间,大量用户同时抢购,瞬间并发访问量猛增10倍,甚至100倍以上。
库存不足
一般秒杀活动中的产品很少,导致只有极少数用户能够成功购买到产品。
简单的业务
流程比较简单,一般下单电商系统 高并发库存系统设计,扣库存,下单付款
技术难题
现有业务的影响
秒杀是一种营销活动。如果和其他营销活动应用部署在同一台服务器上,肯定会对现有的其他活动产生影响。极端情况下,可能会导致整个电商系统服务宕机。
直接下单
订购页面是一个普通的URL地址。需要在秒杀开始前进行控制。无法下单,只能浏览对应的活跃商品信息。简而言之,禁用订单按钮是必需的
页面流量突然增加
秒杀事件前后,会有很多用户请求对应的商品页面,这会导致后台服务器的流量突然增加,同时对应的网络带宽也会增加。造成压力过大
建筑设计理念
电流限制
因为秒杀活动的库存一般很少,只有少数用户可以成功秒杀。因此可以限制大部分用户流量,只允许少量用户流量进入后端服务器
削峰
秒杀开始的那一刻,会有大量的用户进来,所以一开始会有一个瞬间的流量高峰。如何让瞬时流量峰值更加平缓是秒杀系统设计成功的关键因素。实现流量高峰和低谷,一般使用缓存和MQ中间件来解决问题
异步
Seckill 实际上可以作为一个高并发系统来处理。这时候可以考虑做业务兼容,把同步业务设计成异步处理任务,提高网站的整体可用性
缓存
秒杀系统的瓶颈主要体现在下单和扣货的过程中。在这些流程中,主要使用OLTP数据库,如MySQL、SQLServer、Oracle等。由于数据库底层采用B+树的存储结构,随机读写效率比较低。如果我们把一些业务逻辑迁移到内存缓存或者Redis上,会大大提高并发效率
整体架构
客户端优化
客户端优化有两个主要问题
秒杀页面
在 Lightning Deal 开始之前,许多用户实际上访问了该页面。如果这个页面的一些资源,如CSS、JS、图片、产品详情等,访问后端服务器,甚至是DB,服务肯定会不可用。所以一般情况下,我们会将整个页面静态化,将页面静态化后的页面分发到CDN边缘节点,起到分散压力的作用
阻止下单
主要通过在静态页面添加JS文件引用来防止下单。 js文件开头包含activity是否启动的标志和动态订单页面的url参数。同时这个JS文件不会被CDN系统缓存,会一直请求后端服务,所以这个JS文件一定要小。在activity即将启动时(如提前),通过后台界面修改js文件使其生效
API 访问层优化
对于不从事计算机方面的用户,可以防止客户端优化。但是有一定网络基础的用户是不行的,所以服务端也需要添加一些相应的控件,不能信任客户端的任何操作。一般控制分为2类
限制用户维度访问频率
对于同一个用户(Userid维度),做页面级缓存,单位时间请求,统一走缓存,返回同一个页面
限制产品维度的访问频率
当同一时间有大量请求查询同一个产品时,可以做页面级缓存。不管谁下次访问,只要是这个页面,都会直接返回
SOA服务层优化总结
上两层只能限制异常用户的访问。如果秒杀活动运行良好,并且有很多用户参与,会造成系统压力过大甚至宕机,需要后端流量控制
后端系统的控制可以通过消息队列、异步处理、提高并发等方式来解决。对于超过系统水位的请求,直接采用“Fail-Fast”原则电商系统 高并发库存系统设计,拒绝
秒杀整体流程图
秒杀系统的核心在于逐层过滤,逐步降低瞬时访问压力,减少最终对数据库的影响。通过上面的流程图,你会发现压力最大的地方在哪里?
MQ排队服务,只要MQ排队服务能承受,下单、扣库存的压力都可以自己控制。根据数据库的压力,可以自定义订单消费者的数量,避免消费者数据的出现。卷太大会导致数据库压力过大或直接停机。
库存服务提供秒杀产品的库存管理,可以提前锁定库存,避免超卖。同时,通过超时处理任务,发现已经抢到货了,但是订单还没有付款,等到指定的付款时间后,这些订单就会被处理,以及下单商品对应的库存会恢复的
总结
核心思想:逐层过滤
尽量拦截上游的请求,减轻下游压力
充分利用缓存和消息队列,提高请求处理速度和削峰填谷的作用
声明:文章仅代表原作者观点,不代表本站立场;如有侵权、违规,可直接反馈本站,我们将会作修改或删除处理。
图文推荐
2022-08-28 14:01:57
2022-08-28 13:10:14
2022-08-28 13:03:20
2022-08-28 12:10:04
2022-08-28 12:03:04
2022-08-28 11:03:32
热点排行
精彩文章
2022-08-26 19:10:18
2022-08-26 17:10:19
2022-08-26 14:01:10
2022-08-26 12:01:51
2022-08-26 10:01:08
2022-08-25 19:10:31
热门推荐