秒杀系统策略

       **                                对于秒杀系统,他是典型的读多写少的场景          **

这个场景的难点是:读写冲突,锁非常严重。

将请求尽量拦截在系统上游,然后充分利用缓存,将大部分的请求拦截后再写入数据库。

系统层次的划分,前端,web层,业务逻辑层,DB持久层。

前端:

把活动页面上所有的可以静态的元素全部静态化,通过CDN来抗峰值  
通过扩容增加前端池的承载量来抗峰值  
把抢购按钮设置成点击一次就变灰,防止更多的无效的请求传入进来  
采用IP级别的限流,限制单个IP在单位时间发起的请求量  

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

web 层:
集群的负载均衡,节点能够线性扩展
采用短连接,连接池

业务服务:
查询模块(并发查询),库存数存在缓存中,(商品信息和图片信息等等)静态化处理和库存剩余数量缓存处理
下单模块(秒杀的关键部分),使用控制异步化处理,首先判断这个队列是否已满,如果没满就将请求放入队列中排队,队列满以后的所有请求直接返回秒杀失败
支付模块,异步付款,等待付款成功结果。(付款成功更新库存,也可下单的时候扣库存)

DB持久层:

各个系统的业务数据分库储存,主从读写分离,单个子系统的数据,可以通过分库、分表的方法。

构建合理数据库索引,如对购买记录添加唯一索引,数据更新检测库存,如update number set x= x -1 where (x - 1 )>=0

猜你喜欢

转载自blog.csdn.net/weixin_38994840/article/details/82913306