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 暴露了一些 MBeans,用于从外部工具(Nagios……)读取指标或切换功能。并非所有应用程序都是基于 Web 的(批处理、Shell、独立应用……)。
首页
功能列表
监控
该项目感谢所有贡献者的努力。[贡献]。
感谢所有支持者!🙏 [成为支持者]
通过成为赞助商来支持本项目。你的 Logo 将显示在这里,并链接到你的网站。[成为赞助商]