FF4j 是 Feature Toggle(特性开关) 模式的一种实现。
特性开关: 运行时启用或禁用特性——无需重新部署。在你的代码中,通过动态谓词(if/then/else)实现多路径执行。
基于角色的开关: 不仅通过开关值启用特性,还可以通过角色和组(金丝雀发布)控制访问。支持多种框架,从 Spring Security 开始。
基于策略的开关: 实现自定义谓词(策略模式)来评估特性是否启用。开箱即用提供:白名单/黑名单、基于时间、基于表达式。可连接外部来源如 Drools 规则引擎。
AOP 驱动的开关: 保持代码整洁可读:避免嵌套 if 语句,改用注解。借助 Spring AOP,目标实现可在运行时选择,从而由特性状态驱动。
特性监控: 对于每个特性执行,ff4j 会评估谓词,因此可以收集和记录事件、指标,以构建漂亮的仪表盘或绘制特性使用随时间变化的曲线。
审计追踪: 每个操作(创建、更新、删除、开关)都可被追踪并保存到审计追踪中用于故障排除。通过权限管理(AuthorizationManager)可识别用户。
Web 控制台: 通过 Web UI 管理 FF4j(包括特性和属性)。作为库中的 servlet 打包,你可以在后端应用中将其暴露出来。支持近 10 种语言。
广泛的数据库选择 我们的骄傲:支持 20 多种数据库技术来存储你的特性、属性和事件。相同的业务模型,多种实现。得益于扩展点,你可以轻松构建自己的实现。
Spring Boot Starter 在你的微服务中导入 ff4j-spring-boot-starter 依赖,即可立即获得 Web 控制台和 REST API。(用于后端应用。现已兼容 Spring Boot 2x:👉 示例
REST API 通过 Web API 操作 FF4j。这是将 ff4j 用于其他语言(尤其是 JavaScript 前端)的方式。(同时:利用 FeatureStoreHttp 避免微服务直接连接数据库。)
属性(CMDB) 不仅存储特性状态,还可以存储任意属性值。创建可在运行时更改的属性。与最常用的框架如 Spring、Archaius、commons-config 或 Consul 集成。
(分布式)缓存 评估谓词可能给数据库带来压力(高命中率)。ff4j 提供本地和分布式缓存来帮助。(编辑特性也会清除缓存。)利用 JSR-107,支持大多数缓存解决方案。
命令行界面 用于自动化操作,或因为 Web 端口可能被封锁(你懂的,生产环境……),你可以通过 SSH 使用我们的命令行界面(CLI)、我们的 Shell #devOps。它将直接与存储交互。
JMX 和 MBeans 有限的操作可以通过 JMX 执行。ff4j 暴露了一些 Mbean 来读取指标或从外部工具(Nagios…)切换特性。并非所有应用都是基于 Web 的(批处理、Shell、独立应用等)。
更多信息请访问 ff4j.org 或 wiki 中的 参考文档。
首页
特性列表
监控
本项目感谢所有贡献者。[贡献]
感谢我们所有的支持者!🙏 [成为支持者]
通过成为赞助商来支持本项目。你的 Logo 会在这里显示并带有指向你网站的链接。[成为赞助商]