Spring Cloud Hystrix是Spring Cloud Netflix子项目的核心组件之一,具有服务容错和线程隔离等一系列服务保护功能,此处将采用适当的进行详细介绍。

Hystrix简介

在微服务架构中,服务与服务之间通过远程调用的方式进行通信,一旦有人被调用的服务发生了故障,其依赖服务也会发生故障,然后就会发生故障的蔓延,最终导致系统Hystrix实现了中断模式,当某项服务发生故障时,通过断路器的监控,给调用方返回一个错误响应,而不是连续的等待,这样就不会引起方由于冗长得不Hystrix可以服务降级,服务熔断,线程隔离,请求缓存,请求合并以及服务监控等强大功能。

创建一个hystrix-service模块

这里我们创建一个hystrix-service模块来演示hystrix的常用功能。

  • 在pom.xml中添加相关依赖

    1. <dependency>
    2. <groupId>org.springframework.cloud</groupId>
    3. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    4. </dependency>
    5. <dependency>
    6. <groupId>org.springframework.cloud</groupId>
    7. <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    8. </dependency>
    9. <dependency>
    10. <groupId>org.springframework.boot</groupId>
    11. <artifactId>spring-boot-starter-web</artifactId>
    12. </dependency>
  • 在application.yml进行配置

    1. server:
    2. port:8401
    3. spring:
    4. application:
    5. name:hystrix-service
    6. eureka:
    7. client:
    8. register-with-eureka:true
    9. fetch-registry:true
    10. service-url:
    11. defaultZone:http://localhost:8001/eureka/
    12. service-url:
    13. user-service:http://user-service
  • 在启动类上添加@EnableCircuitBreaker来开启Hystrix的断路器功能

    1. @EnableCircuitBreaker
    2. @EnableDiscoveryClient
    3. @SpringBootApplication
    4. publicclass HystrixServiceApplication {
    5. public static void main(String[] args) {
    6. SpringApplication.run(HystrixServiceApplication.class, args);
    7. }
    8. }

    创建UserHystrixController接口用于调用用户服务