写得比较全的可以参考这篇文章:微服务------Hystrix的使用_hystrix使用-CSDN博客
Hystrix的主要功能包括:
-
熔断器(Circuit Breaker):通过监控对远程服务的调用,当远程服务出现问题导致失败率过高时,Hystrix可以自动打开熔断器,阻止继续向该服务发送请求,从而避免雪崩效应。
-
降级(Fallback):当某个服务不可用时,Hystrix可以根据事先定义好的降级逻辑,返回一个默认值或错误信息,保证服务调用方能够得到响应,避免将问题传递给更上层的调用者。
-
隔离(Isolation):通过线程池的隔离,Hystrix可以限制对某个服务的并发访问量,并且对每个服务实例都有一个独立的线程池,确保一个异常不会影响整个系统的正常运行。
-
实时指标和监控:Hystrix可以提供实时的指标和监控数据,帮助开发人员了解服务调用的情况,包括成功率、失败率、响应时间等,从而及时发现问题并进行处理。
常规使用-搭配Feign:
1.在Feign客户端接口上添加 @FeignClient
注解时,指定 fallback
参数为一个实现了熔断逻辑的类:
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient(name = "demo-service", path = "/api", fallback = DemoFeignClientFallback.class)
public interface DemoFeignClient {
@GetMapping("/hello")
String sayHello();
}
2.创建一个熔断降级的类 DemoFeignClientFallback
实现 DemoFeignClient
接口,并在熔断时返回一个默认值或者错误信息
import org.springframework.stereotype.Component;
@Component
public class DemoFeignClientFallback implements DemoFeignClient {
@Override
public String sayHello() {
return "Service Unavailable";
}
}
3.在应用程序的主类中加上 @EnableHystrix
注解启用Hystrix功能:
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableFeignClients
@EnableHystrix
public class ConsumerServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerServiceApplication.class, args);
}
}
主要作用:热门API限流、API统一异常处理、监控API接口情况
查看监控的地址:http://localhost:port/actuator/hystrix.stream
,需要安装Hystrix Dashboard 监控