为什么会有断路器? 

  在微服务架构中,系 是拆分成 一个的服务单元各间通过注册与发现 的方式互相依 赖。每个单元都在不同的进程中运行, 都是通过远程调用的方式进行信 ,这样就有可能因为网络原或 是依赖服务自身问题出现调用延迟或者故障 而这些问题会直接导致调用方的对外服务也出现延迟,若此时调用方的请求不断增加,最后就会因依赖方响应慢或者不响应导致调用方等待 而形成任务积压最终导 致自身服务的瘫痪。
  为了解决这样的问题,因此产生断路器概念 。

2. 断路器的概念?

  

  

  在分布式架构中,断路器 的作用是当某个服务单元发生故障之后,通过断路器监控向调方返回一个错误响应,而不是长时间的等待。这样就会使得线程因调用故障服务被占释放避免了故障在分布式系统中的蔓延。
  Hystrix就是 具备有以上功能的应用 具备有以上功能的应用 。

3. Hystrix对Ribbon的支持

  添加依赖,pom

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

  由于 Hystrix中已经依赖了Ribbon,所以其实再引入了Hystrix之后,就看可以不用再引入Ribbon了。

  使用@EnableCircuitBreaker开启断路器服务

  添加注解@HystrixCommand(fallbackMethod = "toFail"),和自定义当发生断路时执行的方法。

public String toFail(int id) {
return "调用失败了....";
}

  注意:fallbackMethod中的值必须与自定义方法名相同,同事,自定义方法的返回值需要与@HystrixCommand注解所在的方法的返回值一致。

4.  测试

  1、 正常访问
  2、 关闭提供者应用(找不到服务时触发断路器)
  3、 提供者延迟5 秒 (超过一秒的响应时间触发断路器)
  4、 提供者延迟0.5 秒 (能发挥调用结果)

SpringCloud学习笔记(11)----Spring Cloud Netflix之Hystrix断路器的使用的更多相关文章

  1. SpringCloud学习笔记(13)----Spring Cloud Netflix之Hystrix断路器的隔离策略

    说明 : 1.Hystrix通过舱壁模式来隔离限制依赖的并发量和阻塞扩散 2. Hystrix提供了两种隔离策略:线程池(THREAD)和信号量隔离SEMAPHORE). 1. 线程池隔离(默认策略模 ...

  2. SpringCloud学习笔记(12)----Spring Cloud Netflix之Hystrix断路器的流程和原理

    工作流程(参考:https://github.com/Netflix/Hystrix/wiki/How-it-Works) 1. 创建一个HystrixCommand或HystrixObservabl ...

  3. Spring 源码学习笔记11——Spring事务

    Spring 源码学习笔记11--Spring事务 Spring事务是基于Spring Aop的扩展 AOP的知识参见<Spring 源码学习笔记10--Spring AOP> 图片参考了 ...

  4. Spring Cloud入门教程-Hystrix断路器实现容错和降级

    简介 Spring cloud提供了Hystrix容错库用以在服务不可用时,对配置了断路器的方法实行降级策略,临时调用备用方法.这篇文章将创建一个产品微服务,注册到eureka服务注册中心,然后我们使 ...

  5. springCloud学习-消息总线(Spring Cloud Bus)

    1.简介 Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来.它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控.本文要讲述的是用Spring Cloud Bus实现 ...

  6. Spring Cloud(Dalston.SR5)--Hystrix 断路器

    Spring Cloud 对 Hystrix 进行了封装,使用 Hystrix 是通过 @HystrixCommand 注解来使用的,被 @HystrixCommand 注解标注的方法,会使用 Asp ...

  7. Spring Cloud(Dalston.SR5)--Hystrix 断路器-缓存

    在 Spring Cloud 中可以使用注解的方式来支持 Hystrix 的缓存,缓存与合并请求功能需要先初始化请求上下文才能实现,因此,必须实现 javax.servlet.Filter 用于创建和 ...

  8. Spring Cloud(Dalston.SR5)--Hystrix 断路器-合并请求

    在 Spring Cloud 中可以使用注解的方式来支持 Hystrix 的合并请求,缓存与合并请求功能需要先初始化请求上下文才能实现,因此,必须实现 javax.servlet.Filter 用于创 ...

  9. SpringCloud学习笔记(16)----Spring Cloud Netflix之Hystrix Dashboard+Turbine集群监控

    前言: 上一节中,我们使用Hystrix Dashboard,只能看到单个应用内的服务信息.在生产环境中,我们经常是集群状态,所以我们需要用到Turbine这一应用. 作用:汇总系统内的多个服务的数据 ...

随机推荐

  1. HTML5中canvas介绍

    1.什么是Canvas canvas 是 HTML5 提供的一个用于展示绘图效果的标签 canvas 提供了一个空白的图形区域,可以使用特定的JavaScript API来绘画图形(canvas 2D ...

  2. 微信小程序遇坑笔记

    最近做了一个简单的微信小程序,遇到了一些坑: 1.appid固定,但是appsecret是可以变的,而且没有地方查看,后台以查看就是变更了,所以这个地方在开发的时候需要保存好: 2.打开网页,这个网页 ...

  3. 【摘录】JAVA内存管理-JVM垃圾收集机制

    很多公司都有自己的JVM实现,被Oracle收购的sun公司开发的JVM实现名为HotSpot.这一实现是我们最常用到的. 还有哪些JVM实现呢?比较有名的有Oracle之前收购的BEA公司(就是以前 ...

  4. 用IIS怎样在局域网内建网站

    IIS服务器组建一览 IIS(Internet Information Server,互联网信息服务)是一种Web(网页)服务组件,其中包括Web服务器.FTP服务器.NNTP服务器和SMTP服务器, ...

  5. fiddler一些高级用法

    https://my.oschina.net/leejun2005/blog/399108

  6. Python安装遇到的问题

    1.import MySQLdb  错误 导入MySQLdb模块时报错: >>> import MySQLdb Traceback (most recent call last): ...

  7. 路飞学城Python-Day37(practise)

    #1.自行创建测试数据 create database homework; use homework; # 年级表->老师表->课程表->班级表->学生表->成绩表-&g ...

  8. node——将数据写入data.json防覆盖

    前续 1.读取data.json文件内容 2.判断是否是第一次读取data.json(第一次读取则data.json是没有的) 3.将data.json数据转为数组list 4.将写入数据加入数组li ...

  9. js类的使用

    brush示例 以d3的一个brush进行叙述,示例见: https://bl.ocks.org/xunhanliu/6f0b46789842e9e19e6cfe9bd0b16806 应用情形: 当页 ...

  10. 洛谷1099 [NOIP2007] 树网的核

    链接https://www.luogu.org/problemnew/show/P1099 题目描述 设T=(V,E,W)是一个无圈且连通的无向图(也称为无根树),每条边到有正整数的权,我们称TTT为 ...