熔断器的作用:
- 资源隔离:包括线程池隔离和信号量隔离,限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用。
- 降级机制:超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据。
- 融断:当失败率达到阀值自动触发降级(如因网络故障/超时造成的失败率高),熔断器触发的快速失败会进行快速恢复。
- 缓存:提供了请求缓存、请求合并实现。
Hystrix为断路器,对ribbon和feign俩个服务都支持
一,在ribbon中使用断路器,基于之前的ribbon工程
1.添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
2.启动项添加注解
3.改造TestService,添加断路器的指定方法
4.只开启service_client1,service_eureka,关闭service_client2后,调用localhost:8764
二.在fegin中使用断路器
1、Feign是自带断路器的,在D版本的Spring Cloud之后,它没有默认打开。需要在配置文件中配置打开它,在配置文件加以下代码:
2、基于之前的feign工程改造,只需要在FeignClient的SchedualServiceHi接口的注解中加上fallback的指定类就行了:
3.访问http://localhost:8765/test