码迷,mamicode.com
首页 > 编程语言 > 详细

第四篇 断路器(Hystrix) --IDEA SpringCloud全攻略 亲测可用

时间:2018-06-20 10:18:08      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:ring   rem   turn   ret   bubuko   org   IV   ppi   rest   

写在开始

在SpringCloud项目中,服务之间相互调用(RPC Remote Procedure Call —远程过程调用),处于调用链路底层的服务产生不可用情况时,请求会产生堆积使得服务器线程阻塞,甚至导致服务器瘫痪。断路器就是为了解决服务不可用问题的方法。

 

正文开始

本篇在第三篇基础上进行代码编写,介绍的断路器是基于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为该功能提供了一套图形化管理界面,在下一篇进行介绍。

第四篇 断路器(Hystrix) --IDEA SpringCloud全攻略 亲测可用

标签:ring   rem   turn   ret   bubuko   org   IV   ppi   rest   

原文地址:https://www.cnblogs.com/tianmh/p/9202259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!