# 灰度 / 版本管理
微信开发者工具 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。这种方式可以保证灰度的用户维度的一致性。