微服务架构的零停机部署
Posted
技术标签:
【中文标题】微服务架构的零停机部署【英文标题】:Zero Downtime Deployment for Micro Service architecture 【发布时间】:2017-02-16 06:01:09 【问题描述】:目前我正在开发一个基于微服务架构的应用程序。作为主要技术,我们计划在每个微服务开发中使用 Spring Boot 和 Docker。目标之一是为用户提供零停机时间部署功能。
我花了一些时间试图找到一些解决方案并了解Blue Green Deployment (BGD)
,但有些方面对我来说仍然不清楚。主要问题是数据库状态和版本兼容性。
例如,如果使用
BGD
,如何从 成功部署后的绿色到蓝色轮廓?
我在 Spring 的 Zero Downtime Deployment with a Database 文章中发现了有趣的方法,但我认为这种方法具有过于复杂的应用程序版本和发布计划过程以及向后兼容性要求。
所以我想问以下问题:
-
对零停机时间部署流程概念有何建议,并以实际使用经验为后盾?
是否有任何开箱即用的解决方案(付费或免费)为具有关系数据库的应用程序提供零停机时间部署功能?
附言
如果是,***.com 中的零停机部署是如何工作的?
【问题讨论】:
对于那些投票结束这个问题的人,我可以说这不是too broad
或off-topic
,因为我要求描述具体的经验,而不是抽象的推理和建议
我认为这是题外话,因为您在第二个问题中要求解决方案或框架。最接近的原因提到,要求软件库/工具是题外话,我认为要求框架符合这个密切的原因。
@g00glen00b 我删除了framework
,如果它很困惑:)
要求一个有助于解决这个问题的框架是主题的定义。如果有针对医疗专业人员的 ***,如果医生询问复杂的程序然后问“有没有解决这个问题的产品?”,你会告诉医生这是题外话吗?
【参考方案1】:
来自那篇文章:
维护生产环境的两个副本(“蓝色”和“绿色”) 通过将生产 URL 映射到蓝色环境,将所有流量路由到蓝色环境; 在绿色环境中部署和测试应用程序的任何更改; 通过将 URL 映射到绿色并从蓝色取消映射来“翻转开关”。
如果您拥有设备并设置了良好的部署流程,这实际上并没有那么困难。如果您已设置安全机制,以便用户无需在蓝色环境中启动新会话,那么痛苦几乎完全在于配置并确保蓝色环境处于您想要的完美状态成为。之后,只需进入负载均衡器的配置并翻转设置以指向蓝色环境即可。
但是一旦“绿色”和“蓝色”启动并运行,您就可以来回翻转。理想情况下,一旦蓝色被验证,立即升级绿色。此外,请确保您在两个环境之间共享数据库操作,因此如果蓝色失败,绿色也可以作为蓝色的后备。
诚然,我在 Hadoop 上的规划和帮助经验是在 Hadoop 上,您通常有一个正式的数据摄取管道,可以轻松配置该管道以将所有新数据提供给两个完全独立的环境。
【讨论】:
关于两个环境的数据库操作共享,如果API发生变化,如何提供向后兼容性,导致输入数据的格式也发生变化?以上是关于微服务架构的零停机部署的主要内容,如果未能解决你的问题,请参考以下文章