你还在生产环境改代码么?函数计算版本管理(三)使用别名进行灰度发布

本文涉及的产品
简介:

通过了解阿里云函数计算新功能版本管理在事件驱动模式中的使用,我们看到了别名是如何简化新版本上线的过程的。然而现实是残酷的,直接更改别名指向的版本来升级服务时,往往会出现新版本引入带来的不稳定,有没有更好的方法呢?别名的灰度发布功能该登场了。函数计算提供的别名,可以指向一个主版本和一个灰度版本,并指定灰度版本的权重。这样就可以灵活调整两个版本间的流量分布,很大限度地减少上线新版本引起的不稳定。

dark launch

如上图所示,假设我们已经有别名Prod指向稳定的版本1,此时版本2也已经发布好准备上线。我们可以采用灰度发布的方式,更改Prod别名将灰度版本设定为2,灰度百分比设置为5%。更新后Prod指向的主版本仍然为版本1,函数计算会转移5%的流量到版本2,剩余95%的流量仍然由版本1来服务。当确定版本2稳定运行后,再更新别名Prod的主版本为版本2,从而完全切换到新版本。

 

当别名的灰度发布功能被使用时,您可以通过以下三种方式来确定被调用的服务版本:

  1. 如果您为自己的服务配置了日志服务,每次函数调用,都可以查看到相关日志。日志中的“isDarkLaunch”字段表示此次调用命中的是灰度发布的版本,“externalServiceVersion”字段表示此次调用使用的具体服务版本。
  2. 每次函数调用,Context对象的Service信息中会包括版本信息,其中 “qualifier”字段表示调用函数时传入的版本信息,“versionId”表示根据qualifier解析出的具体版本号。

  3. 每次同步函数调用,响应中都包含 “x-fc-invocation-service-version” header以指示调用的服务版本。

通过别名的灰度发布功能,流量可以在不同的版本间轻松切换,让新版本的上线更安全!总结一下:

  1. 使用别名Prod指向稳定的版本1,线上的调用都通过别名来进行。
  2. 当新版本2准备上线时,将Prod的灰度版本设为版本2,权重从5%开始。
  3. 观察版本2在线上表现稳定后,更新别名Prod指向版本2。

版本管理功能文档:

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
26天前
|
监控 Serverless 对象存储
Serverless 应用引擎常见问题之代码和普通版本不一样如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
23 1
|
4月前
|
存储 安全 Serverless
在函数计算中,当您通过应用关联到 Gitee 仓库并部署代码时
在函数计算中,当您通过应用关联到 Gitee 仓库并部署代码时
366 6
|
6月前
|
Serverless
函数计算中,测试代码“failed to match interface”
函数计算中,测试代码“failed to match interface”
60 0
|
6月前
|
Cloud Native 安全 关系型数据库
一起架构-某实时分析项目云原生 serverless 架构的设计思路和poc代码实现
一起架构-某实时分析项目云原生 serverless 架构的设计思路和poc代码实现
|
11月前
|
人工智能 运维 Kubernetes
假期充电,用阿里云 Serverless K8s + AIGC 搭建私人代码助理
假期充电,用阿里云 Serverless K8s + AIGC 搭建私人代码助理
如何在云平台创建一个 FC——代码编写
如何在云平台创建一个 FC——代码编写自制脑图
144 0
如何在云平台创建一个 FC——代码编写
|
Serverless
大依赖部署——解决函数计算上传代码包大小受限常见的解决方案
大依赖部署——解决函数计算上传代码包大小受限常见的解决方案自制脑图
1932 0
大依赖部署——解决函数计算上传代码包大小受限常见的解决方案
|
存储 JSON 缓存
用手机写代码:基于Serverless的在线编程能力探索(下)
但是,无论是那种类型,其背后的核心模块“代码执行器”/“判题机”等,都是值得被关注的。一方面,这类网站通常情况下都需要比要严格的“安全考虑”,例如程序会不会有恶意代码,出现死循环、破坏计算机系统等,程序是否需要隔离运行,运行时是否会获取到其他人提交的代码等;另一方面,这类平台通常情况下都会对资源消耗比较大,尤其是比赛来临时,更是需要突然间对相关机器进行扩容,必要时需要大规模集群来进行应对。同时这类网站通常情况下也都有一个比较大的特点,那就是触发式,即每个代码执行前后实际上并没有非常紧密的前后文关系等。
90 0
|
JSON 安全 Serverless
用手机写代码:基于Serverless的在线编程能力探索(上)
随着计算机科学与技术的发展,越来越多的人开始接触编程,也有越来越多的在线编程平台诞生。以Python语言的在线编程平台为例,关于Python语言的在线编程平台大致分为两类,一类是OJ类型的,即在线评测的编程平台,另一类则是学习、工具类的在线编程平台,例如Anycodes在线编程等网站。
113 0
|
弹性计算 Serverless 数据库
无服务器架构Serverless让开发者专注于代码的开发和运行
无服务器架构Serverless让开发者专注于代码的开发和运行
164 0

相关产品

  • 函数计算