秒杀系统设计思路

负载均衡

LVS只做请求分发,不承接流量,所以QPS远超nginx。但是,功能赶不上nginx,比如转发出去的请求,如果后端服务器突然挂掉,nginx能够再次转发到其他服务器,而LVS做不到。
参考:https://www.cnblogs.com/arjenlee/p/9262737.html

CDN动静分离
限制单用户的请求次数
重复订单处理
黑IP处理
防止恶意下单,不支付

隔离熔断限流降级

本地+远程预扣库存
本地预扣库存解决高并发问题,库存均分到多个本地服务,每个服务最多卖这么多。
远程扣库存防止少卖,某个本地服务挂掉之后,会导致少卖,可以增加本地buff进行修正。
批量扣减远程数据库,解决远程redis的高并发问题。实际上批量扣减的时机不太好确定,导致超卖。
相对稳妥的方案是,首先预扣库存时故意超卖,生成订单时,再精准扣库存。

参考:https://blog.csdn.net/easylife206/article/details/104096892

预扣库存成功,通过消息队列发给订单管理服务。

订单创建成功,等待用户支付,用户支付成功,修改订单状态到待发货状态。

订单超时未支付的处理方案
1、定时任务
2、被动取消,用户或者商户查询的时候才去判断是否超时。如果用户不查询,就会一直存在,影响库存恢复,可以使用被动取消+定时任务的方式。
3、时间轮算法,目前常用的处理手段,RocketMQ、RabbitMQ都支持。
4、使用jdk的延时队列,只有超时消费者才能消费。
5、redis的zset
参考:https://blog.csdn.net/xmtblog/article/details/102763339

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值