写在开始

在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

SpringCloud IDEA 教学 (四) 断路器(Hystrix)的更多相关文章

  1. SpringCloud学习系列之三----- 断路器(Hystrix)和断路器监控(Dashboard)

    前言 本篇主要介绍的是SpringCloud中的断路器(Hystrix)和断路器指标看板(Dashboard)的相关使用知识. SpringCloud Hystrix Hystrix 介绍 Netfl ...

  2. SpringCloud学习成长 四 断路器(Hystrix)

    在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务 ...

  3. springcloud 入门 6 (断路器hystrix)

    hystrix:断路器 断路器是为了解决服务故障的“雪崩”,   雪崩是指,由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请 ...

  4. SpringCloud IDEA 教学 (五) 断路器控制台(HystrixDashboard)

    写在开头 断路器控制台是为了查看断路器运行情况而研发的.本章介绍了断路器控制台的搭建,代码基于之前Client的搭建.HystrixDashboard基于之前配置好的,使用了HystrixComman ...

  5. 【SpringCloud构建微服务系列】学习断路器Hystrix

    一.Hystrix简介 在微服务架构中经常包括多个服务层,比如A为B提供服务,B为C和D提供服务,如果A出故障了就会导致B也不可用,最终导致C和D也不可用,这就形成了雪崩效应. 所以为了应对这种情况, ...

  6. SpringCloud断路器(Hystrix)和服务降级案列

    断路器(Hystrix) 为什么需要 Hystrix? 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用(RPC).为了保证其高可用,单个服务又必须集群部署.由于网络原因或者自 ...

  7. SpringCloud 在Feign上使用Hystrix(断路由)

    SpringCloud  在Feign上使用Hystrix(断路由) 第一步:由于Feign的起步依赖中已经引入了Hystrix的依赖,所以只需要开启Hystrix的功能,在properties文件中 ...

  8. SpringCloud----熔断机制 -- 断路器hystrix

    参考借鉴:http://www.cnblogs.com/chry/p/7279856.html SpringCloud Netflix实现了断路器库的名字叫Hystrix. 在微服务架构下,通常会有多 ...

  9. 断路器Hystrix与Turbine集群监控-Spring Cloud学习第三天(非原创)

    文章大纲 一.Hystrix基础介绍二.断路器Hystrix简单使用三.自定义Hystrix请求命令四.Hystrix的服务降级与异常处理五.Hystrix的请求缓存与请求合并六.Hystrix仪表盘 ...

随机推荐

  1. 20181029NOIP模拟赛T3

    3 .空间活动 [题目描述] 贝茜和佩奇正在玩一款游戏,在游戏开始会生成一个有n个点m条单向边的地图,经过每条边需要花费价格为Hi的费用(Hi<=1000).但是如果两个点可以互相到达,那么这两 ...

  2. Linux性能检查命令总结[转]

    一些常用的网络.IO.内存监控指令,Linux性能检查命令总结

  3. Ubuntu 16.04LTS 更新清华源

    1 备份原来的更新源 cp /etc/apt/sources.list /etc/apt/sources.list.backup 如果提示权限不够就输入下面两行,先进入到超级用户,再备份 sudo - ...

  4. DataSet转换为泛型集合和DataRow 转成 模型类

    public static class TransformToList { /// <summary> /// DataSet转换为泛型集合 /// </summary> // ...

  5. master.HMaster: Failed to become active master

    Hbase集群启动后自动退出,日志错误: fatal error: master.HMaster: Failed to become active master java.io.IOException ...

  6. java 用户修改密码

    import java.util.Scanner; class Member { private String mima; private String name; public String get ...

  7. python学习笔记~INI、REG文件读取函数(自动修复)

    引入configparser,直接read整个INI文件,再调用get即可.但需要注意的是,如果INI文件本身不太规范,就会报各种错,而这又常常不可避免的.本文自定义函数通过try...except. ...

  8. 为什么我要放弃javaScript数据结构与算法(第八章)—— 树

    之前介绍了一些顺序数据结构,介绍的第一个非顺序数据结构是散列表.本章才会学习另一种非顺序数据结构--树,它对于存储需要快速寻找的数据非常有用. 本章内容 树的相关术语 创建树数据结构 树的遍历 添加和 ...

  9. JavaScript基础part2

    JavaScript对象 在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,String.Math.Array.Date.Re ...

  10. linux下Intellij Idea 14的安装

    一.安装配置jdk                                                         虽然很多Linux发行版现在已经自带OpenJDK,但是在开发过程中 ...