支付宝是如何解决热点库存扣减问题的?

支付宝是如何解决热点库存扣减问题的?

https://mp.weixin.qq.com/s/4XQAdXEVIjXnicauPE-yMw

典型问题: 热点库存扣减

这个是典型的秒杀场景,秒杀系统相对简单的库存扣减问题,比如春节红包雨活动,同一个资金池子有数亿人抢红包,比如阿里巴巴针对红包活动150万QPS的峰值压力,应该如何设计库存扣减方案呢?

常规方案

采用分桶设计,将库存均匀分发到 N 个 Redis 分桶中。通过 Incr 无锁的方式,高效扣减库存。

  1. 假设 key 失效了怎么办?
  2. 假设 Incr 方法失效了怎么办,

上面两种情况都会满足 $num < $max

复制代码
$num = $redis->incr($key);
if ($num > 0 && $num < $max) { 
 //入抢购成功队列,异步去执行抢购成功逻辑
} else {
 //不好意思呢,已经被抢完了
}

缺点:

每个桶库存消耗不均,会导致实际还有库存,但是有部分用户无法扣减库存,引发客诉。

优化后的方案

  • 小量多次分派库存,从而缓解消耗不均问题。
  • 21年抖音春节红包,将用户进入的时间打散,减少瞬时请求峰值。
相关推荐
掘金-我是哪吒3 小时前
分布式微服务系统架构第144集:FastAPI全栈开发教育系统
分布式·微服务·架构·系统架构·fastapi
半桔13 小时前
【Linux手册】冯诺依曼体系结构
linux·缓存·职场和发展·系统架构
蓝天居士1 天前
软考 系统架构设计师系列知识点之杂项集萃(82)
系统架构
小马哥编程1 天前
【iSAQB软件架构】软件架构中构建块的视图:黑箱、灰箱和白箱及其交互机制
microsoft·架构·系统架构·交互
WispX8881 天前
【设计模式】门面/外观模式
java·开发语言·设计模式·系统架构·外观模式·插件·架构设计
慧一居士1 天前
ShardingSphere-JDBC 与 Sharding-JDBC 的对比与区别
分布式·系统架构
小马哥编程1 天前
【ISAQB大纲解读】Kafka消息总线被视为“自下而上设计”?
分布式·kafka·系统架构·linq
大咖分享课2 天前
实时数据湖架构设计:从批处理到流处理的企业数据战略升级
系统架构
Data-Miner2 天前
可编辑精品PPT | 大型企业数字化转型顶层业务架构模型解决方案数字化架构图合集可编辑架构图系统架构图技术架构图
架构·系统架构
蓝天居士2 天前
软考 系统架构设计师系列知识点之杂项集萃(79)
系统架构