灰度发布、蓝绿部署、金丝雀都是啥?以及在k8s中如何实现

概述

发布新代码存在的问题:
		1、发布过程中服务暂时中断
		2、回滚麻烦,容易造成服务长期不可用
		总结一个目标:能不能尽量较少中断时间
于是定制了各种发布策略

      滚动发布:
         一套环境,滚动更新,新旧版本共存,如果有10台机器,发布过程准确11台就行
         优点:节省机器、最小化停机时间、平滑过渡
         缺点:出问题了,不确定是新版本的问题还是旧版的问题,最关键的是缺少流量控制

      蓝绿:环境维度,以整套环境为单位切换流量
         核心特点是两套一样的环境,在此基础上你可以做流量分配:80%旧,20%新,然后逐步增加新环境流量
         缺点:耗费资源
         优点:随时切换,快速切回旧的稳定环境,也能扛住压力,因为原来的环境原封不动地留着

      金丝雀Canary:流量维度,以服务为单位切换流量,从所有流量中随机选出一批小白鼠
         与蓝绿很像
         蓝绿是新服务全部部署到一套全新的环境中
         金丝雀,是部分服务部署,先部署几台机器,然后采用控制流量的方式,逐步验证

         然后一点点扩大范围,适用于迭代版本,而不是大版本变更,因为是部分更新,存在老组建访问新组件,因此必须兼容

         而蓝绿就不需要考虑这个问题

      灰度发布:粒度是用户级,从所有用户中事先选出一部分当小白鼠
         从已注册的用户中选出一批,给人家一点优惠,让人家尝试新功能,给予你反馈
         发布方式,就是先灰,再正式

         而金丝雀是通过控制流量层面不区分用户,就是先小范围流量测试,让后再扩大,与灰度的思想都是一样的
      

      AB测试,关注的是效果,从中选出符合用户喜好的变更,而滚动、蓝绿、金丝雀发布都是发布策略关注的是有没有bug

      有赞灰度发布方案:https://tech.youzan.com/gray-deloyments-and-blue-green-deployments-practices-in-youzan/

沙箱环境与测试换环境区别?
沙箱环境和测试环境的关键区别主要体现在它们的目的和互动性质。
目的:
(1) 沙箱环境主要是为了给开发者提供一个可以自由实验的环境,在这个环境下,开发者可以尝试使用新的代码或框架,实验证明一些假设,或者复现一些不易在生产环境中出现的错误。
(2) 而测试环境则主要是用来验证软件产品在生产环境中的表现,包括验证新开发的功能是否正常,是否存在问题等。

互动性质:
(1) 在沙箱环境中,开发者可以进行大量的尝试和改动,因为这个环境是隔离的,不会影响到其他的环境或数据。
(2) 而在测试环境中,所有的改动都是需要被严格记录和控制的,因为这个环境是为了尽可能地模拟生产环境。

总的来说,沙箱环境是一个供开发者自由尝试和学习的地方,而测试环境则是一个严谨重现和预测生产环境行为的地方

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 沪ICP备2022009235号 沪公网安备31011802005110号 青浦区尚茂路798弄 联系方式-13697081366