版本升级之灰度发布

article/2025/11/5 8:27:56

在项目迭代的过程中,不可避免需要“上线”。上线对应着部署,或者重新部署;部署对应着修改,修改则意味着风险。应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务。如果直接将某版本上线发布给全部用户,一旦遇到线上事故(或BUG),对用户的影响极大,解决问题周期较长,甚至有时不得不回滚到前一版本,严重影响了用户体验。

长期以来,业务升级逐渐形成了几个发布策略:灰度发布(金丝雀发布)、蓝绿发布、A/B测试、滚动升级以及分批暂停发布,尽可能避免因发布导致的流量丢失或服务不可用问题。

灰度发布

定义:

灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B 上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

在这里插入图片描述
网关可以按照流量比例权重进行路由,也可以按照请求内容规则进行路由。

但是,在实际场景中,业务往往是复杂的,可能升级过程中需要多个服务同时升级。如下图所示:
在这里插入图片描述
如上图所示,针对服务ServiceA调用服务ServiceB来分析,需要额外配置服务ServiceB的治理规则,确保来自灰度环境的ServiceA的流量转发至服务ServiceB的灰度版本。这样的做法看似符合正常的操作逻辑,但是在真实业务场景中,业务的微服务规模和数量远超上述的例子,其中一条请求链路可能经过数十个微服务,新功能发布时也可能涉及到多个微服务同时变更,并且业务的服务之间依赖错综复杂,频繁的服务发布、以及服务多版本并行开发导致流量治理规则日益膨胀,给整个系统的维护性和稳定性带来了不利因素。

针对以上的问题,可以采用全链路灰度来解决。

全链路灰度:在微服务体系架构中,服务之间的依赖关系错综复杂,有时某个功能发版依赖多个服务同时升级上线。我们希望可以对这些服务的新版本同时进行小流量灰度验证,这就是微服务架构中特有的全链路灰度场景,通过构建从网关到整个后端服务的环境隔离来对多个不同版本的服务进行灰度验证。

我们只需部署服务的灰度版本,流量在调用链路上流转时,由流经的网关、各个中间件以及各个微服务来识别灰度流量,并动态转发至对应服务的灰度版本。

在这里插入图片描述

用不同的颜色来表示不同版本的灰度流量,可以看出无论是微服务网关还是微服务本身都需要识别流量,根据治理规则做出动态决策。当服务版本发生变化时,这个调用链路的转发也会实时改变。相比于利用机器搭建的灰度环境,这种方案不仅可以节省大量的机器成本和运维人力,而且可以帮助开发者实时快速的对线上流量进行精细化的全链路控制。

蓝绿发布

定义:

蓝绿部署,是指同时运行两个版本的应用。蓝绿部署的时候,并不停止掉老版本,而是直接部署一套新版本,等新版本运行起来后,再将流量切换到新版本上。但是蓝绿部署要求在升级过程中,同时运行两套程序,对硬件的要求就是日常所需的二倍,比如日常运行时,需要3台服务器支撑业务,那么使用蓝绿部署,你就需要购置6服务器。

在这里插入图片描述

滚动发布

定义:

所谓滚动升级,就是在升级过程中,并不一下子启动所有新版本,是先启动一台新版本,再停止一台老版本,然后再启动一台新版本,再停止一台老版本,直到升级完成,这样的话,如果日常需要6台服务器,那么升级过程中也就只需要6+1台就行了。但是滚动升级有一个问题,在开始滚动升级后,流量会直接流向已经启动起来的新版本,但是这个时候,新版本是不一定可用的,比如需要进一步的测试才能确认。那么在滚动升级期间,整个系统就处于非常不稳定的状态,如果发现了问题,也比较难以确定是新版本还是老版本造成的问题。为了解决这个问题,我们需要为滚动升级实现流量控制能力。


http://chatgpt.dhexx.cn/article/ioySldtv.shtml

相关文章

产品灰度发布

一、什么是灰度发布(灰度测试) 如果软件要在不久的将来推出一个全新的功能,或者做一次比较重大的改版的话,要先进行一个小范围的尝试工作,然后再慢慢放量,直到这个全新的功能覆盖到所有的系统用户&…

灰度发布

1、什么是灰度发布,有哪些好处? 答:灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。 在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用…

灰度发布究竟是啥

概述 目前产品优化迭代的方式,通常是直接将某版本上线发布给全部用户,一旦遇到线上事故(或BUG),对用户的影响极大,解决问题周期较长,甚至有时不得不回滚到前一版本,严重影响了用户体…

项目灰度发布功能设计

平台项目迭代发布过程中,有一些功能发布时会产生较大的影响,一旦出现问题,会影响用户使用体验,降低产品信誉。为了解决这一问题,在重要功能发布时需要引入灰度发布功能,借助一小部分用户在生产环境进行功能…

【华为云技术分享】从零搭建一个灰度发布环境

DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师。 官方网站:devui.design Ng组件库:ng-devui(欢迎Star) 引言 灰度发布&#x…

什么是灰度发布

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面 来。…

准确率(accuracy),精确率(Precision),召回率(Recall)和综合评价指标(F1-Measure )

自然语言处理(ML),机器学习(NLP),信息检索(IR)等领域,评估(evaluation)是一个必要的工作,而其评价指标往往有如下几点:准确率(accuracy),精确率(Precision),召回率(Recall)和F1-Measure。 本文将简单介绍其中几个概念。中文中这几个评价指标翻译各有不同,所以一般情…

多分类评价指标:准确率、精确率、召回率、F1值

准确率、精确率、召回率、F1值 定义: 准确率(Accuracy):正确分类的样本个数占总样本个数, A (TP TN) / N 精确率(Precision)(查准率):预测正确的正例数据占预测为正例数据的比…

准确率(Accuracy) VS 精确率(Precision) VS 召回率(Recall)

准确率(Accuracy) VS 精确率(Precision) VS 召回率(Recall) 在信息检索中, 准确率通常用于评价结果的质量, 而召回率用来评价结果的完整性。 我们的目标是训练一个模型,它可以将这个二维空间中的新数据点分成红色和蓝色两类。 数据有两种状态:测试集数据和预测结…

真正率、假正率、真负率

True Positive (真正, TP)被模型预测为正的正样本; True Negative(真负 , TN)被模型预测为负的负样本 ; False Positive (假正, FP)被模型预测为正的负样本; False Negat…

关于召回率和准确率的理解

最近一直在做相关推荐方面的研究与应用工作,召回率与准确率这两个概念偶尔会遇到, 知道意思,但是有时候要很清晰地向同学介绍则有点转不过弯来。 召回率和准确率是数据挖掘中预测、互联网中的搜索引擎等经常涉及的两个概念和指标。 召回率&am…

分类器性能指标错误率、正确率、召回率

前言 在使用机器学习的方法解决分类问题时,我们通常需要一个指标来衡量模型的性能,以下介绍一些常用的性能指标,在实际应用中可以依照应用需求采用相应的指标。 错误率 错误率是使用最普遍、最简单同时又是最粗糙的分类指标。其计算方法为…

分类模型的评估标准(精确率召回率准确率)

对模型进行评估时,可以选择很多种指标,但不同的指标可能得到不同的结果,如何选择合适的指标,需要取决于任务需求。 针对二元分类结果,常用的评估指标有如下三个:查准率(Precision)、…

准确率、精确率、召回率、F1-measure

文章目录 准确率(Accuracy)精确率(precision)召回率(recall)F1-measure值学习理解网站 -p’(Predicted)n’(Predicted)p(Actual)True PositiveFalse Negtiven(Actual)False PositiveTrue Negtive 准确率(Accuracy) A No.Samples Predicted Correctly Total No.of Samples T …

评价指标(一)精确率,召回率,F1-score

1. 精确率-Precision、召回率Recall 先来讲一下精确率(Precision)和准确率(Recall),首先要明确一点,精确率不等于准确率(Accuracy),两者是不同的,后面也会讲到准确率。在信息检索里,精确率和召…

错误接受率 (FAR), 错误拒绝率(FRR), 等错误率(EER)

不管是声纹识别和图像识别,以及指纹识别,在评价模型时总要用到这三个指标。下边说下这三个指标的含义。 1、错误接受率 (FAR-False Acceptance Rate) FAR nontarget_is_target / ( target_is_target nontarget_is_target ) 另一种比较容易理解的表示方…

Redis进阶:布隆过滤器(Bloom Filter)及误判率数学推导

1 缘起 有一次偶然间听到有同事在说某个项目中使用了布隆过滤器, 哎呦,我去,我竟然不知道啥是布隆过滤器, 这我哪能忍?其实,也可以忍,但是,可能有的面试官不能忍!&#…

机器学习中准确率、精确率、召回率、误报率、漏报率、F1-Score、APmAP、AUC、MAE、MAPE、MSE、RMSE、R-Squared等指标的定义和说明

在机器学习和深度学习用于异常检测(Anomaly detection)、电子商务(E-commerce)、信息检索(Information retrieval, IR)等领域任务(Task)中,有很多的指标来判断机器学习和深度学习效果的好坏。这些指标有相互权衡的,有相互背向的,所以往往需要根据实际的任务和场景来…

讨教大学|六西格玛之属性值数据一致性分析

相信大家在日常的工作中肯定会遇到这样一种情况:产品的质量特性属于外观特性,即 需要靠人工判断产品是不是符合标准。当遇到客户投诉,或者内部报废率比较高的时候,经 常会遇到客户和领导的挑战: 如何保证员工清楚的知…

布隆过滤器原理和基于BloomFilter的误判率展示

布隆过滤器 布隆过滤器原理 布隆过滤器是由n个Hash函数和一个二进制数组组成。 如图所示(参考,hash函数可以多个) 1.保存操作 发来一个请求数据hello对数据hello经过三次hash运算,分别得到三个值(假设1&#xff0…