秒杀系统实现总结

  • 秒杀系统面临的技术挑战:
  1. 访问量大,对网络带宽要求高
  2. 系统如何支持瞬间的高并发
  3. 如何防止商品超卖
  4. 如何防刷、防黄牛等
  • 解决方案:
  1. CDN缓存,nginx+lua实现活动数据缓存2秒
  2. 高并发:限流、防刷
  3. 超卖:使用redis实现原子性的操作
  4. 防刷:openresty lua 实现限流、验证黑名单等
  5. 黑名单机制:手动/自动收集ip、userid信息,加入到黑名单库或者黑洞
  • 部署方案:
    nginx +(必要的时候可以按照userid hash) 10台openresty + tomcat + codis集群

  • 秒杀活动维护:

  1. 活动类型:秒杀、抢购、预售
  2. 支持商品类型:套装、单品
  3. 预约时间、秒杀时间等
  4. 是否需要验证手机号
  • 秒杀后台逻辑-需要控制的几个点:
  1. 抢购总量
  2. 相同活动的相同商品,购物车里只能存在一条
  3. 每人最大抢购次数
  4. 每人每次最大购买数量(一次只支持购买一个套装)
  • 其它实现抢购的思路:
  1. 小米的排队方案:http层接收请求后放入队列
  2. 通过走促销:redis lua实现原子性的验证逻辑,成功后,写入队列(队列可以降级)

你可能感兴趣的:(秒杀系统实现总结)