为什么hystrix或任何其他用于微服务的断路器?

时间:2016-11-18 05:28:16

标签: java spring spring-boot microservices hystrix

我正在使用spring boot和spring cloud开发微服务。我开始了解hystrix和断路器模式。我知道断路器用于响应备用响应,以防下游微服务发生错误,我依赖它来获取数据。我的问题是,如果我没有提供任何有意义的替代响应,为什么我需要一个断路器?

2 个答案:

答案 0 :(得分:5)

简短回答:主要是在复杂的分布式系统中阻止级联故障。

  

我没有提供任何有意义的替代回应,为什么会这样做   我需要断路器吗?

仅当您的服务器仅提供单个REST端点(以及单个HTTP谓词)时,此问题才有意义。但几乎总是如此,情况并非如此。即使是'微服务'也会有多个端点+多个http动词的组合。在线程在那里等待并最终降低整个应用程序之后,您不希望一个端点挂起缓慢的下游微服务和堆积线程。

阅读官方documentation

  

什么是Hystrix?   --- Hystrix旨在执行以下操作:

     
      
  • 通过第三方提供对访问(通常通过网络)的依赖项的延迟和故障的保护和控制   客户端库。
  •   
  • 在复杂的分布式系统中停止级联故障。
  •   
  • 快速失败并迅速恢复。
  •   
  • 尽可能退回并优雅地降级。
  •   
  • 启用近实时监控,警报和操作控制。
  •   

“尽可能后退和优雅降级”只是hystrix提供的功能之一。

答案 1 :(得分:0)

如果您重构整体应用程序以将其拆分为多个微服务,那么Hystrix也可能很有用。 将其投入生产时,您可能希望将旧的整体代码保留一段时间作为备用响应。因此,如果微服务不可用,只会执行旧代码,因此基本上可以降低风险。如果一切正常,您可以从monolith中删除旧代码并继续使用微服务。

通过扩展HystrixCommand类,可以轻松完成。

output = np.array([[3, 2, 1],
                   [4, 6, 5],
                   [7, 3, 1]])