java 熔断器模式_Spring Cloud Hystrix——熔断器
1、雪崩效应
在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。
如下图所示:A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者。A不可用引起了B的不可用,并将不可用像滚雪球一样放大到C和D时,雪崩效应就形成了。
2、服务雪崩原因分析
2、1、服务提供者不可用
2、2、重试加大流量
2、3、服务调用者不可用
3、使用Hystrix预防服务雪崩
Hystrix [hɪst’rɪks]的中文含义是豪猪,因其背上长满了刺而拥有自我保护能力。Netflix的 Hystrix 是一个帮助解决分布式系统交互时超时处理和容错的类库,它同样拥有保护系统的能力。
Hystrix的设计原则包括:
资源隔离
熔断器(断路器)
命令模式
4、Hystrix特性
4、1、熔断器机制
断路器很好理解,当Hystrix Command请求后端服务失败数量超过一定比例(默认50%),断路器会切换到开路状态(Open)。这时所有请求会直接失败而不会发送到后端服务。 断路器保持在开路状态一段时间后(默认5秒),自动切换到半开路状态(HALF-OPEN)。这时会判断下一次请求的返回情况, 如果请求成功,断路器切回闭路状态(CLOSED), 否则重新切换到开路状态(OPEN)。 Hystrix的断路器就像我们家庭电路中的保险丝,一旦后端服务不可用,断路器会直接切断请求链,避免发送大量无效请求影响系统吞吐量, 并且断路器有自我检测并恢复的能力。
熔断器开关相互转换的逻辑图:
4、2、Fallback
Fallback相当于是降级操作。对于查询操作,我们可以实现一个fallback方法,当请求后端服务出现异常的时候,可以使用fallback方法返回的值。 fallback方法的返回值一般是设置的默认值或者来自缓存。
4、3、资源隔离
在Hystrix中,主要通过线程池来实现资源隔离。通常在使用的时候我们会根据调用的远程服务划分出多个线程池。例如调用产品服务的Command放入A线程池, 调用账户服务的Command放入B线程池。这样做的主要优点是运行环境被隔离开了。这样就算调用服务的代码存在bug或者由于其他原因导致自己所在线程池被耗尽时, 不会对系统的其他服务造成影响。但是带来的代价就是维护多个线程池会对系统带来额外的性能开销。如果是对性能有严格要求而且确信自己调用服务的客户端代码不会出问题的话, 可以使用Hystrix的信号模式(Semaphores)来隔离资源。
https://www.cnblogs.com/linjiqin/category/1301747.html
java 熔断器模式_Spring Cloud Hystrix——熔断器相关推荐
- Spring Cloud Hystrix——熔断器
1.雪崩效应 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应.服务雪崩效应是一种因"服务提供者"的 ...
- java断路器原理_spring cloud 入门系列四:使用Hystrix 实现断路器进行服务容错保护...
在微服务中,我们将系统拆分为很多个服务单元,各单元之间通过服务注册和订阅消费的方式进行相互依赖.但是如果有一些服务出现问题了会怎么样? 比如说有三个服务(ABC),A调用B,B调用C.由于网络延迟或C ...
- hystrix 源码 线程池隔离_Spring Cloud Hystrix 源码学习合集
# Spring Cloud Hystrix 源码学习合集 **Hystrix: Latency and Fault Tolerance for Distributed Systems** ![](h ...
- java https请求_Spring Cloud Sleuth:分布式请求链路跟踪
Spring Cloud Sleuth 是分布式系统中跟踪服务间调用的工具,它可以直观地展示出一次请求的调用过程,本文将对其用法进行详细介绍. Spring Cloud Sleuth 简介 随着我们的 ...
- consul java 注册中心_Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例...
获取springcloud实战项目详细视频教程,请留言联系. 1.创建项目 我们创建聚合项目来讲解 Consul,首先创建一个 pom 父工程. 2.添加依赖 pom.xml 4.0.0 com.ex ...
- java 配置文件加密_Spring cloud config 配置文件加密方式
前言 我们会使用git来保存我们项目的配置文件,但是文件中总有一些敏感数据,对于这些敏感数据我们通常需要给它加密,加密通常有两种加密方式,一种是对称加密,一种是非对称加密,对称加密简单方便,但是安全性 ...
- Hystrix熔断器的理解
Hystrix熔断器的理解 什么是熔断器 为什么要使用熔断器 熔断器工作原理![在这里插入图片描述](https://img-blog.csdnimg.cn/20200823210834884.png ...
- Spring cloud微服务 Hystrix熔断器
以下demo代码:https://github.com/wades2/HystrixtDemo 官网定义:Hystrix是一个延迟容错库.在分布式环境中,许多服务依赖项中的一些不可避免地会失败.Hys ...
- SpringCloud - Spring Cloud Netflix 之 Hystrix熔断器(七)
阅读本文前可先参考 SpringCloud - Spring Cloud根/父项目,开发准备(二)_MinggeQingchun的博客-CSDN博客 在微服务架构中,一个应用往往由多个服务组成,这些服 ...
最新文章
- Go-err is shadowed during return
- 揭秘7大AI学习板块,这个星球推荐你拥有
- 【Python】Pandas中的宝藏函数-transform()
- generator探幽(1)--koa中间件机制浅析
- python学习笔记_序
- 用winformz时间格式不正确_煮八爪鱼,有人用冷水,有人用开水,大厨:都不对,教你正确做法...
- Linux操作系统中vi常见用法和相关配置
- 利用Matlab寻找曲线的拐点
- rabbitmq-web-stomp 优化过程
- React.js和Vue.js有感—前端开发组件化思想的局部要点理解
- protoc库的卸载与安装
- 群论中的拉格朗日定理(子群的阶必然能整除群阶)
- 百钱百鸡 公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱
- 《网络安全等级保护基本要求》(GB/T 22239-2019)标准解读
- 我的一点企业上云经验
- Verilog HDL系统任务说明语句task
- STM32 烧录程序后上电不工作,但调试模式下可正常工作的解决办法
- swift学习笔记之navigationController的设置以及使用
- APPS BFC-11-75-03B 75欧RF变压器替Mini-Circuit TC1-1T
- DotNetTextBox V3.0 所见即所得编辑器控件Ver3.4.0 FreeVersion(新增商业试用版下载)