Hystix熔断解决雪崩问题

Posted wuxiang12580

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hystix熔断解决雪崩问题相关的知识,希望对你有一定的参考价值。

1.线程隔离,服务降级(服务的消费方做降级处理)

当服务繁忙时,如果服务出现异常,不是粗暴的直接报错,而是返回一个友好的提示,虽然拒绝了用户的访问,但是会返回一个结果。

这就好比去买鱼,平常超市买鱼会额外赠送杀鱼的服务。等到逢年过节,超时繁忙时,可能就不提供杀鱼服务了,这就是服务的降级。

系统特别繁忙时,一些次要服务暂时中断,优先保证主要服务的畅通,一切资源优先让给主要服务来使用,在双十一、618时,京东天猫都会采用这样的策略。

pom.xml

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

UserConsumerApplication.java


package cn.itcast.user;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.http.client.OkHttp3ClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

//@EnableDiscoveryClient
//@SpringBootApplication
//@EnableCircuitBreaker //服务的熔断
@SpringCloudApplication //SpringCloudApplication可以替代上面三个
public class UserConsumerDemoApplication {

@Bean
@LoadBalanced //负载均衡
public RestTemplate restTemplate() {
// 这次我们使用了OkHttp客户端,只需要注入工厂即可
return new RestTemplate(new OkHttp3ClientHttpRequestFactory());
}

public static void main(String[] args) {
SpringApplication.run(UserConsumerDemoApplication.class, args);
}
}
 

以上是关于Hystix熔断解决雪崩问题的主要内容,如果未能解决你的问题,请参考以下文章

07.服务雪崩熔断与降级

使用熔断器防止服务雪崩

防雪崩利器:熔断器 Hystrix 的原理与使用

防雪崩利器:熔断器 Hystrix 的原理与使用

防雪崩利器:熔断器 Hystrix 的原理与使用(转)

原创谈谈服务雪崩降级与熔断