zoukankan      html  css  js  c++  java
  • 秒杀系统设计

      秒杀系统在很多平台都有,小米手机的秒杀购买,京东618,淘宝双11等等。

    秒杀系统特点

       1. 瞬时流量突增

        秒杀活动一般会定某个特定时间开启,大量用户请求在活动开始的瞬间涌入,会给服务造成极大的压力。

        2. 持续时间短

        一半秒杀活动持续时间比较短,可能几个小时就结束了。

        3. 对数据的争抢,数据一致性要求很高

        秒杀中的最大压力就是对商品库存的并发争抢,秒杀一般是访问请求数量远远大于库存数量,只有少部分用户能够秒杀成功

        商品秒杀可以简单分为两步,第一步锁单,第二步支付。锁单是用户在获得秒杀资格的时候能够及时占用库存,库存中心也能及时减库存。在获得秒杀资格后,要能够及时让用户支付,否则会因为无法支付引起客诉。

    秒杀系统需要解决问题  

      1. 对现有业务的冲击

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

      2. 高并发导致系统负载高

      3. 突然增加的网络与服务带宽

      4. 超发设计  

        当库存数量有限,如何有效控制商品超卖是秒杀系统不可避免的一个问题。

      5. 木桶短板理论,整个系统的瓶颈往往都在 DB,如何设计出高并发、高可用系统  

      6. 友好的用户体验,用户不能接受破窗的体验,例如:系统超时、系统错误的提示,或者直接 404 页面

      

    秒杀系统架构设计思想

      1. 限流

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

      2. 削峰

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

      3. 异步处理

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

      4. 缓存

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

        5. 动静分离

        将大量静态资源进行CDN缓存,减少后端服务器的请求压力。

  • 相关阅读:
    【题解】Luogu P4391 [BOI2009]Radio Transmission 无线传输
    kmp匹配详解
    点分治详解
    【题解】Luogu P3871 [TJOI2010]中位数
    树链剖分详解
    【题解】Luogu P3901 数列找不同
    【题解】Luogu P1503 鬼子进村
    【题解】 P2234 [HNOI2002]营业额统计
    Splay详解
    JSOI2020备考知识点复习
  • 原文地址:https://www.cnblogs.com/songgj/p/14260030.html
Copyright © 2011-2022 走看看