负载均衡
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