我们有一个使用SpringMVC + JSP实现的网页。要获取每个页面所需的数据,我们称之为外部API。步骤摘要如下: - 请求到达控制器 - 调用API以检索数据 - 将数据添加到JSP视图模型并返回给用户。
要调用API,我们使用Rest MultiThreadedHttpConnectionManager
使用RestTemplate初始化连接和读取超时。如果API不可用,RestTemplate将抛出由网页控制器处理的异常。
最近我正在阅读关于Hytrix的内容,似乎在系统之间使用了make。 我请求解释Hytrix如何帮助我们的系统以及如何集成它。
此外,API实现从不同的源检索数据,其中一个源是数据库。 Hytrix可以帮助解决数据库停机的问题吗?
提前致谢。
答案 0 :(得分:1)
简短回答
Hystrix不会在系统之间发出请求。它包装了您的请求代码,以便观察(超时,错误计数),并提供断路器来阻止您的应用程序再次创建呼叫“死亡”#39;系统(远程服务甚至数据库)。
答案稍长
Hystrix是服务和持久性/远程服务层之间的一个薄包装器(从现在开始只是持久性)(我认为这是最常见的用例)。您不是直接从服务中调用持久性,而是创建一个包含实际持久性调用的新HystrixCommand。此命令可高度自定义,并提供开箱即用的超时和断路器机制。如果您的呼叫超时或产生很多异常,它将切换到您可能(并且应该)实施的回退实施。因此,如果数据库停机(也许类似于使用缓存数据),后备也可能有所帮助,那么它取决于您的用例。 作为副作用,您还可以获得呼叫的统计信息:错误计数,百分比,呼叫数量......
一个月前,我开始使用HystrixCommands(和Collapsers)和made a blog post关于Hystrix和界面通信,这可能会给你额外的信息(或混淆;))