3

我们正在做一个项目,我们想使用一些切换功能工具,如 ff4j 或 togglz,但我们对性能有真正的限制,我的意思是我们真的需要一个执行时间更短的工具,我已经检查了一点有点 ff4j 和 togglz 但我不知道什么最适合这个解决方案,或者如果你知道其他一些工具。

项目背景:它是一个 Netflix 微服务架构,所以我们有 eureka、ribbon、zuul 和微服务。

否则,如果您有其他解决方案,可能是开发一个边车,请给我一些想法。

先感谢您 :)

4

1 回答 1

4

免责声明:我创建了 FF4j,因此我不会给出与性能比较相关的答案。我将提供架构设计原则。

微服务意味着分布式架构,因此您必须将功能状态存储在通用持久性存储(DB) 中。

功能切换框架的成本不是评估功能状态谓词的时间(这是一个简单的条件),而是从持久性存储访问数据的时间。

FF4j提供对 REDIS 和 CONSUL 的支持:

  • Redis 似乎是一个很好的候选,因为它可以非常快地用于 put/get 和分发。
  • Consul 在分布式微服务中也是一个好主意:它提供了一个键值存储。
  • Eureka 可能会这样做,我不知道,ff4j 还没有存储它。

如果您必须将功能存储在较慢的数据库中,例如 SQL-Like,那么您可能会考虑使用缓存。FF4j 提供了一些cacheProxy来处理此类用例。

其他注意事项:

  • 仅将管理控制台放在后端应用程序中,而不是放在每个微服务上(安全性 + 性能开销)
  • 功能切换可以通过配置管理和监控做更多的事情。

您可能想看看这个关于该主题的15 分钟演讲。现场演示从7:10开始

以及用于 Spring-Cloud 示例的相关 github 存储库

于 2018-11-23T13:52:41.817 回答