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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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_Hibernate_Deployment_Flyway - Fatal编程技术网

Java 如何在蓝色/绿色部署中管理共享数据库?

Java 如何在蓝色/绿色部署中管理共享数据库?,java,spring,hibernate,deployment,flyway,Java,Spring,Hibernate,Deployment,Flyway,我们有一个托管的应用程序,我们开始使用它进行蓝色/绿色部署。该应用程序有3个后台服务,它们将不参与蓝色/绿色方面。在任何给定的时间只有一个实例运行。我们在tomcat下有两个web应用程序,作为面向公众的应用程序。一个是用户界面,另一个是我们的restful api。我们前面有一个代理服务器,所以我们可以进行蓝/绿切换。所有这些服务共享一个数据库 我的问题是,如何管理蓝色/绿色部署,并且不对共享数据库创建向后不兼容的更改?我担心的是,我们的蓝色应用程序启动并进行数据库更改,这会让绿色应用程序一败

我们有一个托管的应用程序,我们开始使用它进行蓝色/绿色部署。该应用程序有3个后台服务,它们将不参与蓝色/绿色方面。在任何给定的时间只有一个实例运行。我们在tomcat下有两个web应用程序,作为面向公众的应用程序。一个是用户界面,另一个是我们的restful api。我们前面有一个代理服务器,所以我们可以进行蓝/绿切换。所有这些服务共享一个数据库

我的问题是,如何管理蓝色/绿色部署,并且不对共享数据库创建向后不兼容的更改?我担心的是,我们的蓝色应用程序启动并进行数据库更改,这会让绿色应用程序一败涂地


顺便说一下,我们的应用程序是spring hibernate java应用程序,使用flyway在启动时迁移db。

您可以使用中介绍的实践。 这些实践可以帮助您以向后兼容性迁移数据库。例如,如果要在蓝色部署中重命名列,则必须使用旧列,直到绿色可用


另外,spring与FlyWayDB有详细的联系。

很抱歉,这个问题在本网站上是离题的;您可能会尝试服务器故障,并且您被邀请将其作为一个示例问题发布(因为它确实是一个很好的问题),请参阅此答案:您可以考虑将两个应用程序合并为一个,或者使用户界面通过API连接而不是直接连接到数据库。你不一定要感谢那篇文章的链接。马丁·福勒似乎总是能很好地表达我对设计的不好感受。我们目前正朝着微服务的方向发展,在微服务中,应用程序的每个部分都有自己的数据库。虽然这个链接可能会回答这个问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-@我很抱歉。我同意你的看法。我编辑了我的答案。好文章!对不起,我这么晚才回复。实际上,我们从一开始就用spring和flyway这样做,结果出人意料地好。我希望能有一种神奇的方法来防止不兼容的变化。很高兴看到其他人也这样做。