3

我正在查看 netflix 的 hystrix 来处理网络调用。

使用 hystrix,您可以HystrixCommand<E>为需要使用的每个潜在 RPC 命令定义一个子类。

我有一个 apache thrift 客户端,它有很多命令。是否有任何替代 hystrix 的方法可以让我轻松地将其包裹在整个客户端上,而不必HystrixCommand为每个函数定义一个类?

4

4 回答 4

2

Twitter 的 Finagle 是 Netflix 的 Hystrix 的替代品。

Finagle 会根据您的需要为整个客户端创建一个 RPC,当然 Finagle 会讨论 Thrift 以及 Redis、MySQL、memcached 等。

Finagle 是使用 Scala 创建的,但它也可以用于 Java(以及所有 JVM 生态系统语言,如 JRuby 和 Clojure)

当然,您甚至可以在 JVM 之外使用其他语言,因为 Finagle 可以与 Thrift 对话,并且 Thrift 可用于许多其他语言和平台,例如 Go、C# 甚至是 Objective-C,以便在 iPhone 或 iPad 中用作客户端而不是慢速Json/HTTP 调用。

更多关于 Finagle 的信息在这里 -> https://twitter.github.io/finagle/guide/这里是 Finagle Maven 和 Java 的启动项目示例 -> https://github.com/csaltos/hello-finagle-maven

于 2017-07-17T12:12:58.593 回答
1

我还在为节俭的客户寻找类似 hystrix 的断路器解决方案。将试用 Phantom ( https://github.com/flipkart/phantom ),它提供了一个带有 hystrix 的节俭代理。

于 2015-05-19T12:16:58.457 回答
0

在我正在进行的项目中,我有数百种不同类型的集成,我想要一个通用的解决方案,让我可以将断路器应用于其中任何一个。为此,我使用org.springframework.aop.framework.ProxyFactory, 和一个自定义类来包装HystrixCommandwhich implements org.aopalliance.intercept.MethodInterceptor。不过,任何动态代理实现都应该有效。

于 2015-07-07T16:09:14.300 回答
0

您可能想看一下resilience4j

在 Hystrix 中,对外部系统的调用必须包装在 HystrixCommand 中。相比之下,这个库提供了高阶函数(装饰器),以通过断路器、速率限制器或隔板来增强任何功能接口、lambda 表达式或方法引用。

于 2018-10-15T11:28:44.780 回答