我们有一个使用SpringMVC+JSP实现的网页。为了获取每个页面所需的数据,我们调用了一个外部API。步骤总结如下:-请求到达控制器-调用API以检索数据-将数据添加到JSP视图模型并返回给用户。
为了调用这个应用程序接口,我们使用的是使用MultiThreadedHttpConnectionManager的RestTemplate,初始化时使用了连接和读取超时。如果API不可用,则RestTemplate抛出异常,这些异常由网页的控制器处理。
最近我读到了关于Hytrix的文章,似乎它是用来在系统之间发出请求的。我需要一些关于Hytrix如何在我们的系统上提供帮助以及如何集成它的解释。
此外,API实现从不同的来源检索数据,其中一个来源是数据库。在数据库宕机的情况下,Hytrix也能提供帮助吗?
提前谢谢。
发布于 2015-02-12 21:42:45
Short answer
Hystrix不会在系统之间发出请求。它包装您的请求代码以获得观察(超时,错误计数),并提供断路器来停止您的应用程序再次创建“死”系统(远程服务甚至数据库)的调用。
回答的稍微长一点
Hystrix是服务和持久化/远程服务层(从现在起只是持久化)之间的一个薄包装器(我认为这是最常见的用例)。您将创建一个包含实际持久性调用的新HystrixCommand,而不是直接从服务调用持久性。此命令可高度自定义,并提供开箱即用的超时和断路器机制。如果您的调用超时或产生许多异常,它将切换到您可能(也应该)实现的回退实现。因此,在数据库宕机的情况下(可能类似于使用缓存数据),回退是否也能有所帮助,这取决于您的用例。作为一个副作用,您还可以获得呼叫的统计数据:错误计数、百分比、呼叫量……
一个月前,我开始使用HystrixCommands (和折叠器)和made a blog post,关于Hystrix和一般的接口通信,这可能会给你提供额外的信息(或混淆;)
https://stackoverflow.com/questions/28477902
复制相似问题