当前几种主流的系统发布更新方式总结

经常听说这些名词,多少有些了解,但是说起熟悉却不能说出个一二,在看书学习了这部分内容后做些总结分享,也以备随时查看复习。

目录

蓝绿发布

滚动发布

灰度发布

A/B测试

金丝雀

各方式比较


蓝绿发布

蓝绿发布(Blue & Green Deployment)是一种可以“零停服”的应用发布方式,可以保证应用平滑切换上线。其原理十分简单,即用蓝与绿来区分两套版本不一样的环境,一般用绿环境来表示旧版本,此时全部的流量由该环境承担,蓝环境则是一套独立的新版本应用环境,在部署之后如果测试通过,则将流量由绿切换到蓝,完成一次几乎无感知的上线过程,其过程分别如下两图所示:

滚动发布

滚动发布(Rolling Update Deployment)一般是将集群里的少量节点进行更新上线,然后再更新其他节点,每次只更新少量节点,直到全部更新完毕,整个系统变为新版本,过程如下两图所示:

灰度发布

灰度发布(Gray Deployment)是一个统称,它是目前应用面比较广的一种发布方式,它的思想是在线上环境中部署一个新版本应用,然后引入一小部分流量进入其中,如果没有发现问题就切换上线,这种方式对于测试应用在线上环境的实际表现情况极其有效,我们在灰度阶段就可以发现问题,及时调整,并且用户无感知。目前灰度发布可以分为两种,一种是A/B测试,另一种是金丝雀部署。

A/B测试

A/B测试(A/B Testing),A版本是线上稳定版本,B版本是迭代版本,如果一下子切到B环境,可能用户会难以适应,所以先部署一个B环境,分一部分流量过来,收集用户反馈然后逐步改进B版本,直到用户可以接受完全用B版本替换A版本的程度,如下图:

可能你会觉得蓝绿发布与A/B测试是一个概念,其实不然,蓝绿发布关注的是新版本的发布,而A/B测试关注的是一个测试的过程,两者还是有本质的区别的。

金丝雀

金丝雀部署(Canary Deployment)
背景出自“矿井中的金丝雀”:17世纪,英国矿井工人发现,金丝雀对瓦斯这种气体十分敏感。哪怕空气中只有极其微量的瓦斯,金丝雀也会停止歌唱;当瓦斯含量超过一定限度时,虽然鲁钝的人类毫无察觉,金丝雀却早已毒发身亡。当时在采矿设备相对简陋的条件下,工人们每次下井都会带上一只金丝雀作为瓦斯检测指标,以便及时发现危险状况并紧急撤离。
后来的软件工程师借鉴这个典故来升级应用,在黑白之间平滑发布过渡,一般是在应用集群中部署一台实例作为“金丝雀”,引入一小部分流量,收集问题,及时调整,待达到上线标准再替换集群中其他实例,如下图:

各方式比较

在“开发-测试-上线”阶段,对于用户与系统服务商,不难看出,对整个流程皆要兼顾的是灰度发布,这也就是目前灰度发布较为流行的原因

学无止境 学海无涯 加油!

发布了182 篇原创文章 · 获赞 132 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/HYZX_9987/article/details/104945380