Skip to main content

灰度发布流程管理(行级)

引言

本文介绍基于 行级版本管理 的灰度发布流程。

数据从修改到发布的过程需 遵循事先设定的灰度流程 进行发布。即,管理者规定数据的灰度规则,约定数据必须 先灰度,再全量,且灰度的范围都是事先配置好的;这样一来,数据都按照统一的发布流程进行发布。

准备工作

定义一个名为入园发布流程模版, 每一个发布流程模版 都包含了若干个 发布节点。 每一个 发布节点对应行版本管理 中的一张制品表。

我们添加两个节点 打疫苗进笼子. 灰度规则分别为 id等于vacid等于cage

新建数据并发布

  • 新建一条 老虎 数据并保存。
  • 点击此行中的发布按钮

    在这里可以看到我们之前配置的 入园 流程。 在此示例中,我们先不走流程,直接全量发布。(当然也可以走 入园 流程)

enter image description here #800px

获取数据

发送GET请求:

http://YOUR_HOST/api/private/switch/object/{YOUR_OBJECTID}?appid={YOUR_APPID}&schemaid={YOUR_SCHEMAID}&schemakey={YOUR_SCHEMAKEY}

(可选)在后面query中添加 id=vac 或 id=cage, 我们都将获得全量发布的数据结果

{
"data": {
"_id": "6389678049d2942dd202d7dd",
"name": "老虎",
"_ctime": "2022-12-02T02:48:33.000Z",
"_mtime": "2022-12-02T02:48:33.000Z"
},
"code": 200
}

修改(新建)数据并发布

  • 修改数据的值:从 ‘老虎’ -> '大老虎' 并保存
  • 点击 发布 按钮
  • 这次我们选择 入园 流程

enter image description here #800px

入园 流程中打疫苗全量发布节点为可选发布目标。 我们先选择 打疫苗 节点,(可选)输入版本描述并点击灰度发布

首次开启流程

第一次开启流程时,只能选择 全量 或者 流程中的第一个节点 进行发布。继续流程时可以批量发布多个节点。

获取数据

发送GET请求:

http://YOUR_HOST/api/private/switch/object/{YOUR_OBJECTID}?appid={YOUR_APPID}&schemaid={YOUR_SCHEMAID}&schemakey={YOUR_SCHEMAKEY}&id=vac

注意后面的 id=vac query,会命中我们的打疫苗灰度。

{
"data": {
"_id": "6389678049d2942dd202d7dd",
"name": "大老虎",
"_ctime": "2022-12-02T02:48:33.000Z",
"_mtime": "2022-12-02T03:00:32.000Z"
},
"code": 200
}

可以看到name字段已经变成修改后的值,并且修改时间字段已经被更新了。 尝试将 id query 删除,接口将返回旧数据 (未灰度数据)

{
"data": {
"_id": "6389678049d2942dd202d7dd",
"name": "老虎",
"_ctime": "2022-12-02T02:48:33.000Z",
"_mtime": "2022-12-02T02:48:33.000Z"
},
"code": 200
}

批量流程

多条数据的修改和新增删除可以多选并一起加入 发布流程组

  • 新增 小狗小猫 数据, 一同勾选并发布到 打疫苗 节点。

    此时会将这两条数据打包成一个 发布组。后续对任意行的发布都将一同发布其所在组中的所有数据 enter image description here #800px

  • 如果多选的数据不属于同一个发布组,则不允许发布(勾选 小狗大老虎 一并发布) enter image description here #800px

终止流程

在发布流程中,可以点击 终止流程并选择

  1. 只终止 (不推荐)
  2. 回滚数据

如果点击只终止,则流程结束。但是制品表中的数据依然存在。下次发布前,需要再修改一次数据才可以发布到之前停止的灰度节点。