微服务架构的零停机部署

时间:2016-10-07 09:22:58

标签: java database docker spring-boot microservices

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

我花了一些时间试图找到一些解决方案并了解Blue Green Deployment (BGD),但有些方面对我来说仍然不明确。主要问题是DataBase状态和版本兼容性。

  

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

我在Spring的Zero Downtime Deployment with a Database文章中找到了有趣的方法,但我认为这种方法过于复杂的应用程序版本和版本规划过程以及向后兼容性要求。

所以我想问下面的问题:

  1. 有关零停机部署流程概念的任何建议,以实际使用经验为后盾吗?
  2. 是否有任何开箱即用的解决方案(付费或免费)为具有关系数据库的应用程序提供零停机部署功能?
  3. PS

    有趣的是,Zero Downtime Deployment如何在StackOverflow.com中运行?

1 个答案:

答案 0 :(得分:1)

从那篇文章:

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

如果您拥有设备和良好的部署过程,实际上并不困难。如果您已经设置了安全机制,以便用户不需要在蓝色环境中启动新会话,那么痛苦几乎完全在于配置并确保蓝色环境完全处于您想要的状态成为。在此之后,只需进入负载均衡器的配置并将设置翻转为指向蓝色环境即可。

但是,一旦你启动并运行“绿色”和“蓝色”,就可以来回翻转。理想情况下,一旦验证蓝色,立即升级绿色。此外,请确保您在两个环境之间共享数据库操作,因此如果蓝色失败,绿色也可以作为蓝色的后备。

当然,我的经验规划和帮助是在Hadoop上,您经常有一个正式的数据提取管道,可以轻松配置为将所有新数据提供给两个完全独立的环境。