多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又在调用其他的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,那么对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,这就是所谓的“雪崩效应”。

1. Hystrix

Hystrix 是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多服务无法避免会调用失败,比如超时、异常等等,Hystrix能够保证在一个服务出现问题的情况下,不会导致整体服务的失败,避免级联故障,以提高分布式系统的弹性。

所以叫“断路器”。“断路器”是一种开关装置,就好比我们家里的熔断保险丝,当出现突发情况,会自动跳闸,避免整个电路烧坏。当调用的服务器出现故障时,通过Hystrix,会向调用方返回一个已经处理的预期响应结果(fallback),而不是长期处于一个等待或者抛出异常。
“服务熔断”,就跟熔断保险丝一个道理。

2. 服务熔断和服务降级

服务熔断机制是应对雪崩效应的一种微服务链路保护机制。当请求的服务不可用或者请求的时长过长,就会进行服务降级,快速熔断该节点微服务的调用,返回默认的响应信息。当检测到服务调用正常的时候即立马恢复。
服务降级是在客户端完成的,不是服务端,与服务端是没有关系的。

Hystrix特性

请求熔断: 当Hystrix Command请求后端服务失败数量超过一定比例(默认50%), **断路器会切换到开路状态(Open). 这时所有请求会直接失败而不会发送到后端服务. 断路器保持在开路状态一段时间后(默认5秒), 自动切换到半开路状态(HALF-OPEN).**这时会判断下一次请求的返回情况, 如果请求成功, 断路器切回闭路状态(CLOSED), 否则重新切换到开路状态(OPEN). Hystrix的断路器就像我们家庭电路中的保险丝, 一旦后端服务不可用, 断路器会直接切断请求链, 避免发送大量无效请求影响系统吞吐量, 并且断路器有自我检测并恢复的能力.

服务降级:Fallback相当于是降级操作. 对于查询操作, 我们可以实现一个fallback方法, 当请求后端服务出现异常的时候, 可以使用fallback方法返回的值. fallback方法的返回值一般是设置的默认值或者来自缓存.告知后面的请求服务不可用了

Spring Cloud中Hystrix实现断路器原理相关推荐

  1. Spring Cloud中Hystrix仪表盘与Turbine集群监控

    Hystrix仪表盘,就像汽车的仪表盘实时显示汽车的各项数据一样,Hystrix仪表盘主要用来监控Hystrix的实时运行状态,通过它我们可以看到Hystrix的各项指标信息,从而快速发现系统中存在的 ...

  2. Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失(续)

    前言 上篇文章<Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失>我们对ThreadLocal数据丢失进行了详细的分析,并通过代码的方式复现了这个问题. ...

  3. Spring Cloud中Hystrix、Ribbon及Feign的熔断关系是什么?

    导读 今天和大家聊一聊在Spring Cloud微服务框架实践中,比较核心但是又很容易把人搞得稀里糊涂的一个问题,那就是在Spring Cloud中Hystrix.Ribbon以及Feign它们三者之 ...

  4. Spring Cloud中Hystrix的请求合并

    在微服务架构中,我们将一个项目拆分成很多个独立的模块,这些独立的模块通过远程调用来互相配合工作,但是,在高并发情况下,通信次数的增加会导致总的通信时间增加,同时,线程池的资源也是有限的,高并发环境会导 ...

  5. Spring Cloud中Hystrix仪表盘与Turbine集群监控 1

    Hystrix仪表盘,就像汽车的仪表盘实时显示汽车的各项数据一样,Hystrix仪表盘主要用来监控Hystrix的实时运行状态,通过它我们可以看到Hystrix的各项指标信息,从而快速发现系统中存在的 ...

  6. Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失

    在Spring Cloud中我们用Hystrix来实现断路器,Zuul中默认是用信号量(Hystrix默认是线程)来进行隔离的,我们可以通过配置使用线程方式隔离. 在使用线程隔离的时候,有个问题是必须 ...

  7. Spring Cloud Netfix Hystrix(断路器)

    一.灾难性雪崩 造成灾难性雪崩效应的原因,可以简单归结为下述三种: 服务提供者(Application Service)不可用.如:硬件故障.程序BUG.缓存击穿.并发请求量过大等. 重试加大流量.如 ...

  8. 【夯实Spring Cloud】Spring Cloud中使用Hystrix实现断路器原理详解(上)

    本文属于[夯实Spring Cloud]系列文章,该系列旨在用通俗易懂的语言,带大家了解和学习Spring Cloud技术,希望能给读者带来一些干货.系列目录如下: [夯实Spring Cloud]D ...

  9. Spring Cloud(五)断路器监控(Hystrix Dashboard)

    在上两篇文章中讲了,服务提供者 Eureka + 服务消费者 Feign,服务提供者 Eureka + 服务消费者(rest + Ribbon),本篇文章结合,上两篇文章中代码进行修改加入 断路器监控 ...

最新文章

  1. The Innovation | Volume 2 Issue3 正式出版
  2. java文件正确编写格式_java Srpingboot框架书写mapper代码的正确格式
  3. Visual Studio 2010 第一时间体验旗舰版
  4. 剑指Offer(Java版):数字在排序数组中出现的次数
  5. 真诚推荐几个最值得关注的前端公众号
  6. document.getElementsByName和document.getElementById用法
  7. call to member function bind_param() on boolean...........
  8. div+css与table布局
  9. Java 8——接口中个的默认方法和静态方法
  10. go 判断是否域名_Go编程:对不起,你的 CPU 泄露了
  11. Linux网络编程之connect创建
  12. WinHex license添加(v19测试可用)
  13. reviewboard 安装
  14. Linux 的du和df命令
  15. sklearn的系统学习——随机森林调参(含案例及完整python代码)
  16. 华纳云:香港服务器哪家比较好?
  17. 数据库启动报ORA-03113错误
  18. 论文Anonymous Zether实验复现(持续更)
  19. 『边城』: 陌上花开,可缓缓归矣
  20. python实例1-找质数/素数

热门文章

  1. 前端捕捉轨迹_web端百度地图API实现实时轨迹动态展现
  2. FilmLight Daylight for mac(视频转码播放工具)
  3. 揭秘“菲住布渴”中运用的黑科技:除了check in、坐电梯、开门...全部刷脸之外,还有什么?... 1
  4. drupal上安装chatroom
  5. MySQL卸载以及重新安装(详细,带图)
  6. 时间做减法,人生做加法——如何修复hold violation?
  7. 王者荣耀测试自己本命英雄软件,抖音王者荣耀本命英雄测试app
  8. 存储卡丢失照片数据用什么办法能免费恢复
  9. 软件分享:超级兔子2010最新版的九大功能
  10. W32DASM 和 OLLYDBG 配合起来破解反汇编算法