当前位置:   article > 正文

Hystrix(二)熔断_hystrix熔断

hystrix熔断

目录

一、hystrix熔断介绍

二、暴露hystrix.stream监控端点

1、actuator介绍

2、配置hystrix.stream监控端点

(1)编辑pom

(2)编辑yml

(3)访问actuator路径,查看暴露端点

三、Hystrix dashborad 断路器仪表盘

1、hystrix dashborad 介绍

2、hystrix dashborad 配置

(1)新建maven项目

(2)编辑pom

(3)编辑yml

(4)编辑主程序

(5)测试监控端点

(6)测试结果及结果解析

(7)使用ab并发访问


一、hystrix熔断介绍

需要整个链路达到一定的阈值,默认情况下,10秒内产生超过20次请求,则符合第一个条件。
满足第一个条件的情况下,如果请求的错误百分比大于阈值,则会打开断路器,默认为50%
Hystrix的逻辑,先判断是否满足第一个条件,再判断第二个条件,如果两个条件都满足,则会开启断路器

断路器打开 5 秒后,会处于半开状态,会尝试转发请求,如果仍然失败,保持打开状态,如果成功,则关闭断路器

由于hystrix的熔断的触发需要一些特殊的条件,而且即使是产生了熔断我们也不容易直观的察觉到,所以需要借助hystrix dashborad仪表盘来观察。而如果想通过仪表盘来进行观察,首先需要暴露一个hystrix.stream监控端点

二、暴露hystrix.stream监控端点

1、actuator介绍

actuator是springboot提供的服务监控工具,可以暴露项目中许多的监控端点数据包括健康状态、系统环境变量、spring容器中所有的对象、Mapping的访问路径、hystrix.stream监控数据端点等

2、配置hystrix.stream监控端点

(1)编辑pom

添加actuator依赖

  1. <!--添加actuator 依赖,实现springboot监控工具-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-actuator</artifactId>
  5. </dependency>

(2)编辑yml

添加暴露hystrix.stream的配置

使用management.endpoints.web.exposure.include=hystrix.stream

如果想要暴露全部的端点 使用 “*

  1. spring:
  2. application:
  3. name: hystrix
  4. server:
  5. port: 3001
  6. eureka:
  7. client:
  8. service-url:
  9. defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
  10. ribbon:
  11. #单台服务器的重试次数
  12. MaxAutoRetries: 1
  13. #更换服务器次数
  14. MaxAutoRetriesNextServer: 2
  15. OkToRetryOnAllOperations: true
  16. #OkToRetryOnAllOperations 是否对所有类型请求都重试,默认只对GET重试
  17. hystrix:
  18. command:
  19. default:
  20. execution:
  21. isolation:
  22. thread:
  23. timeoutInMilliseconds: 500
  24. #暴露 hystrix.stream 监控端点
  25. management:
  26. endpoints:
  27. web:
  28. exposure:
  29. include: hystrix.stream

(3)访问actuator路径,查看暴露端点

访问路径  http://localhost:3001/actuator

 

三、Hystrix dashborad 断路器仪表盘

1、hystrix dashborad 介绍

hystrix dashborad是系统错误监控,依赖于actuator工具的暴露的监控端点

2、hystrix dashborad 配置

(1)新建maven项目

创建一个服务名称为hystrix dashborad的项目

(2)编辑pom

添加Hystrix Dashborad和euraka依赖

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.cloud</groupId>
  7. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  8. </dependency>

(3)编辑yml

服务名称为hystrix-dashborad,服务端口为4001

  1. spring:
  2. application:
  3. name: hystrix-dashboard
  4. server:
  5. port: 4001
  6. eureka:
  7. client:
  8. service-url:
  9. defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka
  10. hystrix:
  11. dashboard:
  12. proxy-stream-allow-list: localhost

(4)编辑主程序

添加@EnableDiscoveryClient和@EnableHystrixDashboard注解

 

  1. package cn.tedu.sp08;
  2. import ...;
  3. @EnableHystrixDashboard //Hystrix dashboard 仪表盘
  4. @EnableDiscoveryClient //让注册中心发现
  5. @SpringBootApplication
  6. //访问url: http://localhost:4001/hystrix
  7. public class Sp08HystrixDashboardApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(Sp08HystrixDashboardApplication.class, args);
  10. }
  11. }

(5)测试监控端点

 

启动服务,访问路径

http://localhost:4001/hystrix

输入上一步中获取暴露的端点路径

http://localhost:3001/actuator/hystrix.stream

 

(6)测试结果及结果解析

分别去访问一些方法的路径,可以观察到监控器仪表盘的变化

 

 

(7)使用ab并发访问

ab的下载和使用可以参考文档

Apache ab(压力测试工具) 的下载和使用_바 보71的博客-CSDN博客_ab测试工具下载

使用ab发送请求

ab -n 20000 -c 50 http://localhost:3001/item-service/35

此时断路器的状态为open,熔断执行降级方法 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/84118
推荐阅读
相关标签
  

闽ICP备14008679号