项目--流量削峰技术

秒杀令牌的原理和使用方法

秒杀大闸的原理和使用方法

队列泄洪的原理和使用方式


 存在缺点:

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


秒杀令牌

 

秒杀接口需要依靠令牌才能进入

秒杀的令牌由秒杀活动模块负责生成

秒杀活动模块对秒杀令牌生成全权处理,逻辑收口

秒杀下单前需要先获得秒杀令牌
 

前端先获得秒杀活动的令牌,在创建订单。这样有令牌才能进秒杀接口。秒杀的令牌由秒杀活动模块负责生成。但是如果有成百上亿的用户就会生出很多令牌??---》秒杀大闸

依靠秒杀令牌的授权原理定制化发牌逻辑,做到大闸功能

根据秒杀商品初始库存颁发对应数量令牌,控制大闸流量

用户风控策略前置到秒杀令牌发放中 --就是看用户商品 活动信息对不对

库存售馨判断前置到秒杀令牌发放中 -- 售罄的话redis里面会有一个key,就是判断有key就不发令牌了
 


队列泄洪原理

排队有些时候比并发更高效(例如redis单线程模型,innodb mutex key等)

依靠排队去限制并发流量

依靠排队和下游拥塞窗囗程度调整队列释放流量大小

支付宝银行网关队列举例

这里使用固定大小的线程池,默认20个,其他的在LinkedBlockingQueue队列中等待

private ExecutorService executorService;

    @PostConstruct
    public void int(){
        executorService = Executors.newFixedThreadPool(20);
    }

 

本地or分布式 队列泄洪

本地:将队列维护在本地内存中

分布式:将队列设置到外部redis内
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值