- 秒杀系统面临的技术挑战:
- 访问量大,对网络带宽要求高
- 系统如何支持瞬间的高并发
- 如何防止商品超卖
- 如何防刷、防黄牛等
- 解决方案:
- CDN缓存,nginx+lua实现活动数据缓存2秒
- 高并发:限流、防刷
- 超卖:使用redis实现原子性的操作
- 防刷:openresty lua 实现限流、验证黑名单等
- 黑名单机制:手动/自动收集ip、userid信息,加入到黑名单库或者黑洞
-
部署方案:
nginx +(必要的时候可以按照userid hash) 10台openresty + tomcat + codis集群 -
秒杀活动维护:
- 活动类型:秒杀、抢购、预售
- 支持商品类型:套装、单品
- 预约时间、秒杀时间等
- 是否需要验证手机号
- 秒杀后台逻辑-需要控制的几个点:
- 抢购总量
- 相同活动的相同商品,购物车里只能存在一条
- 每人最大抢购次数
- 每人每次最大购买数量(一次只支持购买一个套装)
- 其它实现抢购的思路:
- 小米的排队方案:http层接收请求后放入队列
- 通过走促销:redis lua实现原子性的验证逻辑,成功后,写入队列(队列可以降级)
网友评论