当前位置: 首页 > 知识库问答 >
问题:

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

淳于坚壁
2023-03-14

我正在和spring boot、spring cloud一起开发微服务。我开始了解hystrix和断路器模式。我知道断路器是为了在下游微服务出错的情况下用交替响应来响应,我依赖这些微服务来获取数据。我的问题是,如果我没有任何有意义的替代响应可以提供,我为什么会需要断路器呢?

共有2个答案

白灿
2023-03-14

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

通过扩展HystrixCommand类,这可以很容易地完成。

public class MicroserviceCommand extends HystrixCommand<String>
{
    @Override
    protected String run()
    {
        //return response from your new microservice
    }

    @Override
    protected String getFallback()
    {
        //microservice is not available, 
        //so execute old code which was not removed from application yet
    }
}
贺亦
2023-03-14

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

我没有任何有意义的替代反应提供,为什么我会需要一个断路器在所有?

只有当您的服务器只服务于一个REST端点(和一个HTTP谓词)时,这个问题才是相关的。但几乎总是,情况并非如此。即使是“微”服务也会有多个端点+多个http谓词的组合。您不希望一个端点挂在一个缓慢的下行微服务上,并且一个接一个的线程继续在那里等待,最终导致整个应用程序崩溃。

阅读正式文件

Hystrix是干什么用的?---Hystrix设计用于执行以下操作:

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

“在可能的情况下退后和优雅地降级”只是hystrix提供的功能之一。

 类似资料:
  • 本文向大家介绍为什么要使用微服务?相关面试题,主要包含被问及为什么要使用微服务?时的应答技巧和注意事项,需要的朋友参考一下 随着互联网的快速发展,各行各业都在用互联网。互联网已经离不开人们的形形色色。随着越来越多的用户,业务场景也愈来愈复杂。 传统的单体架构已经很难满足互联网技术发展的要求,代码可维护性扩展性和可读性降低,维护成本的提高都是驱动微服务的发展趋势。

  • 本文向大家介绍详解SpringCloud微服务架构之Hystrix断路器,包括了详解SpringCloud微服务架构之Hystrix断路器的使用技巧和注意事项,需要的朋友参考一下 一:什么是Hystrix 在分布式环境中,许多服务依赖项中的一些将不可避免地失败。Hystrix是一个库,通过添加延迟容差和容错逻辑来帮助您控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点,停止其间的

  • 本文向大家介绍为什么我们需要微服务容器?相关面试题,主要包含被问及为什么我们需要微服务容器?时的应答技巧和注意事项,需要的朋友参考一下 要管理基于微服务的应用程序,容器是最简单的选择。它帮助用户单独部署和开发。您还可以使用Docker将微服务封装到容器的镜像中。没有任何额外的依赖或工作,微服务可以使用这些元素。

  • 我想设计一个调度器作为服务使用spring-boot。我的调度程序应该是通用的,这样其他微服务就可以随心所欲地使用它。 我试过正常的spring boot例子。 /***此计划程序将每20秒运行一次。*/@schedule(fixedRate=20*1000,initialDelay=5000)public void scheduleTaskWithInitialDelay(){logger.in

  • 本文向大家介绍现在有一个宏任务,又有一个微任务两者同一层级,在微任务里面又有一个宏任务和一个微任务,请问执行顺序是什么,为什么?相关面试题,主要包含被问及现在有一个宏任务,又有一个微任务两者同一层级,在微任务里面又有一个宏任务和一个微任务,请问执行顺序是什么,为什么?时的应答技巧和注意事项,需要的朋友参考一下 宏任务——》微任务中的宏任务——》微任务中的微任务——》微任务 宏任务执行完成会去检测微

  • 有一种显而易见的方法可以将业务异常包装到holder对象中,从run()方法返回它,然后将其解包装回异常并重新抛出。但它想知道是否有更干净的方法。