Java 并行环境中的液化
我将在一些并发环境(集群或多线程初始化)中使用liquibase作为应用程序启动插件。在liquibase库支持的并发环境中,是否有任何保证可以正确更新数据库,或者我必须手动进行更新?Java 并行环境中的液化,java,concurrency,liquibase,Java,Concurrency,Liquibase,我将在一些并发环境(集群或多线程初始化)中使用liquibase作为应用程序启动插件。在liquibase库支持的并发环境中,是否有任何保证可以正确更新数据库,或者我必须手动进行更新? 谢谢大家! Liquibase是否使用RDBMS的ACID事务特性实现独占锁。这可以防止多个Liquibase实例同时执行架构迁移。它是通过对通过Liquibase添加到模式中的DATABASECHANGELOGLOCK表进行事务性更新来实现的 然而,这种机制并不能防止其他潜在的并发性问题,这些问题可能是由Liq
谢谢大家! Liquibase是否使用RDBMS的ACID事务特性实现独占锁。这可以防止多个Liquibase实例同时执行架构迁移。它是通过对通过Liquibase添加到模式中的
DATABASECHANGELOGLOCK
表进行事务性更新来实现的
然而,这种机制并不能防止其他潜在的并发性问题,这些问题可能是由Liquibase不直接执行的操作引起的。考虑集群中的一个节点正在执行模式迁移,而其他节点正试图用该模式执行正常的业务逻辑。集群中的其他节点看到模式处于稳定状态A,然后是一些中间变化,最后是稳定状态B。应用程序必须设计为处理这种转换,否则在迁移过程中需要停机
同样,如果需要这样的环境,应用程序有责任处理新旧客户机的混合(例如,在滚动升级期间),其中“正确”模式版本的概念不一致