java - 相同的应用程序部署在两个不同的服务器上,但从数据库中获取相同的数据。如何同步数据库数据

标签 java spring mule

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

最佳答案

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

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

相关文章:

java - Android:如何使用 Google Places API(自动完成)搜索附近的酒店?

java - 创建可取消线程是否需要 AtomicBoolean?

java - Spring-Boot:依赖注入(inject)取决于配置(和使用接口(interface))

java - 写文件后如何在 mule 流中使用 sftp?

java - 启动 Anypoint Studio 时缺少错误日志

java - Log4j:如何为多个appender定义通用布局和ConversionPattern

java - 我有这个错误 java.lang.NoSuchMethodError

hibernate - @Transactional 方法中的 LazyInitializationException

mule - docker 骡服务器 curl : (56) Recv failure: Connection reset by peer

java - mysql删除重复数据的方法