Feature Flag使用说明


日常应用中一般会使用配置中心,feature-flag结合配置中心可以很好的实现灰度信息的热更新,达到修改好立马生效的效果,配置中心一般使用Nacos或者Apollo

增加feature-flag的依赖

pom.xml增加以下依赖:

<dependency>
    <groupId>cn.zzq0324</groupId>
    <artifactId>feature-flag</artifactId>
    <version>1.0.1</version>
</dependency>

增加配置

项目配置中增加以下配置信息:

# 灰度开关描述
flags.$flagName.desc=控制xxx是否开启
# 灰度开始时间,留空默认不限制开始时间
flags.$flagName.startTime=2021-06-12 01:02:03
# 灰度结束时间,留空默认不限制开始时间
flags.$flagName.endTime=
# 灰度白名单,允许为空
flags.$flagName.whiteList=u1,u2,u3
# 灰度黑名单,允许为空
flags.$flagName.blackList=
# 灰度比例
flags.$flagName.launchPercent=95

上面的配置中,$flagName可以替换成自己的灰度名称,例如enable-open-search。为保证规范性,名称尽量以enable-开头,便于管理。

如果配置是基于配置中心(例如Nacos或者Apollo),则修改后灰度的值会自动热更新,达到随时开启的效果。

使用说明

场景一:同个业务id严格控制每次执行结果一致

FeatureFlagHelper.isFeatureOn("$flagName", "$bizId");

场景二:控制流量整体趋势符合灰度比例,同个业务id执行结果不要求强一致

FeatureFlagHelper.isFeatureOn("$flagName");

场景三:获取灰度实例并根据扩展信息做额外的逻辑处理

// 获取灰度实例
FeatureFlagInstance instance = FeatureFlagHelper.getFeatureFlagInstance("$flagName");

// 获取扩展信息
String extra = instance.getExtra();

if(FeatureFlagHelper.isFeatureOn("$flagName")) {
    // 处理业务逻辑
}

文章作者: zzq0324
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 zzq0324 !
  目录