总结:常见的服务发布策略

本文介绍了两种常见的服务发布策略——蓝绿发布和金丝雀发布。蓝绿发布通过冗余部署确保服务升级时的快速回滚,而金丝雀发布则通过逐步引流流量来验证新版本的稳定性,降低影响范围。两种策略各有优缺点,适用于不同的服务升级场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、介绍

为了避免版本发布带来的各种故障以及回退问题,本文总结了几种常见的服务发布策略来解决版本升级过程中带来的问题

二、蓝绿发布

蓝绿发布需要对服务的新版本进行冗余部署,一般新版本的机器规格和数量与旧版本保持一致,相当于该服务有两套完全相同的部署环境,只不过此时只有旧版本在对外提供服务,新版本作为热备。当服务进行版本升级时,我们只需将流量全部切换到新版本即可,旧版本作为热备。由于冗余部署的缘故,所以不必担心新版本的资源不够。如果新版本上线后出现严重的程序 BUG,那么我们只需将流量全部切回至旧版本,大大缩短故障恢复的时间。待新版本完成 BUG 修复并重新部署之后,再将旧版本的流量切换到新版本。

如图,某服务旧版本为 v1,对新版本 v2 进行冗余部署。版本升级时,将现有流量全部切换为新版本 v2。

当新版本 v2 存在程序 BUG 或者发生故障时,可以快速切回旧版本 v1。

蓝绿部署的优点:

1、部署结构简单,运维方便;

2、服务升级过程操作简单,周期短。

蓝绿部署的缺点:

1、资源冗余,需要部署两套生产环境;

2、新版本故障影响范围大。

三、金丝雀发布

金丝雀发布也叫灰度发布。

金丝雀发布的思想则是将少量的请求引流到新版本上,因此部署新版本服务只需极小数的机器。验证新版本符合预期后,逐步调整流量权重比例,使得流量慢慢从老版本迁移至新版本,期间可以根据设置的流量比例,对新版本服务进行扩容,同时对老版本服务进行缩容,使得底层资源得到最大化利用。

如图,某服务当前版本为 v1,现在新版本 v2 要上线。为确保流量在服务升级过程中平稳无损,采用金丝雀发布方案,逐步将流量从老版本迁移至新版本。

金丝雀发布的优点:

1、按比例将流量无差别地导向新版本,新版本故障影响范围小;

2、发布期间逐步对新版本扩容,同时对老版本缩容,资源利用率高。

金丝雀发布的缺点:

1、流量无差别地导向新版本,可能会影响重要用户的体验;

2、发布周期长。

四、流量隔离环境发布

一般我们发布的单位都是应用,但是一个功能模块往往是由多个应用组合在一起提供的服务(如微服务),即使当前发布的应用出现了异常,这个异常也未必体现在当前应用中,在复杂的情况下,异常会延迟到它的下游应用才体现出来,如何发现此类问题并且不影响用户体验是非常重要的。此外,我们有时候还希望新版本的代码上线以后,只影响到一小部分用户。而传统的灰度发布,因为无法识别业务流量,所以即使某个应用只有一台机器出现了问题,也可能会影响到所有的用户。

如下图左侧的灰度发布,App1 的所有机器都有一定概率会路由到出现问题的红色 App2 机器上。而右侧的隔离环境发布中,新版本的代码会先发布在全链路隔离环境中,即使发布中出现问题,也只会影响少量用户。

优点:

  1. 能够发现一些复杂的, 涉及到多应用的问题

  2. 出现故障时, 只会影响很小一部分用户

缺点:

  1. 需要对流量隔离环境进行独立监控

  2. 系统设计复杂, 需要中间件和链路上的所有应用能够识别业务流量

适用场景:

  1. 较为核心的生产业务场景

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值