京东高并发秒杀系统

178 篇文章 7 订阅
51 篇文章 0 订阅
秒杀场景下,系统需承受瞬间流量洪峰,保证数据一致性及防止超卖。设计要点包括防刷机制、数据分层校验、限流、流量削峰、异步处理、内存缓存、动静分离、主备容灾和可拓展性。通过这些策略,确保秒杀活动的稳定运行。
摘要由CSDN通过智能技术生成

秒杀是互联网应用常见的应用场景,比如淘宝双十一、京东618,以及一些交易网站或应用在特定的时间举行的抢购活动。由于商品的稀缺或者特价优惠,并且为限量销售,导致大量用户前来抢购,并且会在约定的秒杀开始时间点同时进行抢购,造成服务器巨大的访问压力,对于一个秒杀系统,需要有特殊的设计才可解决秒杀场景下的巨大流量洪峰以及数据的一致性问题。

秒杀系统场景的主要特点

秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问流量激增。

秒杀一般是访问请求数量远远大于库存数量,只有少部分用户能够秒杀成功。

blob.png

秒杀架构设计理念

防刷设计:设计有效的防刷机制,有效拦截无效请求,避免用户恶意调用秒杀相关接口。

数据分层校验:尽可能在不同层将无效请求拦截并过滤掉,让真正有效的请求落入后端服务。

限流: 鉴于只有少部分用户能够秒杀成功,所以要限制大部分流量,只允许少部分流量进入服务后端。

流量削峰:对于秒杀系统瞬时会有大量用户涌入,所以在抢购一开始会有很高的瞬间流量峰值。高峰值流量是压垮系统很重要的原因,所以如何把瞬间的高峰流量变成一段时间内的平稳流量是设计秒杀系统很重要的思路,实现削峰的常用的方法是利用缓存和消息中间件等技术。

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

异步处理:秒杀系统是一个高并发系统,采用异步处理模式可以极大地提高系统并发量,当然异步处理也是削峰的一种实现方式。

内存缓存:秒杀系统最大的瓶颈一般都是数据库读写,由于数据库读写属于磁盘IO,性能很低,如果能够把部分数据或业务逻辑转移到内存缓存,效率会有极大地提升。

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

主备容灾:在有条件的情况下做好主备容灾,提前预防被恶意攻击;

可拓展:当然如果我们想支持更多用户,更大的并发,最好将系统设计成弹性可拓展的,如果流量迅速增大,拓展机器即可。像淘宝、京东等双十一活动时会增加大量服务器来应对流量洪峰。

来源:京东高并发秒杀系统 - 动力节点 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值