特性开关是什么
特性开关把部署与发布解耦:代码先上线、功能默认关,通过配置按人群、比例或白名单逐步开启。它让发布可逆——出问题瞬间关掉而不必回滚部署;但开关是债:类型要分清(发布开关、实验开关、运维开关),生命周期要登记,发布完成后限期清理。评估量级时要看开关组合爆炸:每个开关理论上翻倍状态数,注册表与到期提醒是控债的核心手段。
基本信息
| 类型 | 发布开关(短期)、实验开关(A/B)、运维开关(降级/熔断) |
|---|---|
| 管理 | 开关配置集中管理、变更有审计、默认值面向安全(关) |
| 生命周期 | 发布会后限期清理,防止开关矩阵爆炸 |
| 求值位置 | 敏感逻辑的判断放服务端;客户端开关要考虑被篡改绕过的风险 |
三类开关对照
| 类型 | 生命周期 | 典型用途 |
|---|---|---|
| 发布开关 | 发布后数周内清理 | 渐进放量与回退 |
| 实验开关 | 实验结束即归档 | A/B 指标对比 |
| 运维开关 | 长期保留 | 降级与熔断 |
典型使用场景
- 大功能拆小合并:主干开发、功能关着上线,避免长命分支
- 灰度放量:按比例 1%→10%→全量推进,指标异常一键回退
- 运维降级:高负载时关闭非关键功能(推荐、动效)保核心链路
- A/B 实验:实验开关与发布开关分开管理,防止实验残留进稳定逻辑
- 紧急止血:出问题先关开关,再排查原因,非必要不回滚部署
- 平台化托管:多个服务共用一个开关服务,状态一处修改全局求值,注意故障时的兜底默认值
配置形态
配置形态
features:
new-checkout: false # 默认关(安全值)
rollout-percent: 0 # 灰度比例
allowlist: [] # 白名单用户
# 开启顺序:内部白名单 → 1% → 10% → 全量 → 观察后清理开关开关默认值必须是安全值:配置中心不可用时系统仍可用。
开关求值要集中封装:散落各处的 if 分支难以清理、难以测试,收敛到一个模块里统一管理。