0

我们有一个使用 SpringMVC+JSP 实现的网页。为了获取每个页面所需的数据,我们调用外部 API。步骤总结如下: - 请求到达控制器 - 调用 API 以检索数据 - 将数据添加到 JSP 视图模型并返回给用户。

要调用 API,我们使用 RestTemplate 使用MultiThreadedHttpConnectionManager初始化连接和读取超时。如果 API 不可用,则 RestTemplate 会抛出由网页控制器处理的异常。

最近我在阅读有关 Hytrix 的文章,似乎它被用于在系统之间发出请求。我要求解释一下 Hytrix 如何帮助我们的系统以及如何集成它。

此外,API 实现从不同来源检索数据,其中之一是数据库。Hytrix 也可以在数据库出现故障的情况下提供帮助吗?

提前致谢。

4

1 回答 1

1

简短的回答

Hystrix 不会在系统之间发出请求。它包装您的请求代码以进行观察(超时、错误计数)并提供断路器以阻止您的应用程序再次创建调用“死”系统(远程服务甚至数据库)。

稍微长一点的回答

Hystrix 是您的服务和持久性/远程服务层之间的一个薄包装器(从现在开始只是持久性)(我认为这是最常见的用例)。不是直接从服务调用持久性,而是创建一个包含实际持久性调用的新 HystrixCommand。此命令是高度可定制的,并提供了开箱即用的超时和断路器机制。如果您的调用超时或产生很多异常,它将切换到您可以(并且应该)实现的后备实现。因此,在数据库停机的情况下(可能类似于使用缓存数据),回退是否也有帮助取决于您的用例。作为副作用,您还可以获得呼叫的统计信息:错误计数、百分比、呼叫量......

一个月前,我开始使用 HystrixCommands(和 Collapsers),并发表了一篇关于 Hystrix 和一般接口通信的博客文章,可能会给你额外的信息(或混淆;))

于 2015-02-12T13:42:44.913 回答