断路器(Hystrix Ribbon)

2019-04-02  本文已影响0人  喽喽喽被使用
  1. 【服务中心】集群,Eureka Server

  2. 【服务提供者】集群,Eureka Client

  3. 【服务消费者】应用,Eureka Ribbon

  4. 未加熔断机制,测试
    4.1 关闭【服务提供者】中的某个服务;


    4.2 访问地址http://localhost:52610/ribbonInfo,多次刷新(肯定出错,嘻嘻)

    访问52601会出现短暂的阻塞等待,假如,正式环境,访问量巨大,就会有服务崩溃的风险,甚至是连锁反应(雪崩)
    熔断机制,保护您的应用安全,是您的贴身陪伴!!!(访问不通时,会做出及时响应)
  5. 修改【服务消费者】Eureka Ribbon,假如熔断机制
    5.1 pom文件添加依赖:

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

    5.2 启动类添加注解

    @EnableHystrix                  //启用hystrix熔断机制相关配置
    

    5.3 修改业务层 EurekaRibbonService

    @Service
    public class EurekaRibbonService {
        @Autowired
        RestTemplate restTemplate;
        @HystrixCommand(fallbackMethod = "getInfoFailure")  //新增@HystrixCommand注解,设置服务调用失败的回调方法 fallbackMethod = "getInfoFailure"
        public String getInfo() {
            System.out.println("调用服务    EUREKA-CLIENT/info");
            String message = restTemplate.getForObject("http://EUREKA-CLIENT/info", String.class);
            System.out.println("调用 EUREKA-CLIENT/info 返回信息: " + message);
            System.out.println("调用 EUREKA-CLIENT/info 成功!");
            return message;
        }
        public String getInfoFailure() {
            return "网络繁忙,请稍后重试-_-,服务消费方返回的信息";
        }
    }
    
  6. 重启【服务提供者】Eureka Client、【服务消费者】Eureka Ribbon集群

  7. 再试试上面的操作,不出意外,是这样吧,骚年!


    【断路器 Ribbon】结束!!!
ps: 
    1. 集群注册中心可能会导致不同服务注册到不同节点,效果不是很明显(比如,正常情况某些端口你的访问不到!!!正常现象)
    2. 其实阻塞等待时间还好,本人猜测是Spring框架做过处理,所以和加入熔断器之后的等待时间差不多,不是所有工作别人都能帮咱们做好的!!!
上一篇 下一篇

猜你喜欢

热点阅读