10.《图解云计算架构:基础设施和API》(2020) 作者:[日]平山毅

文章访问量:

P338、P339 蓝绿部署

一般来说,更新当前正在运行的应用程序有两种常用的方法。

一种方法叫作原地更新,是指将新的应用程序模块发布到正在运行的环境中。原地更新的缺点是服务器暂时无法接受请求。另外,由于我们无法在代码发布前确认应用程序的真实行为,所以就算存在会导致性能下降的问题,也只有在应用程序开始接收请求之后才能发现。而且,这种方法也不支持通过切换到全新都运行环境来发布程序。

在以本地部署的方式搭配的环境中,由于需要沿用已有的基础设施环境,所以人们一般会采取原地更新的方法。如果有多台Web服务器,虽然通过逐一发布代码也能够防止一时间所有服务器都无法接收请求的情况出现,但有时这样做又会导致同时存在新旧两个版本的内容,造成显示上的不一致。

同时存在两个版本的内容,显示上不一致也不是什么大问题啊。旧版本好用那就回滚,新版本好用那就升级。除非是改了后端代码,那确实比较麻烦。
最近就碰到了UI层升级了逻辑层没更新的情况。这就导致UI层的事件触发后,在逻辑层找不到对应的重载函数没法对数据进行操作,从而报错的问题。

另一种方法是在更新应用程序或运行平台时,针对每个运行环境单独部署一套新版本的应用程序,待包括验收测试的所有步骤完成后,与当前的环境交换URL,使请求依然处于可被接受的状态。这种方法需要交替使用两个相当于线上环境的环境,故而被称为蓝绿部署(blue-green deployment)。

缺陷也很明显,你得准备两套生产环境。好处是这两套生产环境不用完全一致,项目只需要能在两套环境上运行即可。
但和上面的一样,如果涉及到数据操作的话就比较麻烦,你得确保新旧环境对数据的操作是一致的。
蓝绿部署的概念,貌似是出自Martin Fowler的博客。https://martinfowler.com/bliki/BlueGreenDeployment.html
Subscribe
提醒
0 评论
Inline Feedbacks
View all comments
0
在此留下你的评论x