• SpringCloud IDEA 教学 (四) 断路器(Hystrix)


    写在开始

    在SpringCloud项目中,服务之间相互调用(RPC Remote Procedure Call —远程过程调用),处于调用链路底层的服务产生不可用情况时,请求会产生堆积使得服务器线程阻塞,甚至导致雪崩效应。使用断路器(Hystrix)可预防服务雪崩。

    正文开始

    本篇在第三篇基础上进行代码编写,介绍的断路器是基于Ribbon类型的断路器

    新建项目的用户可以在构建项目时勾选下面组件

     

    已经搭建项目的用户可以在pom中增加

        <!--断路器插件-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            </dependency>

    另外还要做一下配置

    Application增加

    @EnableHystrix

    方法增加失败注解

      @RequestMapping(value = "/invokeService", method = RequestMethod.GET)
      @HystrixCommand(fallbackMethod = "hiError")
      public String invokeService(@RequestParam(value = "name") String name) {
        System.out.println("入参name:" + name);
        String json = restTemplate.getForObject("http://CLOUD-SERVICE/getServiceNameAndPort?name=" + name, String.class);
        System.out.println(json);
        return json;
      }

    定义调用方法失败时的方法

     public String hiError(String name) {
        return "--------------hi," + name + "微服务down了--------------";
      }

    ---------------------------------------------------配置完毕 下面做两个测试-------------------------------------------------------

    1启动服务中心、S端、C端 

     接口请求 http://localhost:8003/invokeService?name=tianmh  返回结果 Hello tianmh servicePort 8001

    2停掉S端

     接口请求 http://localhost:8003/invokeService?name=tianmh  返回结果 --------------hi,tianmh微服务down了--------------

     写在最后

     本篇介绍了断路器,它可以保证在异常发生时调用方有序的运行。另外springcloud为该功能提供了一套图形化管理界面,在下一篇进行介绍。

    以上,亲测。

    欢迎在评论区指正,

    如果感觉本教程对您有所帮助,希望可以为笔者打Call

  • 相关阅读:
    javascript运动系列第二篇——变速运动
    深入学习jQuery动画控制
    深入学习jQuery动画队列
    深入学习jQuery自定义动画
    深入学习jQuery的三种常见动画效果
    深入学习jQuery鼠标事件
    深入学习jQuery事件对象
    深入学习jQuery事件绑定
    只想显示日期不想显示时间
    The conversion of a varchar data type to a datetime data type resulted in an out-of-range value
  • 原文地址:https://www.cnblogs.com/tianmh/p/9202259.html
Copyright © 2020-2023  润新知