我被京东到家的抢购机制惊呆了,第一个人抢不到,第二个人才能抢到?

2017-10-26 14:24:00 +08:00
 jadec0der

《库存系统难破题?京东到家来分享》

多人同时购买 1 件商品,如何安全地库存扣减?

海量的用户秒杀请求,本质上是一个排序,先到先得。但是如此之多的请求,注定了有些人是抢不到的,可以在进入上述伪代码 Dao 层之前增加一个计数器进行控制,比如有 50% 的流量将直接告诉其抢购失败,伪代码如下:

count++;
if (count%2==1) {
   Thread.sleep(1000);
   return new BuyResult("抢购失败");
} else {
   return doBuy();
}

这样真的合适吗?

7653 次点击
所在节点    分享发现
23 条回复
watzds
2017-10-26 20:43:38 +08:00
@jadec0der 你好,你列的第一篇文章中“增加分配 ID 标志,去掉行锁”,请问你知道什么意思吗?怎么会去掉行锁的

http://www.infoq.com/cn/articles/solution-to-the-architecture-of-spike-system
jadec0der
2017-10-27 03:20:10 +08:00
@watzds 我也没看明白,按理说每行一个库存在修改状态的时候也需要行锁的。
watzds
2017-10-27 09:35:39 +08:00
@jadec0der 嗯,最多不用锁在同一行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/400944

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX