zoukankan      html  css  js  c++  java
  • 【Spring Cloud笔记】 断路器-hystrix

    在微服务架构中,一个微服务的超时失败可能导致瀑布式连锁反映,Spring Cloud Netflix 的断路器Hystrix通过自主反馈,防止了这种情况发生。下面介绍简单的断路器使用方法。

    【step1】:在项目的pom文件添加Hystrix依赖

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

    【step2】:由于Spring Cloud集群内部服务调用可以通过Ribbon或者Feign实现,所以断路器具体使用也分两种场景。先介绍Ribbon使用方式。

    1、在启动类加注解,@EnableCircuitBreaker,开启断路器支持

    2、在服务调用上就爱注解@HystrixCommand,示例代码如下:

    @Service
    public class RestService {
    
      @Autowired
      RestTemplate restTemplate;
    
      @HystrixCommand(fallbackMethod = "serviceFailure")
      public String getHelloContent() {
        return restTemplate.getForObject("http://SERVICE-001/",String.class);
      }
    
      public String serviceFailure() {
        return "the service is not available !";
      }
    }

    这里注意:

    1、@HystrixCommand注解的fallbackMethod指定失败后的备用处理方法,我们可以分别将原服务SERVICE-001开启和关闭后分别执行调用测试,正常情况下返回原服务内容,当原服务不可用的情况下,将返回serviceFailure备用方法的内容

    2、备用方法定义的返回类型必须与原方法一致,否则会抛出转换异常。

    【step3】:Feign中使用断路器Hystrix

    1、由于Feign内部已经支持断路器,不需要显示在启动类上加@EnableCircuitBreaker注解

    2、在Feign类上注解@FeignClient,并通过fallback指定服务异常备用类,示例代码如下

    @FeignClient(name = "SERVICE-001", fallback = RestServiceFailure.class)
    public interface RestService {
    @RequestMapping(value = "/test", method = RequestMethod.GET)
      public String test();
    }
    

      

    3、创建服务异常备用类,注意必须实现RestService接口,并添加注解,作为bean注入到容器中,如下

    @Service
    public class RestServiceFailure implements HelloWorldService {
      @Override
      public String test() {
        return "the service is not available !";
      }
    }

    测试方法同Ribbon一样,可以得到相同的结果。

  • 相关阅读:
    【?】Hello。。。
    【Calc】对于‘精分’的研究
    [AFO]记五年oi生涯及CSP2019复赛游记
    CF#579div.3
    「BZOJ1827」奶牛大集会
    「BZOJ2821」作诗 && 「BZOJ2724」蒲公英
    「BZOJ4576」262144
    「Bzoj5055」膜法师
    「51nod1689」逛街
    「51nod1681」公共祖先 &&「51nod2553」双重祖先
  • 原文地址:https://www.cnblogs.com/funnyboy0128/p/8996428.html
Copyright © 2011-2022 走看看