不容闪失的灰度发布简介

简介: 不容闪失的灰度发布简介

1 线上项目灰度发布的重大意义


6cf443c14864475296e488315813fc27.png

上面这个软件相信大家一定不陌生,很多人和我一样一定还欠他钱!支付宝经历了十多年,从未停止更新过,app从最初简单设计到现在的扁平化设计,一直在更新,但奇怪的是它从未停过服务,而且越用越顺畅。不停服务就实现软件更新,这是怎么做到的呢?这个问题也是线上项目需要迫切解决的问题。除了支付宝,还有QQ、微信、抖音、头条等各大app,都是不停服务更新软件,他们用的都是什么黑科技呢?学习了灰度发布,也能让你的软件一样不停机优雅的更新。


2 项目发布问题剖析

项目发布的时候,普通程序员理解,大概是安装个Tomcat发布一下,域名解析一下保障项目能正常提供服务就可以了。但这种操作在真正打大型互联网公司中是一个都不值得拿出来说的基本过程,真正大型互联网公司发布一个稳定项目有很多因素考虑。


对于运维工程司而言,每次项目发布都是有风险,比如发布步骤遗漏、发布流程不规范、一些隐藏的BUG等都有可能导致线上的服务不稳定,如果项目对应库版本升级了,很有可能造成项目无法运行的后果。


对于产品经理而言, 在产品设计上他们都有各自不同的观点,都有各自的设计方案(A方案、B方案),如果每个方案都很优秀,该如何抉择?谁官大发布谁的?谁拍桌子拍的狠听谁的?都不是,应该由用户选择,针对不同用户进行试点使用,让部分特定用户使用A方案,部分用户使用B方案,其他用户仍然使用之前稳定的方案,最终哪套方案受欢迎就发布指定版本。


3 解决方案

3.1 蓝绿部署

5cb58c8433014b28bd414f2ec10a0ea7.png

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


3.2 滚动发布

372c0f52905c47238c79495fccc3c442.png

所谓滚动升级,就是在升级过程中,并不一下子启动所有新版本,是先启动一台新版本,再停止一台老版本,然后再启动一台新版本,再停止一台老版本,直到升级完成,这样的话,如果日常需要10台服务器,那么升级过程中也就只需要11台就行了。

但是滚动升级有一个问题,在开始滚动升级后,流量会直接流向已经启动起来的新版本,但是这个时候,新版本是不一定可用的,比如需要进一步的测试才能确认。那么在滚动升级期间,整个系统就处于非常不稳定的状态,如果发现了问题,也比较难以确定是新版本还是老版本造成的问题。为了解决这个问题,我们需要为滚动升级实现流量控制能力。


3.3 灰度发布

a16f95620b124c60bc1f9a3c36b59ce7.png

灰度发布也叫金丝雀发布,起源是,矿井工人发现,金丝雀对瓦斯气体很敏感,矿工会在下井之前,先放一只金丝雀到井中,如果金丝雀不叫了,就代表瓦斯浓度高。在灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。如果没有问题,那么可以将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据,如果此时对新旧版本做各种数据对比,就是所谓的A/B测试。


当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量,以使得新版本能够承受越来越大的流量压力。直到将100%的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。如果在灰度发布过程中(灰度期)发现了新版本有问题,就应该立即将流量切回老版本上,这样,就会将负面影响控制在最小范围内。


3.4 灰度发布方法

灰度发布用户群体通知的方法比较多,可以有这些方式:

产品Q群、产品微信群:向固定群体发送产品更新链接,指定群体能使用新版本。

内部用户:通知公司内部用户测试试用。

app自升级:可以根据时间段,用户版本,升级请求数量,实际升级。

灰度发布分类:

1)web页面灰度:按照ip或者用户id切流啊。具有随机性,可以控制比例。

2)服务端灰度:考验主系分能力了,可以做逻辑切换开关,按照义务相关属性逐渐切流。

3)客户端灰度:一般按照用户逐渐推送包,主要是PC端(WIN,MAC)、移动端(安卓,OS)内部大规模内测。

目录
相关文章
|
人工智能 网络协议 安全
Apache(httpd)的简介、安装以及如何使用(上)
Apache(httpd)的简介、安装以及如何使用(上)
1105 0
Apache(httpd)的简介、安装以及如何使用(上)
|
30天前
|
人工智能 小程序 搜索推荐
解析数字人公司如何构建3D、2D、AI数字人交互全栈技术方案?
在AI技术驱动下,虚拟数字人正从形象载体进化为具备交互与执行能力的“业务智能体”,重塑人机服务模式。本文解析2D复刻与3D创造两大技术路径,探讨其在政务、文旅、医疗、教育等场景的落地实践,展现AI数字人如何以全栈技术和多模态交互,成为产业智能化升级的核心工具。
190 1
|
1月前
|
存储 监控 调度
Apache DolphinScheduler 数据库模式深度解析:从表结构到调度逻辑
Apache DolphinScheduler 作为开源分布式工作流调度平台,其数据库模式是核心支撑。本文从表结构、模块设计到企业实践,解析如何通过七大表组与分布式架构,实现跨集群调度、高可用与插件扩展,助力3000+企业高效管理数据任务,推动云原生时代下的智能调度演进。(238字)
|
11月前
|
机器学习/深度学习 存储 人工智能
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
MNN-LLM App 是阿里巴巴基于 MNN-LLM 框架开发的 Android 应用,支持多模态交互、多种主流模型选择、离线运行及性能优化。
9083 80
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
|
数据可视化 NoSQL 关系型数据库
数据中枢平台 · 致力于打造行业场景化数据枢纽
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
数据中枢平台 · 致力于打造行业场景化数据枢纽
|
运维 关系型数据库 分布式数据库
技术选型思考:分库分表和分布式DB(TiDB/OceanBase) 的权衡与抉择
技术选型思考:分库分表和分布式DB(TiDB/OceanBase) 的权衡与抉择
|
iOS开发 MacOS
MAC OS更新系统后IDEA中的SVN报错无法使用
MAC OS更新系统后IDEA中的SVN报错无法使用
|
安全 开发者 UED
APP上架到应用商店需要哪些流程?
APP上架是一个涉及多个步骤和准备工作的过程,主要包括准备上架资料和遵循上架流程两个方面。
1502 1
|
设计模式 Java 测试技术
《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
【7月更文挑战第11天】页面对象模型(POM)通过Page Factory在Java Selenium测试中被应用,简化了代码维护。在POM中,每个网页对应一个Page Class,其中包含页面元素和相关操作。对比之下,非POM实现直接在测试脚本中处理元素定位和交互,代码可读性和可维护性较低。
196 0
|
运维 负载均衡 Kubernetes
一文搞懂蓝绿发布、灰度发布和滚动发布
一文搞懂蓝绿发布、灰度发布和滚动发布
1389 6

热门文章

最新文章