【发布时间】:2022-01-10 06:05:31
【问题描述】:
我目前正在努力理解一些一般的并发概念。假设我们有一个带有多个端点的 REST api,用于在我们的数据库中更新和创建实体。假设我们针对某个更新同时收到 100 个并发请求。我们如何保证保持我们的数据一致性?如果使用 Java,我想一些选择是:
- 使用锁定机制
- 在我们的服务层中的方法上使用同步
但是,这肯定会对我们应用程序的可扩展性产生巨大影响吗?但是我目前看不到任何其他方法可以确保我们在与数据库交互时不会遇到任何竞争条件。 (另外我认为向我们在服务中编写的每个方法添加同步没有多大意义?)
所以,我想问题是:我们如何才能可靠地保护我们的应用程序免受并发请求的竞争条件的影响,同时保持可扩展性?
我知道这是一个非常开放和概念性的问题,但如果您能指出我应该深入学习哪个领域/主题的正确方向,我将不胜感激。
谢谢!
【问题讨论】:
-
要么使用事务存储/处理,要么采用最终一致性。并认识到原子性意味着 一些 更新有时会在某种程度上失败,您必须找出将它们作为业务问题处理的最佳方法。
标签: java spring database spring-boot concurrency