1 分布式系统面临的问题

  1. 服务雪崩
    多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的"扇出”,如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”,对于高流量的应用来说,单一 的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障。这些都表示需要对故障和延迟进行隔离和管理,以便单个依赖关系的失败,不能取消整个应用程序或系统。所以, 通常当你发现一个模块下的某个实例失败后,这时候这个模块依然还会接收流量,然后这个有问题的模块还调用了其他的模块,这样就会发生级联故障,或者叫雪崩。

2 什么是hystrix

Hystrix是一个用于处理分布式系统的延迟和容错的开源库, 在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,
Hystrix能够保证在一个依赖出问题的情况下, 不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。
“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝) , 向调用方返回一个符合
预期的、可处理的备选响应(FallBack)
而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会
被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。

可以干嘛
https://github.com/Netflix/Hystrix/wiki/How-To-Use

1. 服务降级
2. 服务熔断
3. 实时监控

3 服务降级,熔断,限流的区别

服务降级
服务器忙,请稍候再试,不让客户端等待并立刻返回一个友好提示,fallback

哪些情况会触发降级:

  • 超时
  • 异常
  • 宕机
  • 服务熔断
  • 线程池/信号量打满

服务熔断
保险丝关闭,断开,半开.

类比保险丝达到最大服务访问后,直接拒绝访问,拉闸限电,
然后调用服务降级的方法并返回友好提示服务的降级->进而熔断->恢复调用链路

断路器在什么情况下开始起作用

涉及到断路器的三个重要参数:快照时间窗、请求总数阀值、错误百分比阀值。
1:快照时间窗:断路器确定是否打开需要统计一 些请求和错误数据,而统计的时间范围就是快照时间窗,默认为最近的10秒。
2: 请求总数阀值:在快照时间窗内,必须满足请求总数阀值才有资格熔断。默认为20,意味着在10秒内,如果该hystrix命令的调用次数不足20次,
即使所有的请求都超时或其他原因失败,断路器都不会打开。
3:错误百分比阀值:当请求总数在快照时间窗内超过了阀值,比如发生了30次调用,如果在这30次调用中,有15次发生了超时异常,也就是超过
50%的错误百分比,在默认设定50%阀值情况下,这时候就会将断路器打开。


断路器开启或者关闭的条件

1. 当满足一定阀值的时候(默认10秒内超过20个请求次数)
2. 当失败率达到一定的时候(默认10秒内超过50%请求失败)
3. 到达以上阀值,断路器将会开启
4. 当开启的时候,所有请求都不会进行转发
5. 一段时间之后(默认是5秒),这个时候断路器是半开状态,会让其中一个请求进行转发。如果成功,断路器会关闭,若失败,继续开启。重复4和5

断路器打开后

1:再有请求调用的时候,将不会调用主逻辑,而是直接调用降级fallback.通过断路器,实现了自动地发现错误并将降级逻辑切换为主逻辑,减少响
应延迟的效果。
2:原来的主逻辑要如何恢复呢?
对于这- -问题,hystrix也为我们实现了 自动恢复功能。
当断路器打开,对主逻辑进行熔断之后,
hystrix会启动一个休眠时间窗,在这个时间窗内,
降级逻辑是临时的成为主逻辑,当休眠时间窗到期,断路器将进入半开状态,
释放一次请求到原来的主逻辑上,如果此次请求正常返回,
那么断路器将继续闭合,
主逻辑恢复,如果这次请求依然有问题,
断路器继续进入打开状态,休眠时间窗重新计时。

服务限流

秒杀高并发等操作,严禁一窝蜂的过来拥挤,大家排队,一秒钟N个,有序进行

hystrix dashboard

除了隔离依赖服务的调用以外,Hystrix还提供 了准实时的调用监控(Hystrix Dashboard),Hystrix会持续地记录所有通过Hystrix发
起的请求的执行信息,拟统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等。Netflix通过
hystrix-metrics-event-stream项目实现了对以上指标的监控。
Spring Cloud也提供了Hystrix Dashboard的整合,对监控内容转化成
可视化界面。

hystrix断路器引发的相关概念相关推荐

  1. Spring Cloud构建微服务架构:服务容错保护(Hystrix断路器)【Dalston版】

    前言 在前两篇<Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)>和<Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)&g ...

  2. Hystrix面试 - 深入 Hystrix 断路器执行原理

    Hystrix面试 - 深入 Hystrix 断路器执行原理 RequestVolumeThreshold HystrixCommandProperties.Setter().withCircuitB ...

  3. SpringCloud中 Feign结合Hystrix断路器开发。

    Feign结合Hystrix断路器开发: 转载于:https://www.cnblogs.com/longdb/p/10468371.html

  4. Hystrix断路器执行原理

    深入 Hystrix 断路器执行原理 Hystrix熔断机制,用于监控微服务调用情况,当失败的情况达到预定的阈值(5秒失败20次),会打开断路器,拒绝所有请求,直到服务恢复正常为止. circuitB ...

  5. 五、Hystrix断路器

    Hystrix断路器 概述 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每一个依赖关系在某些时候将不可避免的失败. 服务雪崩 多个微服务之间调用的时候,假如微服务A调用微服务 ...

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

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

  7. Netflix Hystrix断路器简介与工作原理

    一.前言? 1.Netflix Hystrix断路器是什么? Netflix Hystrix是SOA/微服务架构中提供服务隔离.熔断.降级机制的工具/框架.Netflix Hystrix是断路器的一种 ...

  8. 微服务——Hystrix断路器(豪猪哥)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 概述 分布式系统面临的问题 是什么 能干嘛 Hystrix重要概念 服务降级(fallback) 哪些情况会触发降级 服务熔 ...

  9. SpringCloud07 - Hystrix 断路器

    扯淡: 服务与服务之间有业务关联就需要调用,当被调用的服务发生故障(上线后多半是由于网路原因导致连接超时),必然会波及到服务调用者.通俗讲,断路器就是在低层级的服务发生故障时将服务间的连接断开. 个人 ...

最新文章

  1. SAP QM 主检验特性主数据关键字段解释
  2. “百亿补贴”真的能拯救一切吗?
  3. 学计算机的快毕业要学论文吗,学计算机的好写毕业论文吗?
  4. Packet Tracer 思科模拟器之交换机配置快速生成树协议(RSTP)
  5. docker容器简介及安装
  6. 同级中断可以嵌套吗_这可能是最通俗易懂的方式讲解ARM中断原理以及中断嵌套...
  7. vba put 语名 delphi 用什么语句_将VBA数组写入工作表时转置(Transpose)的利用
  8. 技术铺路,生态架桥:来自华为的开发者全面进阶说明书
  9. detectron2 ImportError: cannot import name ‘_C‘ from ‘detectron2‘
  10. addEventListener:为单个事件注册多个事件事件处理程序
  11. 百度文库的几种下载方法
  12. springBoot dubbo junit 单元测试
  13. 定值保险计算举例_保险中生命表的计算例题 定值保险和不定值保险计算例题...
  14. 画彩色斐波那契螺旋线
  15. 你的面子到底值几斤几两
  16. 计算机网络基础技术:数据通信技术基本概念
  17. kafka-topics.sh java.rmi.server.ExportException: Port already in use: 5555
  18. 现有一些开源ESB总线的比较
  19. [RaspberryPi] 一键部署树莓派Zero电子相框功能!
  20. Delphi中ComPort串口控件通信中的数据处理

热门文章

  1. 前端学习(1311):请求报文
  2. 前端学习(489):文本格式化
  3. git(4):git安装教程
  4. 第七十二期:Visual Studio Online 终于公开上线了
  5. spring学习(23):基础组件
  6. stylus之选择器(Selectors)
  7. PyTorch系列 | 如何加快你的模型训练速度呢?
  8. css background 充满自适应_剖析一些经典的CSS布局问题,为前端开发+面试保驾护航...
  9. zabbix解决中文乱码
  10. SecureCRT 中文乱码问题