作者:曹林华

https://blog.51cto.com/13527416/2085258

前言

最近在部门内部分享了原来在电商业务做秒杀活动的整体思路,大家对这次分享反馈还不错,所以我就简单整理了一下,分享给大家参考参考

业务介绍

什么是秒杀?通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动

比如说京东秒杀,就是一种定时定量秒杀,在规定的时间内,无论商品是否秒杀完毕,该场次的秒杀活动都会结束。这种秒杀,对时间不是特别严格,只要下手快点,秒中的概率还是比较大的。

淘宝以前就做过一元抢购,一般都是限量 1 件商品,同时价格低到「令人发齿」,这种秒杀一般都在开始时间 1 到 3 秒内就已经抢光了,参与这个秒杀一般都是看运气的,不必太强求

业务特点

瞬时并发量大

秒杀时会有大量用户在同一时间进行抢购,瞬时并发访问量突增 10 倍,甚至 100 倍以上都有。

库存量少

一般秒杀活动商品量很少,这就导致了只有极少量用户能成功购买到。

业务简单

流程比较简单,一般都是下订单、扣库存、支付订单

技术难点

现有业务的冲击

秒杀是营销活动中的一种,如果和其他营销活动应用部署在同一服务器上,肯定会对现有其他活动造成冲击,极端情况下可能导致整个电商系统服务宕机

直接下订单

下单页面是一个正常的 URL 地址,需要控制在秒杀开始前,不能下订单,只能浏览对应活动商品的信息。简单来说,需要 Disable 订单按钮

页面流量突增

秒杀活动开始前后,会有很多用户请求对应商品页面,会造成后台服务器的流量突增,同时对应的网络带宽增加,需要控制商品页面的流量不会对后台服务器、DB、Redis 等组件的造成过大的压力

架构设计思想

限流

由于活动库存量一般都是很少,对应的只有少部分用户才能秒杀成功。所以我们需要限制大部分用户流量,只准少量用户流量进入后端服务器

削峰

秒杀开始的那一瞬间,会有大量用户冲击进来,所以在开始时候会有一个瞬间流量峰值。如何把瞬间的流量峰值变得更平缓,是能否成功设计好秒杀系统的关键因素。实现流量削峰填谷,一般的采用缓存和 MQ 中间件来解决

异步

秒杀其实可以当做高并发系统来处理,在这个时候,可以考虑从业务上做兼容,将同步的业务,设计成异步处理的任务,提高网站的整体可用性

缓存

秒杀系统的瓶颈主要体现在下订单、扣减库存流程中。在这些流程中主要用到 OLTP 的数据库,类似 MySQL、SQLServer、Oracle。由于数据库底层采用 B+ 树的储存结构,对应我们随机写入与读取的效率,相对较低。如果我们把部分业务逻辑迁移到内存的缓存或者 Redis 中,会极大的提高并发效率

整体架构

客户端优化

客户端优化主要有两个问题

秒杀页面

秒杀活动开始前,其实就有很多用户访问该页面了。如果这个页面的一些资源,比如 CSS、JS、图片、商品详情等,都访问后端服务器,甚至 DB 的话,服务肯定会出现不可用的情况。所以一般我们会把这个页面整体进行静态化,并将页面静态化之后的页面分发到 CDN 边缘节点上,起到压力分散的作用

防止提前下单

防止提前下单主要是在静态化页面中加入一个 JS 文件引用,该 JS 文件包含活动是否开始的标记以及开始时的动态下单页面的 URL 参数。同时,这个 JS 文件是不会被 CDN 系统缓存的,会一直请求后端服务的,所以这个 JS 文件一定要很小。当活动快开始的时候(比如提前),通过后台接口修改这个 JS 文件使之生效

API 接入层优化

客户端优化,对于不是搞计算机方面的用户还是可以防止住的。但是稍有一定网络基础的用户就起不到作用了,因此服务端也需要加些对应控制,不能信任客户端的任何操作。一般控制分为 2 大类

限制用户维度访问频率

针对同一个用户( Userid 维度),做页面级别缓存,单元时间内的请求,统一走缓存,返回同一个页面

限制商品维度访问频率

大量请求同时间段查询同一个商品时,可以做页面级别缓存,不管下回是谁来访问,只要是这个页面就直接返回

SOA 服务层优化

上面两层只能限制异常用户访问,如果秒杀活动运营的比较好,很多用户都参加了,就会造成系统压力过大甚至宕机,因此需要后端流量控制

对于后端系统的控制可以通过消息队列、异步处理、提高并发等方式解决。对于超过系统水位线的请求,直接采取 「Fail-Fast」原则,拒绝掉

秒杀整体流程图

秒杀系统核心在于层层过滤,逐渐递减瞬时访问压力,减少最终对数据库的冲击。通过上面流程图就会发现压力最大的地方在哪里?

MQ 排队服务,只要 MQ 排队服务顶住,后面下订单与扣减库存的压力都是自己能控制的,根据数据库的压力,可以定制化创建订单消费者的数量,避免出现消费者数据量过多,导致数据库压力过大或者直接宕机。

库存服务专门为秒杀的商品提供库存管理,实现提前锁定库存,避免超卖的现象。同时,通过超时处理任务发现已抢到商品,但未付款的订单,并在规定付款时间后,处理这些订单,将恢复订单商品对应的库存量

总结

核心思想:层层过滤

  • 尽量将请求拦截在上游,降低下游的压力

  • 充分利用缓存与消息队列,提高请求处理速度以及削峰填谷的作用

dotNET名人堂,主要分享.NET core各种技术文章,以及架构设计,管理技巧等干货,希望在这里通过实战能让你全新认识.NET core相关技术,项目架构,大数据处理,高并发,高耦合相关问题欢迎留言与我探讨。

作者微信ID:tangguo_9669

好文章,点我在看 

电商扣减库存_电商系统秒杀架构设计相关推荐

  1. 电商扣减库存_电商之购物车

    我从刚开始做产品起,就只想做电商,对医疗.教育类的都不太感兴趣.公司转型做电商,整个电商模块重构,有幸负责购物流程优化,之后支付中心和订单中心都会相继优化,今天先来讲购物车. 一.购物车目的 任何产品 ...

  2. 电商扣减库存_电商平台仓库管理系统究竟有何功能?

    仓库管理系统能有效控制并跟踪仓库业务的物流和成本管理全过程,实现完善的企业仓储信息管理.本文介绍了仓库管理的概念,商品与仓库的联系,商品发货的调度中心以及其他附加功能,与大家分享! 仓库管理系统(Wa ...

  3. 电商扣减库存_电商仓库管理的难点与解决方案

    在我国,目前有很多小型电商企业,其仓库面积都在1000平以内,由于前期对营销的专注,对仓库的忽视,包括对设施设备的投入,导致了今天仓库工作效率低下,库存混乱,运作成本高等诸多问题,以下我们来细细诉说. ...

  4. 电商扣减库存_电商库存体系设计

    库存是什么? 百度百科:库存(inventory)是以支持生产,维护,操作和客户服务为目的而存储的各种物料,包括原材料和在制品,维修件和生产消耗品,成品和备件等: 狭义:"仓库里存放东西&q ...

  5. 电商扣减库存_电商新零售库存分层模型介绍

    01 电商新零售库存分层 梳理完中央库存的逻辑以后,下一步需要整理上下游的库存交互.在整个电商体系中,库存会存在于供应链的多个业务环节中,按照系统的分工不同,小Q将库存抽象为两类三层: 1.两类库存: ...

  6. 电商扣减库存_电商后台:商品库存管理之批次管理

    本文主要对电商平台的库存系统中的批次管理进行了详细的阐述,一起来看看~ 一.批次管理 库存,是电商企业不能回避的问题,如何让仓库商品能够有序的流转,是电商供应链管理后台的重中之重,也是电商企业的命门. ...

  7. 电商扣减库存_竞争激烈的电商市场,小型仓储外包服务解决了中小电商的后顾之忧...

    随着网购消费者要求的提高,以及各大电商巨头向各个领域.品类的扩张,越来越多的中小电商感叹利润微薄,电商生意不好做.但这些并不是中小电商最担心的问题,它们面临的最大问题如何解决符合自身需求的仓储问题? ...

  8. 电商扣减库存_经验分享:电商库存体系设计笔记

    最近在做仓库库存管理相关的项目,清晰地了解了仓库是如何管理库存的,并且整清楚了各个系统的库存是如何交互的,整理了下分享给大家. 库存是什么 这里是百度百科给出的解释: "库存(invento ...

  9. 电商扣减库存_库存管理:看懂库存扣减方式,至少不会卖错货

    在电商后台库存管理系统中,看懂库存扣减方式,是很重要的,最起码可以避免不要卖错货. 在电商后台库存管理系统中,影响库存的行为,主要是入库和出库,出入库的主要内容可分为货位.调拨业务.盘点业务. 1)货 ...

最新文章

  1. 30充电宝多少毫安_10000毫安充电宝品牌排行?2020年高性价比10000mAh移动电源推荐...
  2. 利用线程池为线程创建一个守护线程
  3. CSS中属性的值和单位
  4. linux ps 显示不了中文,enscript转txt为ps文件时中文变成乱码
  5. python 释放内存_学了4年C++后,我转向了Python
  6. 用user-selection实现让页面上的内容不能被选中
  7. 我眼中的“SSD” ..update
  8. ubuntu修改启动项等待时间、修改启动项顺序、更改启动内核
  9. 9000多篇投稿,接收率只有15%,今年的AAAI你中了吗?
  10. linux环境判断nginx是否已经启动
  11. Windows Server 2003 SP2 中文版下载
  12. 分享一个强大的4K/8K超高清视频下载器
  13. ubuntu16.04 gnome环境,怎么样下载使用monaco字体
  14. 第五届电气学院比赛之XXX——数码管显示模块
  15. 一年级上册计算机教学计划,一年级上学期教学计划
  16. CIO:人工智能将改变企业IT
  17. 基于android平台的语音机器人服务娱乐系统
  18. Unity 中英文转换
  19. 【APICloud系列|15】上架ios应用到苹果应用市场总结
  20. android 重映射按键,键盘重映射的终极教程 | MOS86

热门文章

  1. 燃烧吧!开发者们,一起在云端构建开放成熟的 ARM 生态!
  2. “引才入湘”大行动正式启动,CSDN携手万兴科技助力长沙打造人才品牌
  3. “刚毕业1年,做Python能挣多少?”网友:吹的不多...
  4. 阿里云科学家入选计算机顶会 HPCA 名人堂,他是什么来头?
  5. 没错!Python 杀死了 Excel!
  6. 详实!DevOps 最新现状研究报告解读 | 原力计划
  7. 远程办公一晃一天,环境搭建履步维艰
  8. 开源操作系统年度技术会议图文直播
  9. 如何从零开始制作智能桌宠?
  10. 全面解析腾讯最新开源 loT 操作系统 TencentOS tiny!