应用程序的主要工作是从DB获取数据并丰富。由于性能问题,我们已将代码部署在两个不同的服务器(两个不同的JVM)中。现在的问题是,有时这两个服务器都在获取相同的数据和过程,这会导致重复。现在的问题是如何停止从数据库中获取相同的数据。我们尝试锁定数据库行以及数据库中的所有状态列,服务器之间的延迟以获取数据。但是,当两个服务器同时开始获取数据时,它们中的任何一个有时都不起作用。请帮忙解决这个问题

最佳答案

您不必锁定行。如果您有固定数量的jvm运行,则可以使用模来获取每个jvm实例中的唯一行。让我们以示例为例,假设您的表中有存储数字序列的列ID。您有两个正在运行的jvm。让我们将0分配给第一个jvm,将1分配给第二个jvm。每次获取行时,将id列的模数设为2(jvm实例的数量)。如果结果与分配给jvm的编号匹配,则进行处理,否则跳过它。

关于java - 相同的应用程序部署在两个不同的服务器中,但是从数据库中获取相同的数据。如何同步数据库数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54063673/

10-10 03:26