首页 > 其他分享 >Spring Cloud:第四章:Hystrix断路器

Spring Cloud:第四章:Hystrix断路器

时间:2022-10-05 18:00:55浏览次数:82  
标签:降级 调用 请求 Hystrix Spring 信号量 断路器 线程 Cloud

Hystrix “豪猪”,具有自我保护的能力。hystrix 通过如下机制来解决雪崩效应问题。
资源隔离:包括线程池隔离和信号量隔离,限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用。

(1)线程池隔离模式:使用一个线程池来存储当前请求,线程池对请求作处理,设置任务返回处理超时时间,堆积的请求先入线程池队列。这种方式要为每个依赖服务申请线程池,有一定的资源消耗,好处是可以应对突发流量(流量洪峰来临时,处理不完可将数据存储到线程池队里慢慢处理)
(2)信号量隔离模式:使用一个原子计数器(或信号量)记录当前有多少个线程在运行,请求来先判断计数器的数值,若超过设置的最大线程个数则丢弃该类型的新请求,若不超过则执行计数操作请求来计数器+1,请求返回计数器-1。这种方式是严格的控制线程且立即返回模式,无法应对突发流量(流量洪峰来临时,处理的线程超过数量,其他的请求会直接返回,不继续去请求依赖的服务)

在这里插入图片描述

降级机制:超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据。
在这里插入图片描述

熔断:当失败率达到阀值自动触发降级(如因网络故障/超时造成的失败率高),熔断器触发的快速失败会进行快速恢复。

正常情况下,断路器处于关闭状态(Closed),

如果调用持续出错或者超时,电路被打开进入熔断状态(Open),后续一段时间内的所有调用都会被拒绝(Fail Fast),

一段时间以后,保护器会尝试进入半熔断状态(Half-Open),允许少量请求进来尝试,

如果调用仍然失败,则回到熔断状态

如果调用成功,则回到电路闭合状态;

缓存:提供了请求缓存、请求合并实现。

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

1、 当满足一定的阀值的时候(默认10秒内超过20个请求次数)

2、 当失败率达到一定的时候(默认10秒内超过50%的请求失败)

3、 到达以上阀值,断路器将会开启

4、 当开启的时候,所有请求都不会进行转发

 

更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/120382507

 

标签:降级,调用,请求,Hystrix,Spring,信号量,断路器,线程,Cloud
From: https://www.cnblogs.com/wangchuanxinshi/p/16756033.html

相关文章

  • Spring Boot 快速图片上传封装
    importcom.alibaba.fastjson.JSONObject;importcom.retailo2o.server.domain.base.ResponseData;importio.swagger.annotations.Api;importorg.slf4j.Logger;impo......
  • Spring Cloud:第三章:Ribbon客服端负载均衡
    负载均衡是对系统的高可用、网络压力的缓解和处理能力扩容的重要手段。理解Ribbon对于我们使用SpringCloud来讲非常的重要。它是一个基于Http和TCP的客户端负载均衡工具。......
  • 记一次SpringBoot中跨域的小问题
    记一次SpringBoot中跨域的小问题问题前阵子,有个学长在跨域的时候遇到一个问题,我们两个人互相讨论了一番,得到了问题的答案。问题如下:如果按照上图的方式配置跨域类,那么......
  • SpringMVC笔记
    一、SpringMVC简介1、什么是MVCMVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称......
  • java框架——Spring(二)
    AOP简介AOP(AspectOrientedProgramming)面向切面编程,一种编程范式,指导开发者如何组织程序结构OOP(ObjectOrientedProgramming)面向对象编程作用:在不惊动原始设计的基......
  • Spring整合RabbitMQ
    ✨Spring整合RabbitMQ​​1.简单消息模式​​​​1.1生产者​​​​1.1.1创建生产者工程spring-rabbitmq-producer​​​​1.1.2引入依赖​​​​1.1.3属性配置文件​​......
  • Spring源码-循环依赖
    解决循环依赖的思路是将将创建bean分为实例化和初始化,实例化只是为类分配内存,类里面的属性全部都是默认值;初始化是为类的属性设置具体值。所以只能解决set方法注入的循环依......
  • 2022最新SpringMVC面试题附完整答案
    SpringMVC面试题一、单选题1.下列关于SpringMVC说法正确的是BA.SpringMVC和Spring没有关系B.SpringMVC是一个控制层框架,复制接收和处理请求C.SpringMVC可以脱离Spring单独......
  • 2022最新Spring面试题附完整答案
    Spring面试题一、单选题1.Spring是年发布的(B)A.2022B.2004C.2006D.20082.Spring中的对象的作用域不包括(B)A.sessionB.servletContextC.singletonD.proptotype3.在Spring......
  • Spring 项目启动测试的时候错误:Unable to acquire JDBC Connection
    我们在使用SpringJPA测试项目启动的时候,得到下面的错误:UnabletoacquireJDBCConnection  问题和解决出现这个问题的主要原因是我们在资源文件夹中还有一个......