1. 什么是Hystrix熔断器?

Hystrix是一个用于提高分布式系统的弹性和容错性的库。它实现了熔断器模式,通过控制容器中的多个服务之间的交互来防止级联故障。当某个服务出现故障时,Hystrix会自动地停止请求该服务,并快速返回一个Fallback响应。这样可以确保整个系统依然能够正常工作,并提供了监控和控制失败情况的机制。

2. 添加Hystrix依赖

在使用Hystrix之前,首先需要在项目中添加Hystrix的依赖。你可以通过在项目的pom.xml文件中添加如下依赖来引入Hystrix:


<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

同时,Hystrix还需结合Spring Cloud框架进行使用,需要添加相关的Spring Cloud依赖,以及一个注册中心如Eureka等的支持。

3. 开启Hystrix支持

在项目的启动类上添加@EnableCircuitBreaker注解,启用Hystrix的支持:


import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;

@SpringBootApplication
@EnableCircuitBreaker
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

这样,Hystrix就被成功地集成到了项目中,并开启了对服务的熔断保护。

4. 配置Hystrix的熔断策略

Hystrix提供了多种不同的熔断策略,可以根据需要进行配置。比较常用的策略有:
1. 线程池隔离:将被熔断的服务请求放在单独的线程池中执行,以隔离服务请求带来的性能影响。
2. 信号量隔离:将被熔断的服务请求限制在一定数量的信号量中执行,以控制并发量。
3. 超时设置:设置服务请求的超时时间,如果超过该时间还未返回响应,则自动熔断。
4. 错误百分比阈值:当请求失败的比例超过设定的阈值时,自动熔断服务请求。

你可以通过在配置文件中添加以下配置来配置熔断策略:


hystrix:
  command:
    default:
      execution:
        isolation:
          strategy: THREAD
          thread:
            timeoutInMilliseconds: 1000
      circuitBreaker:
        requestVolumeThreshold: 20
        errorThresholdPercentage: 50
        sleepWindowInMilliseconds: 5000

上述配置指定了线程池隔离策略,并设置了超时时间为1秒,当请求数量达到20个时,如错误比例超过50%会触发熔断,熔断后的5秒内请求会直接返回Fallback响应。