Spring Cloud Hystrix是Spring Cloud Netflix子项目的核心组件之一,具有服务容错和线程隔离等一系列服务保护功能,此处将采用适当的进行详细介绍。
Hystrix简介
在微服务架构中,服务与服务之间通过远程调用的方式进行通信,一旦有人被调用的服务发生了故障,其依赖服务也会发生故障,然后就会发生故障的蔓延,最终导致系统Hystrix实现了中断模式,当某项服务发生故障时,通过断路器的监控,给调用方返回一个错误响应,而不是连续的等待,这样就不会引起方由于冗长得不Hystrix可以服务降级,服务熔断,线程隔离,请求缓存,请求合并以及服务监控等强大功能。
创建一个hystrix-service模块
这里我们创建一个hystrix-service模块来演示hystrix的常用功能。
在pom.xml中添加相关依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
在application.yml进行配置
server:
port:8401
spring:
application:
name:hystrix-service
eureka:
client:
register-with-eureka:true
fetch-registry:true
service-url:
defaultZone:http://localhost:8001/eureka/
service-url:
user-service:http://user-service
在启动类上添加@EnableCircuitBreaker来开启Hystrix的断路器功能
@EnableCircuitBreaker
@EnableDiscoveryClient
@SpringBootApplication
publicclass HystrixServiceApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixServiceApplication.class, args);
}
}
创建UserHystrixController接口用于调用用户服务