Feature Flag(又名 Feature Toggle、Flip等)是一种允许控制线上功能开启或者关闭的方式,通常会采取配置文件的方式来控制。
引入Feature Flag有以下优势:
- 增强持续部署的信心;
- A/B testing 支持;
- 特性开放范围控制,有效验证线上新特性功能,针对特定人群发布功能尽早获得反馈,减少线上问题影响范围;
- 可作为限流、降级之外有效的应急预案;
- 能线上开启或者关闭,实现快速回滚。
对于接入方,需要完成Apollo、代码接入2个步骤才能最终用上Feature Flag。具体如下:
一个完整的Feature Flag配置如下:
# 灰度开关描述
flags.enable-open-search.desc=控制是否开启开放搜索
# 灰度开始时间,留空默认不限制开始时间
flags.enable-open-search.startTime=2021-06-12 01:02:03
# 灰度结束时间,留空默认不限制开始时间
flags.enable-open-search.endTime=
# 灰度白名单,允许为空
flags.enable-open-search.whiteList=u1,u2,u3
# 灰度黑名单,允许为空
flags.enable-open-search.blackList=
# 灰度比例
flags.enable-open-search.launchPercent=95
<dependency>
<groupId>cn.zzq0324</groupId>
<artifactId>feature-flag</artifactId>
<version>1.0.2</version>
</dependency>
-
场景一:同个业务id严格控制每次执行结果一致
FeatureFlagHelper.isFeatureOn("$flagName", "$bizId");
-
场景二:控制流量整体趋势符合灰度比例,同个业务id执行结果不要求强一致
FeatureFlagHelper.isFeatureOn("$flagName");
flag名称尽量以enable-
开头,例如enable-open-search
。