做抢购类型的业务的时候首先要看业务情况,如果只是内部活动,比如年终年会抽奖,竞赛抢答这种不涉及财务的高并发,这种需求不会涉及到脚本等不公平竞争的情况,需要一个超级管理者,开启抢答权限,人数少的情况下可以直接对程序加锁,因为不涉及后续业务处理,只需要现场确定谁抢中,并发效率很高,参与人数多,可以使用CAS,并发可达几千。
做生产的抢购业务较为复杂。
前端:1.动静分离,CDN加速 2.限流,禁止重复提交,到点开放按钮,单位时间单次点击 3.接口防刷,URL动态化
后端:1.redis 保存库存,抢到就生成一个订单号,然后所有的其他信息放到mq削峰 2.单一职责,独立服务器 3.,Redis集群,
主从同步、读写分离,我们还搞点哨兵,开启持久化高可用 4.扣减redis库存,用LUA,管道,乐观锁等,
4.降级熔断隔离 5.数据库分库分表 6.TCC及最终一致性丢弃(效率低),采用2PC 3PC
风控:丢弃有任何疑问的USERID
网友评论