Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 相同的应用程序部署在两个不同的服务器上,但从数据库中获取相同的数据。如何同步数据库数据_Java_Spring_Mule - Fatal编程技术网

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

Java 相同的应用程序部署在两个不同的服务器上,但从数据库中获取相同的数据。如何同步数据库数据,java,spring,mule,Java,Spring,Mule,Out应用程序的主要任务是从数据库中获取数据并进行充实。由于性能问题,我们在两个不同的服务器和两个不同的JVM中部署了代码。现在的问题是,有时两台服务器都获取相同的数据和进程,这会导致重复。现在的问题是如何停止从数据库获取相同的数据。我们尝试锁定数据库行和所有行,数据库中的状态列,服务器之间的延迟来获取数据。但是,有时当两台服务器同时开始提取数据时,它们中的任何一台都无法工作。请帮助解决此问题您不必锁定行。如果有固定数量的jvm正在运行,则可以使用模来获取每个jvm实例中的唯一行。让我们举一个例

Out应用程序的主要任务是从数据库中获取数据并进行充实。由于性能问题,我们在两个不同的服务器和两个不同的JVM中部署了代码。现在的问题是,有时两台服务器都获取相同的数据和进程,这会导致重复。现在的问题是如何停止从数据库获取相同的数据。我们尝试锁定数据库行和所有行,数据库中的状态列,服务器之间的延迟来获取数据。但是,有时当两台服务器同时开始提取数据时,它们中的任何一台都无法工作。请帮助解决此问题

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

在这种情况下,有两种标准的方法来处理冲突:乐观锁定和悲观锁定

乐观当应用程序使用跨越多个数据库事务的长事务或会话时,可以存储 对数据进行版本控制,以便如果同一实体由两个 对话,最后一个提交更改的人被告知冲突, 并且不会覆盖其他对话的工作。这种方法 保证一定的隔离性,但伸缩性好,工作特别好 在读的时候,有时会写

在悲观场景中,您只需要指定隔离级别 用于JDBC连接,并让数据库处理锁定问题

悲观锁定的缺点是资源被锁定 从在事务中首次访问到 事务已完成,其他事务无法访问该事务 在那段时间里。如果大多数事务只是查看资源和 永远不要更改它,独占锁可能会导致过度杀伤力 锁争用和乐观锁定可能是更好的方法

请看一看: ,
.

链接到外部网站是可以的,但是你应该在回答中直接包含相关信息。数据库是什么?我发现很难相信Oracle的SELECT for UPDATE会失败。