知识卡片
本地扣库存削峰
内容
本地扣库存先在应用层快速挡掉超过本地份额的请求,再把少量有效请求推向统一扣减。它用近端判断换吞吐,但必须保证本地额度分配和最终库存合并不破坏一致性。
参考来源
- 位置:《Go语言高级开发与实战》第6章《Go语言秒杀系统实战》(源文件:_epub-src/GoYu Yan Gao Ji Kai Fa Yu Shi Zhan_split_054.html)
- 结论依据:原文把本地扣库存描述为用户请求过来后添加销量、对比本地库存并返回布尔值,因此支撑应用层削峰的结论。
- 原始内容:d/redigo,下面是代码实现。 2)本地扣库存和统一扣库存。本地扣库存逻辑非常简单:用户请求过来,添加销量,然后对比销量是否大于本地库存,最后返回布尔值,代码如下。 注意这里对共享数据LocalSalesVolume的操作是要使用锁来实现的。但是因为本地扣库存和统一扣库存是一个原子性操作,所以在最上层使用通道来实现。 统一扣库存操作Redis。因为Redis是单线程的,如果要实现从中取数据、写数据