终止开关是什么
预先埋设的快速关停通道:通过开关或配置让异常路径或整体功能立即停用,不依赖重新发布。与回滚互补——回滚面向整个版本,开关面向单个功能,能在秒级止血且不牵连其他正常变更。前提是预先实现并演练过。
基本信息
| 形态 | 功能开关、限流开关、熔断阈值、流量摘除脚本 |
|---|---|
| 要求 | 预先实现、定期演练、权限受控 |
| 场景 | 异常流量、下游故障、数据异常写入 |
| 记录 | 每次触发记录时间、原因、影响与恢复点 |
| 粒度 | 单功能/单接口/整服务,越细越适合止血 |
典型使用场景
- 核心链路异常写入:先关功能止血再定位根因
- 下游依赖故障:熔断或开关切到降级路径
- 风控规则误杀:临时调整规则无需发版
- 大促保障:高峰前预置限流开关,按需逐级开启
- 定期演练:低峰期真实触发一次,验证路径与权限可用
- 范围收窄:新功能只对内部账号开启,出问题天然影响面小
特性开关示例(伪代码)
特性开关示例(伪代码)
def checkout(user): # 入口处集中判断
if flags.is_killed("checkout_v2"): # 优先检查终止开关
return old_checkout_flow(user) # 回退到安全路径
if flags.is_enabled("checkout_v2", user):
return new_checkout_flow(user)
return old_checkout_flow(user)开关形态对照
| 形态 | 作用 | 注意 |
|---|---|---|
| 功能开关 | 关闭功能回退旧路径 | 默认值与失效行为要提前定义 |
| 限流开关 | 降低入口速率保护后端 | 阈值需按容量压测校准 |
| 熔断 | 依赖故障时快速失败 | 恢复探测要配置,避免抖动 |
| 摘除脚本 | 把节点从流量入口摘除 | 配合连接排空等待时间 |
开关要定义默认值与失效行为:配置中心不可用时回退到安全默认,而不是抛出异常。
触发记录字段至少含:触发人、时间、开关名、影响范围、恢复时间,复盘与审计都靠它。