Skip to content

参数取值与规则

每份云控配置每次请求都会返回一个值。这个值由 Setup → Rules 里一组按顺序求值的规则决定,最后由 Default Value 兜底。

四种取值类型

每份云控配置只有一种取值类型,决定了规则编辑器的样式与 SDK 拿到的数据形态

类型适合场景编辑器形态
Boolean功能开关、止损开关、显示 / 隐藏切换True / False 切换
Number数值阈值、时长、重试次数、权重数字输入框
String文案、URL、单一枚举值单行文本输入框
JSON结构化负载(主题、关卡配置、广告位等需要多个字段一起下发)带类型校验的 JSON 编辑器

怎么选

简单决策路径:

  1. 答案是「是 / 否」 → Boolean
  2. 答案是单一数字 → Number(不要把单位塞进数值,用字段名说明单位)
  3. 答案是一段文本或 URL → String(不要塞 JSON,多字段就升级 JSON)
  4. 结构再复杂一点 → JSON(彼此关联的字段一起版本化)

⚠️ 切换类型是破坏性操作。 配置上线后改 Value Type,规则编辑器会重建,无法解析为新类型的旧值会被清掉。请在创建之初就把形状想清楚;真要改形状时,建议新建一份配置并迁移调用方,而不是原地改。

各类型补充说明

Boolean —— 适合最朴素的「这个功能对这个用户是否打开」。如果你已经在想「是开,但要带这些参数」,那大概率应该用 JSON(一个字段做开关、其它字段做参数),开关和参数能一起变更。

Number —— 接受整数和小数。带单位的数字(「30 秒」 vs 「30 分钟」)请把单位写到配置名或描述里,ABC 不存储单位。

String —— 文本里已经出现逗号或大括号、本质是「列表 / 映射」,请改用 JSON。

JSON —— 顶部提供 Format JSON 和 Compress JSON 工具。保存前会校验是否合法 JSON。客户端应当把 JSON 形状视为契约:新增字段附默认值,避免重命名旧字段,破坏性变更通过版本号区分配置(my_config_v2)。

规则求值机制

Rules 区域以 IF / ELSE IF / ELSE 列表呈现:

远程配置 IF/ELSE 规则列表远程配置规则编辑器

求值顺序

规则从上到下依次求值。对一次请求:

  1. 取第一条规则
  2. 检查用户是否满足受众,并落在流量百分比之内。两者都满足 → 返回该规则的值,结束
  3. 否则进入下一条规则
  4. 没有任何规则命中时 → 返回 Default Value

一个用户最多只会命中一条规则。 重新排序就是重新决定优先级——Add Rules 在末尾追加新规则,拖动可以调整顺序。

顺序比覆盖范围更重要。 两条受众有重叠的规则,最终只有排在前面的那条会触发。最具体的规则放上面,最宽的兜底放下面。

编辑模式

setup 页面提供两种编辑模式(Form / JSON 切换):

  • Form(默认) —— 卡片式可视化编辑
  • JSON —— 同一份规则用 JSON 表达,跨配置或跨环境复制粘贴一整套规则时使用

JSON 修改实时同步回 Form 视图。

一条规则里有什么

每条规则包含 4 个字段:

字段含义
Select Audience按名称选取已存在的受众
Allowlist一组稳定的用户 ID,无论受众和流量百分比怎么写都直接命中本条规则。常用于 QA、内部用户
Traffic Percentage在受众命中的用户里,本条规则实际服务多少比例
Value命中时返回的值。编辑器形态随取值类型变化

关于 Traffic Percentage

流量百分比作用在受众命中之后。比如规则的受众是 vip_user、Traffic Percentage = 50,那么大约一半 VIP 用户命中这条规则;另一半流向下一条规则或默认值。

这让你可以不改受众就把分级发布铺开:

  • Day 1 —— 流量设 5%,95% 命中受众继续看默认值
  • Day 3 —— 指标健康,提到 25%
  • Day 7 —— 提到 100%,全量上线

如果把这条规则升级成实验,实验也是把这部分流量再拆分到不同变体里。

受众选择器的工作方式

规则保存的是受众名称,不是条件副本。受众的属性条件以只读形式渲染在选择器下方,让评审者无需离开 setup 页就能看清完整过滤条件(如 os_platform equals "ios")。

因为存的是引用而非副本,修改一个受众会同时改变所有引用它的云控配置(以及实验)的目标人群。平台会在受众被活跃实验引用时锁定其规则编辑入口防止意外漂移。

默认值(Default Value)

ELSE → Default Value 是必填的。当所有规则都没命中(受众不匹配、或匹配但被流量百分比挡掉)时,SDK 返回的就是它。

默认值应当是对最大群体最安全的那个值,通常是上线前的旧值。 新行为通过「在默认值之上加规则」引入,而不是原地改默认值——这样回退到默认值的客户端不会突然行为改变。


规则顺序与重叠受众

当两条规则引用的受众有重叠时,重叠用户永远只会触发排在前面的那条。

按具体程度排序:最具体的受众放最上面,最宽泛的(或默认规则)放最下面。

一个常见组合:

远程配置规则优先级示例

如果把 1 和 2 的顺序颠倒,内部测试人员会先落入 new_installs_v1_8 的桶,导致无法被强制开启,因为更宽泛的受众先匹配上了。


Archive 归档

平台推荐的退场方式:

  • 默认列表视图隐藏(用 Status 过滤器 + Archived 才可见)
  • SDK 新请求里不再参与求值
  • 已经 In Progress 的关联实验对已分流的用户继续解析;新流量不再进入这条配置

注意:试图归档一条正在驱动 Active 实验的配置时,平台会拒绝——请先结束或停止那个实验。

Unarchive 恢复

归档行的 ⋮ 菜单提供 Unarchive。恢复后状态变回 Active,进入新的 SDK 求值。

Log 审计历史

每次保存都会留下一条 log。详情页 Log 菜单打开历史视图,每行一次变更:谁、什么时候、改了哪些字段。 远程配置审计日志列表远程配置审计日志详情