SpringCloud(三).Hystrix熔断器

一.服务器雪崩效应

     在SpringCloud中存在多个微服务的调用情况,当服务的提供者不可用时,多次调用失败可能会导致服务调用者的不可用,逐渐扩展到整个系统不可用,这种情况称为服务器雪崩效应,下面图中展示服务的故障扩散,那么在SpringCloud中,解决这一效应就变得尤为重要,SpringCloud中通过Hystrix熔断器的熔断机制提高服务的容错能力。

二.熔断器的原理

     Hystrix如同电力系统中断路器,在一定时期内检测到多次类似的错误,它将会强迫后续的多次调用快速失败,使应用不再访问远程服务,不再执行可能失败的错误访问,从而使得应用程序能够继续执行而不再等待错误的修正,或者等待长时间的超时产生,同时熔断器还具有诊断错误是否修正的能力,当错误修正时,服务会再次尝试调用。原理图如下图所示:

三.配置Hystrix

  由于Hystrix只是用于服务调用端,所以引用上面spring-cloud-consumer项目进行改造,因为Feign中已经有了Hystrix的依赖,所以不需要添加新的配置 

 1.配置文件中添加  feign.hystrix.enabled=true

 2.实现HelloRemote接口,重写方法

@Component
public class HelloRemoteHystrix implements HelloRemote{

    @Override
    public String hello(@RequestParam(value = "name") String name) {
        return "hello" +name+", this messge send failed ";
    }
}

3.配置会掉函数fallback

@FeignClient(name= "spring-cloud-producer",fallback = HelloRemoteHystrix.class)
public interface HelloRemote {

    @RequestMapping(value = "/hello")
    public String hello(@RequestParam(value = "name") String name);

}

4.测试 ,启动Eureka,producer,consumer,输入http://localhost:8092/hello111/zhangsan,显示 hello zhangsan,this is first name;关闭producer,刷新页面,显示 hello zhangsan,this messge send failed,熔断成功。

 
 

   

猜你喜欢

转载自www.cnblogs.com/hs5201314tx/p/11518041.html