春云Hystrix断路器的使用(熔断器)

  

  

Netflix已经创建了一个名为Hystrix的库,实现了断路器的模式。在microservice架构通常有多个层的服务调用。
  

  

按涸艸ystrix断路器的使用(熔断器)"

  

低水平的服务的服务失败会导致级联故障一直给到用户。当调用一个特定的服务达到一定阈值(默认5秒失败20次),打开断路器。在错误的情况下和一个开启的断路回滚应可以由开发人员提供。
  

  

按涸艸ystrix断路器的使用(熔断器)"

  

有一个断路器阻止级联失败并且允许关闭服务一段时间进行愈合。回滚会被其他hystrix保护调用,静态数据或健全的空值。
  代码如下:

        @SpringBootApplication   @EnableCircuitBreaker   公共类应用程序{      公共静态void main (String [] args) {   了对新SpringApplicationBuilder (Application.class) web这类(真正的).run (args);   }      }            @ component   公开课StoreIntegration {      @HystrixCommand (fallbackMethod=癲efaultStores”)   公共对象getStores (Map<字符串,Object>参数){//做的东西可能会失败   }      公共对象defaultStores (Map<字符串,Object>参数){   返回*//*一些有用的东西,   }   }      

@HystrixCommand是由Netflix contrib库提供,叫做javanica.spring云自动包装Spring bean与注释的代理连接到Hystrix断路器。断路器计算何时打开和关闭断路,并在失败的情况下做什么。
  

  

配置@HystrixCommand可以使用commandProperties属性的列表@HystrixProperty注释。详细请看https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-javanica配置
  https://github.com/Netflix/Hystrix/wiki/Configuration

  

<强> 1.1传播安全上下文或者使用弹簧范围

  

如果你想要一些线程本地上下文传播到@HystrixCommand默认声明将不会工作,因为它执行线程池中的命令(在超时的情况下)。
  

  

可以切换Hystrix使用一些配置用相同的线程调用者,或直接在注释,让它使用不同的“隔离策略”(隔离策略)。
  

  

例如:         @HystrixCommand (fallbackMethod=皊tubMyService”,   commandProperties={   @HystrixProperty (name=" execution.isolation。战略”,价值=" https://www.yisu.com/zixun/SEMAPHORE ")   }   )   …      

详细内容请参考https://github.com/Netflix/Hystrix/wiki/Configuration

  

<强> 1.2健康监控

  

连接的断路器的状态也暴露在调用应用程序的/健康端点。

        {   " hystrix ": {   “openCircuitBreakers”:(   “StoreIntegration:: getStoresByLocationLink”   ),   “状态”:“CIRCUIT_OPEN”   },   “状态”:“”   }      

<强> 1.3 Hystrix指标流(Hystrix指标流)

  

spring-boot-starter-actuator中实现了Hystrix指标流。暴露/hystrix.stream作为一个管理端点。

        & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-actuator   & lt;/dependency>      

  

Hystrix的主要好处之一是它收集关于每个HystrixCommand组指标.Hystrix仪表板显示每个断路器的健康高效的方式。
  

  

按涸艸ystrix断路器的使用(熔断器)”,
  

  

运行Hystrix仪表板需要在春天引导主类上标注@EnableHystrixDashboard。然后访问/Hystrix查看仪表盘,在Hystrix客户端应用使用/hystrix.stream监控。

  

<强> 2.1涡轮

  

看一个实例Hystrix数据对于整个系统的健康不是很有用.turbine是一个应用程序,该应用程序汇集了所有相关的/Hystrix。流端点到/turbine.stream用于Hystrix仪表板。运行涡轮使用@EnableTurbine注释你的主类,使用spring-cloud-starter-turbine这个jar。配置请参考https://github.com/Netflix/Turbine/wiki/Configuration- (1. x)
  

  

唯一的区别是turbine.instanceUrlSuffix不需要端口号前缀,因为这是自动处理,除非涡轮。instanceInsertPort=false .

  

涡轮机。appConfig配置是一个尤里卡服务ID列表,涡轮机将使用这个配置查询实例.turbine流在hystrix仪表板中使用如下的url配置:

春云Hystrix断路器的使用(熔断器)