首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电子商务平台上并发请求的系统设计

电子商务平台上并发请求的系统设计
EN

Stack Overflow用户
提问于 2021-10-04 05:12:10
回答 2查看 63关注 0票数 0

假设您有1件库存商品,但在任何情况下都有100万个购买请求,您将如何设计一个系统来防止产品多次销售?

EN

回答 2

Stack Overflow用户

发布于 2021-10-13 20:34:25

这就是关系数据库ACIDity的用武之地。如果一个项目将被多次销售,则DB将进入不一致状态(例如,10个项目已售出,11个项目已购买),数据库的事务查询将根据ACID中的C(一致性)来防止这种情况。在这种情况下,一个事务将通过,而所有其他事务将被中止。

除此之外,您还可以在资源上实现锁定(乐观锁定与悲观锁定)。例如,您可以锁定特定的itemId。您可以在数据库层或应用程序层实现锁定。

在悲观锁定下,一个线程将锁定该物品,所有其他线程将被告知该物品已售出。

在乐观锁定中,所有线程都将锁定资源,并且第一个通过的线程(假设该项目的付款已完成)将标记该项目已售出,所有其他线程将在最后一刻被告知该项目已售出。

这是一个简短的答案,但希望它能给你一个想法。

票数 0
EN

Stack Overflow用户

发布于 2022-02-12 01:01:53

这个问题的答案取决于很多由业务和技术细节驱动的因素。关于这个话题here已经有了很好的讨论。

此外,如果你是从系统设计面试的角度来问这个问题,那么面试官更感兴趣的是进行之前分享的链接中提到的那种讨论,而不仅仅是期待一个“正确”的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69431157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档