Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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_Concurrency_Liquibase - Fatal编程技术网

Java 并行环境中的液化

Java 并行环境中的液化,java,concurrency,liquibase,Java,Concurrency,Liquibase,我将在一些并发环境(集群或多线程初始化)中使用liquibase作为应用程序启动插件。在liquibase库支持的并发环境中,是否有任何保证可以正确更新数据库,或者我必须手动进行更新? 谢谢大家! Liquibase是否使用RDBMS的ACID事务特性实现独占锁。这可以防止多个Liquibase实例同时执行架构迁移。它是通过对通过Liquibase添加到模式中的DATABASECHANGELOGLOCK表进行事务性更新来实现的 然而,这种机制并不能防止其他潜在的并发性问题,这些问题可能是由Liq

我将在一些并发环境(集群或多线程初始化)中使用liquibase作为应用程序启动插件。在liquibase库支持的并发环境中,是否有任何保证可以正确更新数据库,或者我必须手动进行更新?
谢谢大家!

Liquibase是否使用RDBMS的ACID事务特性实现独占锁。这可以防止多个Liquibase实例同时执行架构迁移。它是通过对通过Liquibase添加到模式中的
DATABASECHANGELOGLOCK
表进行事务性更新来实现的

然而,这种机制并不能防止其他潜在的并发性问题,这些问题可能是由Liquibase不直接执行的操作引起的。考虑集群中的一个节点正在执行模式迁移,而其他节点正试图用该模式执行正常的业务逻辑。集群中的其他节点看到模式处于稳定状态A,然后是一些中间变化,最后是稳定状态B。应用程序必须设计为处理这种转换,否则在迁移过程中需要停机

同样,如果需要这样的环境,应用程序有责任处理新旧客户机的混合(例如,在滚动升级期间),其中“正确”模式版本的概念不一致