蓝绿发布、滚动发布、灰度发布(金丝雀发布)、A/B测试

分享
手机游戏开发者 2024-9-7 06:24:17 13 0 来自 中国
服务发布方式


在一样平常环境下,升级服务器端应用,必要将应用源码或步伐包上传到服务器,然后克制掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个标题,
(1)在新版本升级过程中,服务是会暂时停止的。
(2)假如新版本有BUG,升级失败,回滚起来也非常贫苦,容易造成更长时间的服务不可用。
(3)新功能体验不好,版本升级过程中带来的流量有损,造成用户流失。
为了办理这些标题,人们研究出了几种常见的服务发布战略,下面一一先容。
蓝绿发布




所谓蓝绿摆设,是指同时运行两个版本的应用,
如上图所示,蓝绿发布摆设时间必要对服务的新版本举行冗余摆设并不克制掉老版本,一样平常新版本的呆板规格和数目与旧版本保持同等,相称于该服务有两套完全类似的摆设环境,只不外此时只有旧版本在对外提供服务,新版本作为热备。当服务举行版本升级时,我们只需将流量全部切换到新版本即可,旧版本作为热备。由于冗余摆设的缘故,假如新版本上线后出现严峻的步伐 BUG,那么我们只需将流量全部切回至旧版本,大大紧缩故障规复的时间。待新版本完成 BUG 修复并重新摆设之后,再将旧版本的流量切换到新版本。
蓝绿发布通过使用额外的呆板资源来办理服务发布期间的不可用标题,当服务新版本出现故障时,也可以快速将流量切回旧版本。
蓝绿摆设的长处:
1、摆设布局简单,运维方便;
2、服务升级过程操纵简单,周期短。
蓝绿摆设的缺点:
1、资源冗余,必要摆设两套生产环境;
2、新版本故障影响范围大。
ps:固然,蓝绿发布也可以在系统非繁忙时段举行升级,把现有的集群服务器一分为二,一半升级一半保存并隔离,待到新系统稳固后升级另一半服务器,并清除隔离。从而充实使用现有服务器资源。
滚动发布


滚动发布可以大概办理掉蓝绿摆设时对硬件要求增倍的标题。
所谓滚动升级,就是在升级过程中,并不一下子启动全部新版本,是先启动一台新版本,再克制一台老版本,然后再启动一台新版本,再克制一台老版本,直到升级完成,如许的话,假如一样平常必要10台服务器,那么升级过程中也就只必要11台就行了。
但是滚动升级有一个标题,在开始滚动升级后,流量会直接流向已经启动起来的新版本,这个时间,新版本是不肯定可用的,好比必要进一步的测试才能确认。那么在滚动升级期间,整个系统就处于非常不稳固的状态,假如发现了标题,也比力难以确定是新版本还是老版本造成的标题。
为了办理这个标题,我们必要为滚动升级实现流量控制本事。
灰度发布(金丝雀发布)




2.png 在灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试职员对新版本举行线上测试,启动的这个新版本应用,就是我们的金丝雀。验证新版本符合预期后,徐徐调解流量权重比例,使得流量慢慢从老版本迁移至新版本,期间可以根据设置的流量比例,对新版本服务举行扩容,同时对老版本服务举行缩容,使得底层资源得到最大化使用。
相比于前两种发布战略,灰度发布的头脑则是将少量的哀求引流到新版本上,因此摆设新版本服务只需极小数的呆板。
灰度发布可以基于用户哀求的元信息将流量路由到新版本,这是一种基于哀求内容匹配的灰度发布战略。只有匹配特定规则的哀求才会被引流到新版本,常见的做法包罗基于 Http Header 和 Cookie。基于 Http Header 方式的例子,比方 User-Agent 的值为 Android 的哀求 (来自安卓系统的哀求)可以访问新版本,其他系统仍旧访问旧版本。基于 Cookie 方式的例子,Cookie 中通常包含具有业务语义的用户信息,比方VIP可以访问新版本,平凡用户用户仍旧访问旧版本(大概相反)。
如图,某服务当前版本为 v1,如今新版本 v2 要上线。为确保流量在服务升级过程中安稳无损,接纳金丝雀发布方案,徐徐将流量从老版本迁移至新版本。


灰度发布期间再对新版本做运行状态观察,网络各种运行时数据,假如此时对新旧版本做各种数据对比,就是所谓的A/B测试。通过在监控平台观察旧版本与新版本的乐成率、RT 对比,当新版本团体服务预期后,即可将全部哀求切换到新版本。
灰度发布的长处:
1、可以对特定的哀求大概用户提供服务新版本,新版本故障影响范围小;
2、发布期间徐徐对新版本扩容,同时对老版本缩容,资源使用率高。
3、必要构建完备的监控平台,用于对比差别版本之间哀求状态的差别(做A/B测试)。
灰度发布的缺点:
1、仍旧大概存在资源冗余,由于无法精确评估哀求容量;
2、假如流量无差别地导向新版本,大概会影响用户的体验;
3、发布周期长。
总结:如下图形貌了几种摆设方式的演进




最佳实践:
在新版本应用发布时,为了服务器不绝机升级且影响最小,使用灰度发布战略,
在灰度发布开始时,使用HTTP Header等战略 匹配指定测试职员的流量到新版本上,
然后当新版本内部测试通过后,可以再按百分比、白名单等,将用户流量一点一点导入到新版本中,直到将流量全部导入到新版本上,末了完成升级,
假如期间发现标题,就立即取消升级,将流量切回到老版本。
运用灰度发布,就再也不必要加班到深夜举行停机升级了,在白天就可以放心大胆地、安全地发布新版本^_^。


参考:
https://blog.csdn.net/luo15242208310/article/details/118888496

https://developer.aliyun.com/article/847533
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-19 14:32, Processed in 0.159522 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表