支付宝是如何解决热点库存扣减问题的?
2024-01-08 15:41:03
支付宝是如何解决热点库存扣减问题的?
https://mp.weixin.qq.com/s/4XQAdXEVIjXnicauPE-yMw
典型问题: 热点库存扣减
这个是典型的秒杀场景,秒杀系统相对简单的库存扣减问题,比如春节红包雨活动,同一个资金池子有数亿人抢红包,比如阿里巴巴针对红包活动150万QPS的峰值压力,应该如何设计库存扣减方案呢?
常规方案
采用分桶设计,将库存均匀分发到 N 个 Redis 分桶中。通过 Incr 无锁的方式,高效扣减库存。
- 假设 key 失效了怎么办?
- 假设 Incr 方法失效了怎么办,
上面两种情况都会满足 $num < $max
$num = $redis->incr($key);
if ($num > 0 && $num < $max) {
//入抢购成功队列,异步去执行抢购成功逻辑
} else {
//不好意思呢,已经被抢完了
}
缺点:
每个桶库存消耗不均,会导致实际还有库存,但是有部分用户无法扣减库存,引发客诉。
优化后的方案
- 小量多次分派库存,从而缓解消耗不均问题。
- 21年抖音春节红包,将用户进入的时间打散,减少瞬时请求峰值。
文章来源:https://blog.csdn.net/wangming520liwei/article/details/135457661
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!