负载均衡:就是将成为负载的工作任务,进行均衡
Hystrix一共有三种模式.1.后背模式(降级),2.熔断模式(断路器),3.仓壁模式
后背模式(备胎,当当前调用的方法不可用或超时时,立马调用后背方法)
如果要开启Hystrix要在主程序类上加上@EnableCircuitBreaker开启,并在方法上增加@HystrixCommand(fallbackMethod=“后背方法”)后背方法名一定要相同一致并且参数也要一致
使用Hystrix熔断首先需要导入相应的依赖
<!--服务熔断-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<!--服务熔断监控监控多少次成功与失败-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
可以看到导入了两个依赖,这是一个熔断和一个熔断监控的依赖
直接在controller写就好代码示例
@HystrixCommand(fallbackMethod = "en")
@RequestMapping("bus/{id}")
public User testFeign(@PathVariable("id")Integer id){
User user = systemFeignClient.getUser1(id);
return user;
}
public User en(Integer id){
User user =User.builder().id(-1).userName("默认用户").height(150).build();
return user;
}
由此看到代码示例中参数与后背方法名相同,如若方法不可用或超时将自动调用后背方法
如何进行全局配置?在类上加注解@DefaultProperties(defaultFallback = “defaultBack”)
类名必须相同
public String defaultBack(){
return "请稍后重试";
}
@HystrixCommand
@RequestMapping("cha/{id}")
public String xixi(@PathVariable("id") Integer id){
if (id % 2 ==0){
return "成功";
}
User en = systemFeignClient.getUser1(id);
return en.getUserName();
}
如果获取的id%2等于0的话就走成功,如果不等于0的话就走全局配置
management:
endpoints:
web:
exposure:
include: '*'
配置这个就能查到监控的所有,如果不配置只能查到health和info
访问豪猪页面
设置访问
http://localhost:8082/actuator/hystrix.stream 时间2000就好 标题随意