【项目管理】灰度发布(灰度放量)

在这里插入图片描述从色彩角度讲,灰度指不饱和的黑色,我们把黑色定为基准色,每个灰度对象是从白色(0%)到黑色(100%)的中间值,这中间的98%都是灰。

1,概念

1)蓝绿部署

两套环境,一套正在提供服务(旧版),标记为绿色;一套是准备发布的系统(新版),标记为蓝色。用户流量接到蓝色系统上,经过反复的测试、修改、验证,确定达到上线标准之后,直接将用户切换到蓝色系统, 切换后的一段时间内,依旧是蓝绿两套系统并存,但是用户访问的已经是蓝色系统。这段时间内观察蓝色系统(新系统)工作状态,如果出现问题,直接切换回绿色系统。

优缺点

蓝绿部署的目的是减少发布时的中断时间、能够快速撤回发布。两套系统没有耦合的时候才能百分百保证不干扰。

2)金丝雀部署(版本试错)

大部分用户使用旧版功能,选定小部分用户试用新版本的,这个影响范围可控的发布版本就是金丝雀部署的版本。在测试过程中持续观测被测试的服务各个维度的状态,验证新版本的健壮性、可用性、稳定性等。
场景:发布新版本时,确保这个版本即使发生问题也只会影响很少的或者可控范围内的用户。如果运行稳定,那么逐步扩大范围把用户全部迁移至此版本。有效降低风险。

优点

  1. 零下线时间与快速回滚:
    在一系列的相关验证和测试之后,如果新版本的软件被认为不合适,则很容易回滚和控制影响范围。
  2. 真实场景下的测试:
    由于是直接将新版本部署到生产环境进行测试,所以能够通过真实流量对新版本进行针对性的验证。当然,需要对流量和用户进行限制,来控制验证的范围和影响面。
  3. 较低的基础设施成本:
    因为金丝雀部署策略是通过一定规则,按规则对的请求进行要求的分流或路由(例如:用户名、地区、年龄、随机等),所以只需要少量额外的基础设施,就可以达到验证的效果。对比蓝绿部署策略,需要准备与生产环境同样的一套基础设施,部署成本显然会高很多。
  4. 灵活的按需进行验证相关版本、功能的正确性。
    可以根据不同的特征和标识,对请求的流量进行多个维度分流和路由,以达到不同粒度不同特征的灵活验证。

3)灰度发布(版本平稳过渡)

类似金丝雀部署,两者关注点不同:金丝雀部署重点是确认选取的10%流量的金丝雀版本是否安全;而灰度发布是平滑地从10%慢慢向更大的流量进行扩展直至完成。两者实现方式和过程基本类似:比如通过流量切换的方式。
灰度发布渐进式完成新版本应用的全量上线,最大限制地控制新版本发布带来的业务风险,降低故障带来的影响面,同时支持快速回滚。

灰度期:
灰度发布开始到结束期间的这一段时间

2,关键技术

1)网络流量分流

灰度规则:给出灰度名单进行流量分流。通过用户行为分析引导用户进入不同的页面,逐步放量。(甚至是用户id)
具体的实现就是通过负载均衡策略来实现。

2)分流策略管理

每次放量都需要调整灰度值。

3)多应用间分流传递策略

4)数据兼容性处理

灰度要处理的三个维度:

  1. 微服务
  2. 前端
  3. 数据
    数据包括db、kafka、redis等数据的处理。如果不兼容曾经的版本,那么灰度回滚将会是一件很麻烦的事情。

3,实现方案

1)基础设施实现(IaaS)

比如通过阿里云 MDS 工具实现。

2)平台实现(PaaS)

通过 K8S 的 Ingress 组件或 Istio 来实现。

3)通过 Nginx 等中间件实现

直接在 Nginx 中通过脚本控制流量转发规则(使用ngx+lua)。或者在网关层来实现(Spring-cloud-zuul)

4)Ingress-Nginx、Ambassador、Rancher、Spinnaker

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前后端分离项目实现灰度发布的主要思路将前端和后端的发布过程分离,并通过一些技术手段实现部分用户的灰度发布。下面是一种常见的实现方式: 1. 前端部分: - 前端代码可以通过版本控制工具(如Git)进行管理,每个功能或者模块对应一个分支或者一个特定的版本。 - 在灰度发布过程中,可以通过配置文件或者数据库来控制不同用户的访问权重,例如将10%的用户指向新版本,90%的用户指向旧版本。 - 可以使用一些前端框架(如Vue、React等)提供的路由功能,根据用户的访问路径来决定使用新版本还是旧版本。 2. 后端部分: - 后端代码也可以通过版本控制工具进行管理,每个功能或者模块对应一个分支或者一个特定的版本。 - 在灰度发布过程中,可以通过配置文件或者数据库来控制不同用户的访问权重,例如将10%的请求指向新版本,90%的请求指向旧版本。 - 可以使用一些反向代理工具(如Nginx)来实现请求的转发和负载均衡,根据用户的请求路径或者其他标识来决定使用新版本还是旧版本。 3. 监控和回滚: - 在灰度发布过程中,需要对用户的访问情况进行监控和统计,可以使用一些监控工具(如ELK、Prometheus等)来实现。 - 如果发现新版本存在问题或者性能不佳,可以及时回滚到旧版本,保证系统的稳定性和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值