微服务体系结构的零停机部署

目前我正在开发基于微服务架构的应用程序。 作为主要技术,我们计划为每个微服务开发使用Spring Boot和Docker 。 其中一个目标是为用户提供零停机时间部署function。

我花了一些时间试图find一些解决scheme,并了解Blue Green Deployment (BGD)但有些方面仍然不清楚。 主要问题是数据库状态和版本兼容性。

例如,如果使用BGD ,成功部署后如何将所有数据更改从绿色迁移到蓝色轮廓?

我在Spring的Zero Downtime部署中发现了一个有趣的方法,但是我认为这种方法的应用程序版本和发布规划过程和向后兼容性要求太复杂了。

所以我想问下面的问题:

  1. 关于零停机时间部署过程概念的任何build议,由使用它的实际经验支持?
  2. 是否有任何支持“closures数据库”的应用程序(付费或免费)提供零停机时间部署function?

PS

如果是零停机时间部署在StackOverflow.com中工作,这很有趣吗?

从那篇文章:

  • 维护您的生产环境的两个副本(“蓝色”和“绿色”)
  • 通过将生产URL映射到蓝色环境,将所有stream量路由到蓝色环境;
  • 在绿色环境中部署和testing对应用程序的任何更改;
  • 通过将URL映射到绿色并从蓝色取消映射,“翻转开关”。

实际上,如果您拥有设备和良好的部署stream程,这并不难。 如果您已经设置了安全机制,以便用户不需要在蓝色环境中启动新的会话,那么几乎完全在configuration中,并且确保蓝色环境完全符合您的需要成为。 之后,只需要进入负载平衡器的configuration并翻转设置以指向蓝色环境。

但一旦你有“绿色”和“蓝色”起来跑步,你可以来回翻转。 理想情况下,一旦蓝色validation,立即升级绿色。 此外,请确保您在两个环境之间共享数据库操作,因此如果蓝色失败,绿色也可以成为蓝色的后备。

当然,我的规划和帮助的经验是在Hadoop上,你经常有一个正式的数据消化pipe道,可以很容易地configuration为将所有新的数据提供给两个完全独立的环境。