您的位置:首页 > 房产 > 建筑 > 秒杀系统设计

秒杀系统设计

2024/12/22 2:49:30 来源:https://blog.csdn.net/weixin_39480141/article/details/141750990  浏览:    关键词:秒杀系统设计

分析:
1,瞬间流量非常大,不能用堆机器的方式来提高QPS
2,秒杀商品库存少,人数多,服务器短时间内压力大。
3,秒杀开始之前,刷新量很大,造成服务器压力。
总结出一个秒杀系统中的关键点要满足高并发,快响应,防止超卖,防止恶意刷子问题
设计:
1,秒杀入口设置开关设计
2,订单后续逻辑设置成异步
3,订单失败补偿机制
4,服务降级。
方案:
1,满足高并发,热点数据预加载,配置专门的MQ.前端页面静态化,服务器负责均衡配置。
2,防止超卖,可以在秒杀活动开始之前把库存数据,商品信息同步到redis缓存,在秒杀时,判断库存是否充足和扣减库存这两个动作使用lua脚本,保证数据原子性,防止超卖。
3,防止刷子,可以通过限流,用户ID限流,同一IP地址限流,做了限流之后,能够防止一些无效的请求,减轻服务器压力。
4,秒杀入口开关设计,在秒杀 开始之前将秒杀按钮设置为禁止,将秒杀链接隐藏,将秒杀链接进行加密处理。
5,订单后续逻辑设置成异步,可以将秒杀成功的消息放入mq,后续服务异步反馈给用户。
6.订单失败补偿:设置订单失败机制保证订单一定能成功,在秒杀成功后,要保证订单一定处理成功,用MQ进行驱动,失败重试,加报警机制,保证及时监控到报警。
7,服务降级:服务出现问题,或bug,开启服务降级开关,禁止下单及时止损。
解决秒杀超卖少买问题:
Redi缓存:
当用户在前端下单时,我们通过操作Redis对商品的库存进行扣减,在扣减完Redis中的库存后再把扣减成功的消息发送到消息队列,之后交给具体的业务系统处理。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com