Netflix的开源组件Hystrix的流程: 

图中流程的说明:

  1. 将远程服务调用逻辑封装进一个HystrixCommand。
  2. 对于每次服务调用可以使用同步或异步机制,对应执行execute()或queue()。
  3. 判断熔断器(circuit-breaker)是否打开或者半打开状态,如果打开跳到步骤8,进行回退策略,如果关闭进入步骤4。
  4. 判断线程池/队列/信号量(使用了舱壁隔离模式)是否跑满,如果跑满进入回退步骤8,否则继续后续步骤5。
  5. run方法中执行了实际的服务调用。 
    a. 服务调用发生超时时,进入步骤8。
  6. 判断run方法中的代码是否执行成功。 
    a. 执行成功返回结果。 
    b. 执行中出现错误则进入步骤8。
  7. 所有的运行状态(成功,失败,拒绝,超时)上报给熔断器,用于统计从而影响熔断器状态。
  8. 进入getFallback()回退逻辑。 
    a. 没有实现getFallback()回退逻辑的调用将直接抛出异常。 
    b. 回退逻辑调用成功直接返回。 
    c. 回退逻辑调用失败抛出异常。
  9. 返回执行成功结果。

注意:熔断是否开启熔断器主要由依赖调用的错误比率决定的,依赖调用的错误比率=请求失败数/请求总数。Hystrix中断路器打开的默认请求错误比率为50%(这里暂时称为请求错误率),还有一个参数,用于设置在一个滚动窗口中,打开断路器的最少请求数(这里暂时称为滚动窗口最小请求数),这里举个具体的例子:如果滚动窗口最小请求数为默认20,在一个窗口内(默认10秒,统计滚动窗口的时间可以设置),收到19个请求,即使这19个请求都失败了,此时请求错误率高达95%,但是断路器也不会打开。对于被熔断的请求,并不是永久被切断,而是被暂停一段时间(默认是5000ms)之后,允许部分请求通过,若请求都是健康的(ResponseTime<250ms)则对请求健康恢复(取消熔断),如果不是健康的,则继续熔断。(这里很容易出现一种错觉:多个请求失败但是没有触发熔断。这是因为在一个滚动窗口内的失败请求数没有达到打开断路器的最少请求数)

Hystrix熔断原理相关推荐

  1. Hystrix断路器原理及实现(服务降级、熔断、限流)

    Hystrix断路器原理及实现(服务降级.熔断.限流) 分布式系统面临的问题 Hystrix重要概念(面试常考) Hystrix案例 Hystrix 服务提供者 Hystrix 服务消费者 原因与解决 ...

  2. 微服务高可用利器——Hystrix熔断降级原理实践总结

    前言 最近在工作中参与组内服务稳定性建设,梳理我们目前服务现状并接入公司自研稳定性保障平台.对公司内自研组件以及业界流行的Hystrix做了学习,Netflix Hystrix 里面大量RxJava响 ...

  3. 【SpringCloud】Hystrix:熔断

    简介 Hystrix,英文意思是豪猪,全身是刺,看起来就不好惹,是一种保护机制.Hystrix也是Netflix公司的一款组件. 熔断原理 熔断器,也叫断路器,其英文单词为:Circuit Break ...

  4. Hystrix核心原理和断路器源码解析

    Hystrix运行原理 构造一个HystrixCommand或HystrixObservableCommand对象 执行命令. 检查是否已命中缓存,如果命中直接返回. 检查断路器开关是否打开,如果打开 ...

  5. Hystrix的原理及使用

    首页 博客 专栏课程 下载 问答 社区 插件 认证 会员中心 收藏 动态 消息 创作中心 Hystrix的原理及使用 Weichenghenxing 2020-11-02 21:25:40  9725 ...

  6. SpringCloud系列七:Hystrix 熔断机制(Hystrix基本配置、服务降级、HystrixDashboard服务监控、Turbine聚合监控)...

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:Hystrix 熔断机制 2.具体内容 所谓的熔断机制和日常生活中见到电路保险丝是非常相似的,当出现了问题之后,保险丝 ...

  7. hystrix熔断 简介_Hystrix简介– Hello World

    hystrix熔断 简介 在以前的博客文章中,我介绍了需要像Netflix Hystrix这样的库的动机. 在这里,我将跳入一些非常基本的方法来开始使用Hystrix,并在更复杂的用例中进行跟进. 你 ...

  8. hystrix熔断 简介_Hystrix简介

    hystrix熔断 简介 在过去的几天里,我一直在探索Netflix Hystrix库,并欣赏了这个出色的库所提供的功能. 引用Hystrix网站上的内容: Hystrix是一个延迟和容错库,旨在隔离 ...

  9. hystrix熔断 简介_Hystrix简介–总结

    hystrix熔断 简介 这是其他两篇文章的后续文章– 动机 ,说明为什么在分布式系统中需要类似Hystrix的内容以及Hystrix的基本介绍 . 这将是我的Hystrix旅程的总结,其中包含各种属 ...

最新文章

  1. python 对输入的数据进行排序_使用插入排序对输入数据排序
  2. 关于工具类应用产品界面设计的一点思考
  3. dmf nmf_SQL Server 2019 –新的DMF sys.dm_db_page_info
  4. poj 1035 Spell checker(hash)
  5. 拓端tecdat|R语言广义线性模型GLM:线性最小二乘、对数变换、泊松、二项式逻辑回归分析冰淇淋销售时间序列数据和模拟
  6. Hbase KeyValue结构详解
  7. Oracle数据库学习
  8. 海康视频WEB插件 V1.5.2 开发总结
  9. 一篇文章详细解读Spring的AOP原理过程(Spring面向切面详解)
  10. 计算机英语写作,计算机英语8.4_电邮写作+.ppt
  11. 电路设计——电容作用
  12. 智能管家---1.项目搭建
  13. 感知颗粒度与高手之间的关系
  14. Jboss RichFaces + Skin的简单运用示例代码
  15. 大声说出我爱你——寒假英语学习总结
  16. py使用polar绘制霍兰德职业测试雷达图
  17. 排队叫号医院管理源码
  18. java语言数学_Java语言实现小学数学练习
  19. 单片机:中断系统控制二极管的亮灭
  20. 洛谷——P1093 [NOIP2007 普及组] 奖学金

热门文章

  1. python idle退出_【ZZ】windows+python2.7在IDLE中执行sys.exit()出现的问题及解决方案
  2. 1231 sqlserver_sqlserver 删除表中 指定字符串
  3. 嵌入式软件常见笔试面试题总结 .
  4. oracle里的AUE是什么意思,oracle 创建表空间步骤代码
  5. 按照月的第几周统计_商标评审案件审理情况月报(2020年第11期)
  6. 国际导航网二开php源码下载,国际网址导航系统整站源码 v3.5.2
  7. linux centos 6.5压缩文件,CentOS 6.10 解压 rar压缩包
  8. mysql的增量备份方法_Mysql 增量备份,全部备份实现方法以及自动化脚本
  9. php分页循环生成htnl,PHP分页类,生成分页html字符串
  10. 网维大师服务器不运行,网维大师客户机连不上的解决方法