SpringCloud提供Hystrix的库,支持微服务的容错保护
Hystrix功能:
1、对第三方接口、依赖服务潜在的调用失败提供保护和控制机制。
2、隔离资源、降低耦合,防止服务之间的相互调用导致的级联失败。
3、快速失败及迅速恢复。
4、服务降级。
5、近乎实时的监控、报警及控制操作。
Hystrix原理:
Hystrix基于断路器模式创建,即熔断机制,向调用方返回一个符合预期的服务降级处理,即fallBack,避免长时间等待或未知的异常,从而避免故障影响到整个服务甚至整个系统。
当失败频率较低时,还是会直接报故障返回给客户端,当调用次数达到阈值时,才会触发断路器,直接进行服务降级。
Hystrix设计理念:
1、避免单个故障拖垮整个系统容器。
2、快速失败,避免在队列中积压。
3、服务降级处理。
4、提供隔离技术,隔离服务依赖之间的影响(舱壁隔离、泳道和断路器等)
5、近乎实时的监控和告警,及时发现系统中的问题。
6、通过配置更改可以优化低延迟传播的回复时间,并且支持大多数属性的动态更改,从而允许开发者实时对低延迟反馈循环进行修改和优化。
7、提供对整个所依赖的客户端在执行过程中的故障保护与隔离。
简答应用:
Hystrix的降级应用在服务的消费者当中。
pom.xml
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> <version>RELEASE</version> </dependency>
Application.java
/** * 启动短路器 */ @EnableCircuitBreaker
Service.java
@HystrixCommand(fallbackMethod = "getDataFallback") @GetMapping(value = "/getData") public List getData() { List list = this.restTemplate.getForObject("http://192.168.1.2:2100/api/test/getVersionList", List.class); return list; } public List getDataFallback() { List list = Collections.emptyList(); for (int i = 0; i < 5; i++) { list.add("Fallback " + i); } return list; }