赞
踩
目录
需要整个链路达到一定的阈值,默认情况下,10秒内产生超过20次请求,则符合第一个条件。
满足第一个条件的情况下,如果请求的错误百分比大于阈值,则会打开断路器,默认为50%。
Hystrix的逻辑,先判断是否满足第一个条件,再判断第二个条件,如果两个条件都满足,则会开启断路器
断路器打开 5 秒后,会处于半开状态,会尝试转发请求,如果仍然失败,保持打开状态,如果成功,则关闭断路器
由于hystrix的熔断的触发需要一些特殊的条件,而且即使是产生了熔断我们也不容易直观的察觉到,所以需要借助hystrix dashborad仪表盘来观察。而如果想通过仪表盘来进行观察,首先需要暴露一个hystrix.stream监控端点。
actuator是springboot提供的服务监控工具,可以暴露项目中许多的监控端点数据包括健康状态、系统环境变量、spring容器中所有的对象、Mapping的访问路径、hystrix.stream监控数据端点等
添加actuator依赖
- <!--添加actuator 依赖,实现springboot监控工具-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
添加暴露hystrix.stream的配置
使用management.endpoints.web.exposure.include=hystrix.stream
如果想要暴露全部的端点 使用 “*”
- spring:
- application:
- name: hystrix
- server:
- port: 3001
- eureka:
- client:
- service-url:
- defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
-
- ribbon:
- #单台服务器的重试次数
- MaxAutoRetries: 1
- #更换服务器次数
- MaxAutoRetriesNextServer: 2
- OkToRetryOnAllOperations: true
- #OkToRetryOnAllOperations 是否对所有类型请求都重试,默认只对GET重试
-
-
- hystrix:
- command:
- default:
- execution:
- isolation:
- thread:
- timeoutInMilliseconds: 500
-
-
- #暴露 hystrix.stream 监控端点
- management:
- endpoints:
- web:
- exposure:
- include: hystrix.stream
访问路径 http://localhost:3001/actuator
hystrix dashborad是系统错误监控,依赖于actuator工具的暴露的监控端点
创建一个服务名称为hystrix dashborad的项目
添加Hystrix Dashborad和euraka依赖
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
- </dependency>
-
-
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
- </dependency>
服务名称为hystrix-dashborad,服务端口为4001
- spring:
- application:
- name: hystrix-dashboard
-
- server:
- port: 4001
-
- eureka:
- client:
- service-url:
- defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka
-
- hystrix:
- dashboard:
- proxy-stream-allow-list: localhost
添加@EnableDiscoveryClient和@EnableHystrixDashboard注解
- package cn.tedu.sp08;
-
- import ...;
-
- @EnableHystrixDashboard //Hystrix dashboard 仪表盘
- @EnableDiscoveryClient //让注册中心发现
- @SpringBootApplication
-
- //访问url: http://localhost:4001/hystrix
- public class Sp08HystrixDashboardApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(Sp08HystrixDashboardApplication.class, args);
- }
-
- }
启动服务,访问路径
http://localhost:4001/hystrix
输入上一步中获取暴露的端点路径
http://localhost:3001/actuator/hystrix.stream
分别去访问一些方法的路径,可以观察到监控器仪表盘的变化
ab的下载和使用可以参考文档
Apache ab(压力测试工具) 的下载和使用_바 보71的博客-CSDN博客_ab测试工具下载
使用ab发送请求
ab -n 20000 -c 50 http://localhost:3001/item-service/35
此时断路器的状态为open,熔断执行降级方法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。