# 灰度发布

CloudBase 云函数拥有多版本管理的功能,多个版本间可以使用函数灰度能力来调整请求流量的比例,达到线上业务可灰度,可回滚的能力,保证线上发布业务平滑过渡。

# 相关概念

# 版本

每个云函数可以发布多个版本,版本就是一个函数在生成版本时刻的快照,包含代码和配置(超时时间、环境变量等)。

# LATEST 版本

云函数始终存在一个 LATEST 版本,即最新版本,您上传、更新、部署云函数的代码,都是更改 LATEST 版本。

# 流量比例

您可以调配不同版本云函数的流量比例,CloudBase 会根据比例,自动分发请求流量。

# 一致性保证

CloudBase 使用用户的全局唯一 ID 来保证请求的一致性。

设置了流量比例后,如果某用户被分配到了某个流量区间,则该用户调用该云函数时一定会走到该流量区间对应的云函数版本,而不会出现随机分配的现象。

例如,云函数的 LATEST 流量占比 10%,版本 1 占比 90%,如果某个用户经系统判断落在了版本 1 上,则此用户对该云函数的所有请求都一定会落在版本 1 上,而不是 90% 概率到版本 1,10 % 概率到 LATEST。

对于没有用户信息的请求,灰度默认是随机调度。

# 如何灰度

推荐的灰度流程如下:

  1. 从 LATEST 上发布一个新版本,此版本的快照与当前 LATEST 一致;
  2. 将 LATEST 版本的流量设置为 0,将新发布的版本流量设置为 100%;
  3. 更新云函数代码(此时 LATEST 版本已经更新,但流量为 0);
  4. 自行调配 LATEST 版本灰度比例。

例如:

  1. 发布版本 1;
  2. 设置 100% 流量到版本 1;
  3. 更改 LATEST 代码,并且部署;
  4. 此时希望 10% 的线上流量给到需要灰度观察的最新代码,则设置 10% 流量给到 LATEST,90% 流量给版本 1。

# 灰度使用

# 生成版本

登录 CloudBase 云开发控制台 (opens new window),进入 云函数管理页面 (opens new window),点击想要灰度的函数:

在「灰度配置」中,点击「发布新版本」对 LATEST 生成一个新的版本,输入版本描述后,即可生成版本 1。

提示

生成版本后无法将无法更改此版本的代码。

# 配置流量比例

配置不同版本中的灰度比例,如下:

这里注意调整比例后,业务立马生效,请谨慎配置后确认。

# 最佳实践

# 第一次使用

第一次云函数灰度时,只有 LATEST 版本,没有任何生成的版本,此时需要开发者先为当前 LATEST 版本发布一个版本:

  1. 在控制台中选择云函数,发布新版本 1,将流量设置为 100%;
  2. 更新 LATEST 版本,此时由于 LATEST 版本的流量为 0,所以不影响线上业务;
  3. 将 LATEST 和 1 的流量比例分别设为 10% 和 90%

此时完成第一次线上灰度,新版本(更新后的 LATEST)占比流量为 10%,老版本(版本 1)占比流量为 90%。

# 版本回退/全量

全量和回退版本,只需要把流量调整,使得 100% 导向指定灰度版本/正式版本即可。