1.断路器的作用是:
在微服务中,服务与服务的调用通过注册中心来完成,而且每个服务都是独立的,
服务都是采用集群的形式的布置的,当注册中心和feign负载均衡分发来请求时,这个服务突然宕机了死掉了,
可是注册中心又不知道,在一定时间内有大量的请求过来,造成服务崩溃,然后调用这个的服务的服务也会停在那里等待这个服务
响应,这样的依次类推的话跟此有关的服务会一个接着一个崩溃,造成了“服务雪崩”现象,
我们用断路器的目的就是为了防止这种情况发生
首先feign分发一个请求过来,当服务挂掉的时候,断路器就会起作用,返回给feign一个信息,告诉它我宕机了,然后feign会立即把信息向上传递,分发到别的可用的服务器去,而且feign还会过一段时间就会发送一个信息,检查这个服务是不是活过来了,活了就会继续给它分发请求
使用断路器很好的保证服务会一直运行,不会造成大面积瘫痪,
2.断路器的使用
在项目中添加依赖:
<!-- 断路器 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<!-- 服务接口的监控依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 短路器仪表盘或面板的注解 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
第二个依赖是配合使用的,第三个依赖是用于在浏览器打开监控面板用的,可以要也可以不要,
然后在启动类上添加依赖
@EnableCircuitBreaker// 开启断路器注解
使用的时候我们可以在feignclient上用fallback来调用我们的异常类返回给feign宕机信息
@FeignClient(value="testService", fallback = testServiceError.class)// 需要调用的服务名,fallback调用失败时返回的处理类