说明
蓝绿部署、A/B测试、金丝雀发布,以及灰度发布、流量切分等,经常被混为一谈,影响沟通效率。 根本原因是这些名词经常出现,人们耳熟能详能够熟练地谈起,对这些术语的理解却没有达成一致。
下面是从Blue-green Deployments, A/B Testing, and Canary Releases中整理出来的定义。
蓝绿部署
在、蓝绿部署的目的是减少发布时的中断时间、能够快速撤回发布。
It’s basically a technique for releasing your application in a predictable manner with an goal of reducing any downtime associated with a release. It’s a quick way to prime your app before releasing, and also quickly roll back if you find issues.
蓝绿部署中,一共有两套系统:一套是正在提供服务系统,标记为“绿色”;另一套是准备发布的系统,标记为“蓝色”。两套系统都是功能完善的,并且正在运行的系统,只是系统版本和对外服务情况不同。
最初,没有任何系统,没有蓝绿之分。
然后,第一套系统开发完成,直接上线,这个过程只有一个系统,也没有蓝绿之分。
后来,开发了新版本,要用新版本替换线上的旧版本,在线上的系统之外,搭建了一个使用新版本代码的全新系统。 这时候,一共有两套系统在运行,正在对外提供服务的老系统是绿色系统,新部署的系统是蓝色系统。
蓝色系统不对外提供服务,用来做啥?
用来做发布前测试,测试过程中发现任何问题,可以直接在蓝色系统上修改,不干扰用户正在使用的系统。(注意,两套系统没有耦合的时候才能百分百保证不干扰)
蓝色系统经过反复的测试、修改、验证,确定达到上线标准之后,直接将用户切换到蓝色系统:
切换后的一段时间内,依旧是蓝绿两套系统并存,但是用户访问的已经是蓝色系统。这段时间内观察蓝色系统(新系统)工作状态,如果出现问题,直接切换回绿色系统。
当确信对外提供服务的蓝色系统工作正常,不对外提供服务的绿色系统已经不再需要的时候,蓝色系统正式成为对外提供服务系统,成为新的绿色系统。 原先的绿色系统可以销毁,将资源释放出来,用于部署下一个蓝色系统。
蓝绿部署只是上线策略中的一种,它不是可以应对所有情况的万能方案。 蓝绿部署能够简单快捷实施的前提假设是目标系统是非常内聚的,如果目标系统相当复杂,那么如何切换、两套系统的数据是否需要以及如何同步等,都需要仔细考虑。
BlueGreenDeployment中给出的一张图特别形象:
金丝雀发布
金丝雀发布(Canary)也是一种发布策略,和国内常说的灰度发布是同一类策略。
蓝绿部署是准备两套系统,在两套系统之间进行切换,金丝雀策略是只有一套系统,逐渐替换这套系统。
譬如说,目标系统是一组无状态的Web服务器,但是数量非常多,假设有一万台。
这时候,蓝绿部署就不能用了,因为你不可能申请一万台服务器专门用来部署蓝色系统(在蓝绿部署的定义中,蓝色的系统要能够承接所有访问)。
可以想到的一个方法是:
只准备几台服务器,在上面部署新版本的系统并测试验证。测试通过之后,担心出现意外,还不敢立即更新所有的服务器。 先将线上的一万台服务器中的10台更新为最新的系统,然后观察验证。确认没有异常之后,再将剩余的所有服务器更新。
这个方法就是金丝雀发布。
实际操作中还可以做更多控制,譬如说,给最初更新的10台服务器设置较低的权重、控制发送给这10台服务器的请求数,然后逐渐提高权重、增加请求数。
这个控制叫做“流量切分”,既可以用于金丝雀发布,也可以用于后面的A/B测试。
蓝绿部署和金丝雀发布是两种发布策略,都不是万能的。有时候两者都可以使用,有时候只能用其中一种。
上面的例子中可以用金丝雀,不能用蓝绿,那么什么时候可以用蓝绿,不能用金丝雀呢?整个系统只有一台服务器的时候。
A/B测试
首先需要明确的是,A/B测试和蓝绿部署以及金丝雀,完全是两回事。
蓝绿部署和金丝雀是发布策略,目标是确保新上线的系统稳定,关注的是新系统的BUG、隐患。
A/B测试是效果测试,同一时间有多个版本的服务对外服务,这些服务都是经过足够测试,达到了上线标准的服务,有差异但是没有新旧之分(它们上线时可能采用了蓝绿部署的方式)。
A/B测试关注的是不同版本的服务的实际效果,譬如说转化率、订单情况等。
A/B测试时,线上同时运行多个版本的服务,这些服务通常会有一些体验上的差异,譬如说页面样式、颜色、操作流程不同。相关人员通过分析各个版本服务的实际效果,选出效果最好的版本。
原文链接:https://blog.csdn.net/Tiger_lin1/article/details/92797848
相关推荐
《跨端灰度监控方案建设》一文正是针对这一需求,提出了一套全面的灰度监控方案,其内容涉及跨端监控的各个方面,包括背景介绍、技术方案、线上案例、总结等。 首先,文章介绍了灰度监控的背景,强调在传统前端视角...
深度学习模型部署与剪枝优化实例视频教程下载。深度学习模型部署与剪枝优化实例课程旨在帮助同学们快速掌握模型部署与优化方法。 主要包括两大核心模块: 1.基于深度学习框架PyTorch与Tensorflow2版本演示模型部署...
总之,《照度不均匀图像的快速自适应灰度修正》一文提出的灰度修正方法,不仅解决了近距离成像中照度不均匀的难题,还展示了其在高速图像处理领域的巨大潜力。这一成果对于推动机器视觉技术的发展,特别是在工业自动...
综上所述,《基于人工神经网络和灰度矩阵的泵功图诊断》一文提出了使用人工神经网络和灰度矩阵技术进行泵功图故障诊断的方法。这种方法不仅能够提高故障诊断的准确性,还能降低对人工干预的需求,具有很高的工程应用...
openai的chatgpt,革命性的一个技术,ChatGPT 是一个原型人工智能聊天机器人,专注于可用性和对话。由OpenAI开发,采用基于GPT-3.5架构的大型语言模型。以往的AI,你进行对话,它是根据你输入的关键词,来给你反馈...
使用nohup将训练程序后台不间断运行+随时查看训练情况输出与可视化使用服务器进行远程训练nohup指令和查看输出缺省输出文件的写法指定输出文件的写法和CUDA一起用实时查看out配合visdom使用 使用服务器进行远程训练 ...
一文带你深入了解数据流图及其作用一文带你深入了解数据流图及其作用一文带你深入了解数据流图及其作用一文带你深入了解数据流图及其作用一文带你深入了解数据流图及其作用一文带你深入了解数据流图及其作用一文带你...
仓颉编程语言:一文读懂,什么是仓颉编程语言? 仓颉编程语言:一文读懂,什么是仓颉编程语言? 仓颉编程语言:一文读懂,什么是仓颉编程语言? 仓颉编程语言:一文读懂,什么是仓颉编程语言? 仓颉编程语言:一文读...
Kubernetes 核心架构组件概述 Kubernetes(K8S)是一种开源的容器编排系统,提供了丰富的功能来管理容器化的应用程序。本文将对 K8S 的核心架构组件进行详细的介绍,包括 Master Node、Worker Node、ApiServer、...
汽车零部件行业专题报告:一文看完EDR
模拟退火算法一文搞懂模拟退火算法(Simulated Annealing,SA)一文搞懂模拟退火算法(Simulated Annealing,SA)一文搞懂模拟退火算法(Simulated Annealing,SA)一文搞懂模拟退火算法(Simulated Annealing,SA)...
吴恩达,这位著名的人工智能专家,在最近的演讲中探讨了人工智能从概念验证到实际部署过程中所面临的三大挑战,并提出了解决方案。他的主题是“Bridging AI's Proof-of-Concept to Production Gap”,强调了从实验室...
在本文中,我们将深入探讨《从小白到大神,一文掌握 Python 密集知识点》这份资料所涵盖的丰富Python编程知识。Python是一种高级、通用的编程语言,以其易读性、简洁的语法和强大的库支持而备受青睐。无论你是初学者...
编程知识+技术开发+Springboot入门知识,一文掌握Springboot体系;编程知识+技术开发+Springboot入门知识,一文掌握Springboot体系;编程知识+技术开发+Springboot入门知识,一文掌握Springboot体系;编程知识+技术...
随着应用场景的多样化,特别是对于资源受限的设备来说,如何有效地部署YOLO成为了研究的重点之一。本文将详细介绍YOLOv5在剪枝和量化方面的最新进展,探讨如何通过这些技术进一步提升YOLOv5的部署效率和性能。 ####...
综上所述,《离散元仿真中滚动阻力模型的评估》一文深入探讨了滚动阻力模型在离散元仿真中的应用与局限性。通过对比分析多种模型,并结合具体的模拟案例,本文不仅为研究人员提供了选择合适模型的依据,还为改进现有...
### Jenkins自动化构建部署知识点 #### 一、Jenkins安装与配置 ##### 1.1 安装前的环境变量配置 - **环境变量**: 在安装Jenkins之前,首先需要配置`JENKINS_HOME`环境变量,指定Jenkins的安装目录。例如可以设置为`...
自然语言处理中的Transformer模型真正改变了我们处理文本数据的方式。Transformer是最近自然语言处理发展的幕后推手,包括Google的BERT。了解Transformer的工作原理、它如何与语言建模、序列到序列建模相关,以及它...
一文理清国有企业董事会、经理层决策重大问题的前置程序时的权责边界.pdf