当前位置: 首页 > 知识库问答 >
问题:

访问同一数据库资源的多个java spring应用实例

姬俊能
2023-03-14

在我的数据库中,某个表的许多记录需要我的java spring应用程序不时处理。该表的每一行都有一个布尔标志,表示当前是否正在处理给定的记录。

我所看到的是在不同的服务器上多次部署我的java spring应用程序,全部访问同一个共享数据库,用一些负载平衡器复制同一个应用程序,等等。

但是,一次只有一个 Java 应用程序实例可以处理该特定表的给定数据库记录。

有哪些不同的方法来加强这种约束?

我可以想到一些独特的队列,将这些处理任务分派给不同的java运行实例,以确保相同的数据库记录不会被两个不同的java实例同时处理。但这听起来很复杂,也许还有更简单的东西?还有别的吗?提前谢谢。

共有1个答案

仲孙德惠
2023-03-14

您可以使用锁定策略来强制实施对表中特定记录的独占访问。有两种不同的方法可以应用于此要求。乐观锁定还是悲观锁定,看看 Hibernate 文档

此外,还有另一个问题,你应该考虑。用当前的方法,如果服务器在处理某个记录时崩溃,最终无法成功完成,那么这条记录将保持在“不完整”状态,不会被其他人处理。我想到的一个可能的解决方案是使用负责处理的服务器的“节点id”而不是状态标志。

 类似资料:
  • 我目前使用Spring Boot和Hibernate与单一数据源访问单一数据库。我需要读取和写入数据库。直到现在一切都很好。 现在,当谈到SQL注入时,我的项目经理有点偏执,尽管我们尽了最大努力来参数化任何接受任何类型用户输入的查询。因此,他问我是否可以使用两个数据库用户连接到同一个数据库:一个具有读/写访问权限,另一个具有只读访问权限。这样,对于每个只需要读取访问权限的查询,我可以使用只读用户,

  • 我目前有一个类似以下的数据库结构。如果无法在Firebase实时数据库安全规则中循环,我如何基于用户对多个组的访问来保护数据?要遵循的例子... 数据库结构: 我如何在上指定安全规则,以基于中指定的任何组与当前用户的

  • 下面是我的情况:我有两个数据库:一个sybase和一个MSSQL。我希望在一个服务类中访问这两个数据库。例如,我想从sybase获得一些数据,然后我需要在MSSQL上做一些更新。 我已经根据网上找到的多个样本设置了两个数据源,但我无法访问我的第二个数据库(sybase)。 下面是我的代码: AIDCConfigDataSource 以下是我的错误: 如果我删除了FileUploadServiceI

  • 问题内容: 我有一个待办事项列表类型应用程序,可将所有注释数据存储在sqlite3数据库中。应用程序中的每个活动都需要访问数据库以实时编辑数据的不同部分。 当前,我让每个活动都打开自己的DBManager对象(我创建的用于管理数据库的帮助程序类)。但是,这导致了问题,我想要一个稍微更全局的访问解决方案,因此我不必继续打开/关闭/创建数据库。 我正在考虑几种选择,并且希望听到每种选择的利弊以及其他建

  • 问题内容: Python中是否有任何东西可以允许您运行多个并发的Python程序,这些程序可能访问同一数据库表,并防止每个程序使用完整的cpu,从而使服务器剩下一些额外的容量? 问题答案: 几个问题: 多个并发的Python程序-请参阅http://wiki.python.org/moin/Concurrency,首先,我将尝试使用内置模块multiprocessing(http://docs.p