跳到正文

功能开关

Feature Flag

中级通用

功能开关(Feature Flag)是让已部署的代码根据配置或请求条件,决定某项功能是否运行的机制。它解决了代码上线与功能开放必须同时发生的问题;例如,新版搜索先对团队开放,出问题时再关闭。

你可能会说:「新版搜索想先给团队试用,确认没问题再开放给所有人,出问题还能马上关掉。」

读之前建议先了解

动手看看

搜索查开关关闭旧版结果搜索页搜索服务运行旧版开关配置保持关闭
1

新版搜索代码已经部署,但开关还没打开。普通用户发起搜索时,服务查到配置为关闭,就继续返回旧版结果。

要点

  1. 1

    代码部署和功能开放分开

    我们可以先把新版搜索代码部署上去,再用开关决定谁能用。因为改开关通常不需要重新部署,所以发现明显问题时,可以更快地停止新功能;但开关关掉不等于修好了代码。

  2. 2

    先说清开关对谁生效

    开关可以按环境、用户或组织决定结果。你让 AI Agent 实现时,要说明默认给谁开、给谁关;同一用户的一次操作也尽量得到一致的结果,否则页面显示新版,提交时却走旧版逻辑。

  3. 3

    关闭后也要有可用路径

    设计开关时,我们要想清楚关闭会发生什么:回到旧搜索,还是暂时隐藏搜索入口?如果新版已经改变了数据结构,仅关闭入口未必能恢复旧流程,所以还得检查旧路径能否正常处理数据。

  4. 4

    稳定之后清理旧分支

    功能全面开放且运行稳定后,开关和旧代码通常可以一起清理。因为两条路径长期并存会增加测试和排错范围,后来的人也难判断哪个分支仍在使用。

容易混淆的地方

功能开关控制的是已部署功能走哪条路径,不等于部署或回滚:回滚是换回旧版本代码。它也不等于权限控制;如果某人依法或按订阅方案无权使用某功能,访问限制要由可靠的服务端权限校验承担,不能只靠关闭页面入口。A/B 测试可能借助功能开关分流,但还需要明确实验分组和效果衡量。

什么时候用

适合用

  • 新版搜索已写好,想先让内部团队试用,验证后再逐步向其他用户开放。
  • AI 摘要接入了新模型,想在成本或质量异常时关闭新路径,暂时回到旧实现。
  • 后台报表正在改版,想让指定客户先体验,同时保留旧报表作为退路。

不适合用

  • 只是要限制付费用户访问导出接口,用服务端权限控制;功能开关不能代替权益校验。
  • 旧版本代码已经造成线上故障,关掉新入口也无法避开故障时,直接修复或回滚部署。
  • 只是给自己调试页面换一套本地参数,用本地配置即可,没必要增加线上功能开关。

练一练

你们已部署新版 AI 摘要,但想先让内部团队使用;如果新模型频繁超时,希望能停用新版并让用户继续使用旧摘要。你会怎么做?

让 AI 帮你做

请为 AI 摘要接入功能开关:默认所有用户走旧实现,仅对指定内部账号启用新版。请让服务端请求按开关结果选择实现,并验证关闭后能正常回到旧版;同时说明开关配置放在哪里、如何修改和测试。

接下来学什么