# 灰度 / 版本管理
微信开发者工具 1.02.2005112 起
云开发提供发布版本(快照)和多版本间调整流量比例的能力。借此能力用户可以完成灰度,同时可以灰度函数配置。
# 核心概念
云函数版本
一个云函数可以发布多个版本,一个版本就是一个函数在当前时刻的快照,包含其代码和配置(超时时间、环境变量等)。
云函数始终存在一个 LATEST
版,即最新版。编辑器中上传云函数和在控制台更改配置始终更改 LATEST
版本。
在发布版本时,总是从 LATEST
当前的状态发布一个版本(快照)。
要进行灰度,只需更改版本之前的流量配比,即可实现灰度。
流量比例
在没有设置流量比例前,默认情况下都是 100% 流量导向 LATEST
版本,在发布一个或多个版本后,即可调整各个版本之间的流量比例。
比如现在要进行灰度,首先我们发布版本 1
,然后设置 100% 流量到版本 1
,接着更改 LATEST
代码,此时希望 10% 的线上流量给到需要灰度观察的最新代码,则设置 10% 流量给到 LATEST
,90% 流量给到 1
。
# 操作流程示例
# 1. 第一次灰度
此时云函数只有 LATEST
版本、没有快照,用户在本地改了代码后进行灰度的步骤:
- 用户在控制台中选择云函数,发布新版本
A
,将流量设置为 100% 导向A
- 用户在编辑器上传代码更新
LATEST
- 开始灰度
10%
:用户将LATEST
和A
的流量比例设为 10%、90%- 需要 ”全量“ :用户从
LATEST
发布新版本B
,将流量 100% 导向B
- 需要回退:用户将
LATEST
流量比例设为 0%
- 需要 ”全量“ :用户从
# 2. 第二次及之后灰度
此时云函数有 LATEST
版本和版本 A
,100% 导向 A
,要灰度只需更新 LATEST
然后调高比例。
# 3. 线上版本回退
比如此时 100% 导向 A
,希望回退到 B
,则调权使得 100% 导向 B
# 4. 配置灰度
假设此时云函数有 LATEST
版本和版本 A
,100% 导向 A
,此时想要更改云函数环境变量并灰度:
- 用户在控制台更改云函数的配置
- 用户从
LATEST
发布新版本B
- 之后的操作同上述流程
# 其他说明
用户维度灰度
设置了流量配比后,如果一个用户被分配到了该流量区间,则该用户调用该云函数时一定会走到该流量区间对应的云函数版本,不会出现随机分配的现象。比如假设云函数 a
的 LATEST
流量占比 10%,版本 1
占比 90%,如果该用户 openid_1
经系统判断落在了版本 1 上,则用户 openid_1
的对云函数 a
的请求都一定会落在版本 1
上,而不是 90% 概率到 1
、10 % 概率到 LATEST
。这种方式可以保证灰度的用户维度的一致性。