天天看点

流量削峰

  • 掌握秒杀令牌的原理和使用方式
  • 掌握秒杀大闸的原理和使用方式
  • 掌握队列泄洪的原理和使用方式

目前项目的缺陷

  1. 秒杀下单接口会被脚本不停的刷
  2. 秒杀验证逻辑和秒杀下单接口强关联,代码融入度高
  3. 秒杀验证逻辑复杂,对交易系统产生无关联负载

秒杀令牌原理

  1. 秒杀接口需要依靠令牌才能进入
  2. 秒杀的令牌由秒杀活动模块负责生成
  3. 秒杀活动模块对秒杀令牌生成全权处理,逻辑收口
  4. 秒杀下单前需要先获得秒杀令牌
String token = UUID.randomUUID().toString().replace("-","");
        redisTemplate.opsForValue().set("promo_token_"+promoId + "user" + userId + "itemid" + itemId, token);
        redisTemplate.expire("promo_token_"+promoId, 5, TimeUnit.MINUTES);
           

秒杀大闸原理

  1. 依靠秒杀令牌的授权原理定制化发牌逻辑,做到大闸功能
  2. 根据秒杀商品初始库存颁发对应数量的令牌,控制大闸流量
  3. 用户风控策略前置到秒杀令牌发放中
  4. 库存售罄判断前置到秒杀令牌发放中

队列泄洪原理

  1. 排队有时候比并发更高效
  2. 依靠排队去限制并发流量
  3. 依靠排队和下游拥塞窗口程度调整队列释放流量大小
  4. 支付宝银行网关队列举例

防刷限流

  • 验证码
  • 防刷限流