FF4J
什么是FF4J
ff4j是一款开源的实现特性功能切换的框架。简单来说通过aop和各种配置,去替代用硬代码if…else
简单入门
ff4j.xml
ff4j提供多种持久化方式(jdbc、redis、mongodb等)
Usage
核心组件
Feature
Feature,顾名思义,就是特性,通过唯一标识来代表一个特性
FeatureStore
同理,特征持久化抽象(内存、jdbc、redis等)
Property
属性,特性的属性
PropertyStore
属性持久化
Cache
如果持久化方式为jdbc等(数据在磁盘),可以考虑将Feature、Property等缓存到内存, 具体可参考FF4JCacheManager
Security
老生常谈,认证和授权。可以用于线上做灰度,新特性功能只有灰度用户可以体验
FF4J集成了springSecurity和ApacheShiro
Flipping Strategy
FlippingStrategy的evaluate方法判断是否放开特性。自定义的strategy可以extends AbstractFlipStrategy
自实现
最常见的就是ReleaseDateFlipStrategy. 先开发验证好“国庆活动”等国庆当天再生效
Group
分组,将特性打包分组,把多个开关合成一个开关
存储形式
前面提到了FF4J提供了很多持久化方式,包括内存、jdbc等
内存
默认的方式,以xml作为存储介质,然后解析xml将Feature等加载到内存。
该方式会在应用重启后复原,即之前做的改动都不存在了,会重新读xml到内存
JDBC
主要是基于RDBMS,FF4J内置了JdbcFeatureStore、JdbcPropertyStore等,同时
提供了基于关系型数据库的DDL脚本
DDL脚本
简单使用
jdbc
spring-jdbc
Redis
非关系型的KV数据库, 内置了FeatureStoreRedis、PropertyStoreRedis等,相当于
将feature、property之类的存储在Redis
redis连接
ff4j curd
存储形式
其他相关
参考:https://github.com/ff4j/ff4j/wiki
领取专属 10元无门槛券
私享最新 技术干货