1.微服务降级一般是在客户端调用微服务的时候,出现了服务雪崩的情况,所谓的服务雪崩就是在同一个tomcat容器中,接受了高并发的访问,而导致的响应超时,而在整个微服务的项目中,出现了一个微服务的响应超时而导致的服务雪崩,就会使整个系统崩盘,那么我们的用户在发送请求的时候,返回的响应超时的提示信息肯定是行不通的,这时候就需要我们进行服务降级,从而给用户返回良好的提示信息,减轻服务器的访问压力
Hystrix的使用
1.导入依赖
org.springframework.cloud
spring-cloud-starter-netflix-hystrix
2.在springboot的启动类上添加注解
package com.xzf;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@EnableEurekaClient //开启eureka客户端发现
@EnableCircuitBreaker//开启熔断
@EnableFeignClients//开启feign支持
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
3.在消费者的一方的controller上添加注解@HystrixCommand,其实Hystrix的默认超时时间是1秒钟,可以在application.yml中统一配置超时时间,也可以对每一个controller单独配置超时时间,通一配置超时时间的配置如下:
#设置hystrix超时时间
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 2000
@HystrixCommand(fallbackMethod = "aaa",commandProperties = {
@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "3000")
})
在controller中也可以统一配置服务降级的方法,只需要在controller类上添加@DefaultProperties(defaultFallback = “defaultFallback”)注解即可,defaultFallback 后面的属性值是自定义的方法名。