首页 > 其他分享 >Spring Cloud全解析:熔断之Hystrix隔离策略

Spring Cloud全解析:熔断之Hystrix隔离策略

时间:2024-09-09 10:26:07浏览次数:13  
标签:隔离 Hystrix Spring 信号量 并发 protected 线程 Cloud

Hystrix隔离策略

Hystrix通过隔离限制依赖的并发量和阻塞扩散,Hystrix的隔离策略有两种:

  • 线程隔离(THREAD) 使用该策略,HystrixCommand将会在单独的线程上执行,并发请求受线程池中的线程数的限制,默认使用该策略,因为该策略有一个除网络超时外的额外保护层

    执行依赖调用的线程与请求线程(tomcat、jetty等服务器线程)分离,通过线程池的大小可以控制并发量,当线程池饱和时可以提前拒绝服务,防止依赖问题扩散

  • 信号量隔离(SEMAPHORE) 使用该策略,HystrixCommand将会在请求线程上执行,开销相对较小,并发请求收到信号量个数的限制,其一般仅适用于非网络调用的隔离,只有当调用负载非常高时(每秒调用几百上千次),才会使用信号量隔离,因为负载过高的情况下使用THREAD开销会比较大

线程隔离

线程隔离主要是指线程池隔离,把请求分类交给不同的线程池处理。当一种业务请求处理发生问题时,不会将故障扩散到其他线程池,从而保证其他服务可用

// 服务分组  配置全局唯一标识服务分组的名称,在进行监控时,相同分组的服务会聚合在一起
protected final HystrixCommandGroupKey groupKey;
// 服务标识,配置全局唯一标识服务的名称,默认是类名
protected HystrixCommandKey commandKey;
// 线程池名称,相同线程池名称的线程池是同一个,如果不配置,默认是分组名,此时一个group共用一个线程池
protected HystrixThreadPoolKey threadPoolKey;
// 命令属性配置
protected HystrixCommandProperties.Setter commandPropertiesDefaults;
// 线程池配置
protected HystrixThreadPoolProperties.Setter threadPoolPropertiesDefaults;


public TestCommand(){
        super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("testGroup"))
                .andCommandKey(HystrixCommandKey.Factory.asKey("command"))
                .andThreadPoolKey(HystrixThreadPoolKey.Factory.asKey("testGroupPool"))
                .andThreadPoolPropertiesDefaults(HystrixThreadPoolProperties.Setter().withCoreSize(10).withMaxQueueSize(10)));
    }

信号量隔离

信号量隔离限制总的并发数,服务使用主线程进行同步调用,没有线程池,如果只是想限制某个服务的总并发调用量可以使用信号量来实现

HystrixCommandProperties.Setter().withExecutionIsolationStrategy(
        HystrixCommandProperties.ExecutionIsolationStrategy.SEMAPHORE
).withExecutionIsolationSemaphoreMaxConcurrentRequests(200); // 限制200并发

https://zhhll.icu/2021/框架/微服务/springcloud/熔断/Hystrix断路器/5.Hystrix隔离策略/

标签:隔离,Hystrix,Spring,信号量,并发,protected,线程,Cloud
From: https://www.cnblogs.com/life-time/p/18404035

相关文章

  • (免费源码)计算机毕业设计必看必学 原创定制程序 java、PHP、python、小程序、文案全套
    springboot电影推荐网站摘 要随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的电影推荐网站;电影推荐网站的管理工作系统化、规范化,也会提高平台形象,提高管理效率。本电影推荐网站是针对目前电影推荐网站的实际需求,从......
  • SpringBoot异步任务获取HttpServletRequest
    在SpringBoot应用中,异步任务的实现通常通过 @Async注解来实现,它允许我们在后台线程中执行方法,从而提高了应用的性能和响应速度。然而,当我们在异步任务中需要访问 HttpServletRequest对象时,我们会遇到一些挑战,因为 HttpServletRequest是线程绑定的,而异步任务是在不同的线程......
  • Java毕设项目II基于Spring Boot的在线远程考试系统设计与实现
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言随着信息技术的飞速发展和教育模式的不断......
  • SpringBoot与整合其他技术
    1SpringBoot整合Mybatis1.1添加Mybatis的起步依赖<!--mybatis起步依赖--><dependency>  <groupId>org.mybatis.spring.boot</groupId>  <artifactId>mybatis-spring-boot-starter</artifactId>  <version>2.1.3</version>&......
  • 基于SpringBoot的离退休干部综合服务平台的设计与实现
    系统的实现应具备如下功能点:用户:注册与登录:允许离退休干部注册账户并登录,提供用户友好的界面和服务。信息发布:用户可以查看发布与离退休干部相关的各类信息,如政策通知、养生知识、活动通告等。互动交流:提供社交平台,使离退休干部能够分享经验、交流思想、进行讨论。健康资......
  • 基于Node.js+vue基于springboot的茶文化交流平台的设计与实现(开题+程序+论文) 计算机
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在全球化日益加深的今天,文化的传承与交流显得尤为重要。茶文化作为中国传统文化的瑰宝,不仅承载着深厚的历史底蕴,还蕴含着丰富的哲学思想和审美追求。然而,随......
  • SpringMVC入门概念
    SpringMVC是目前主流的实现MVC设计模式的框架,是Spring框架的一个分支产品,以Springloc容器为基础,并利用容器的特性来简化它的配置。什么意思呢?其实就是springmvc里需要用到各种各样的组件,然后这些组件它其实就是对象,那这些对象怎么去使用呢?就交给IOC容器来管理。也就是说......
  • 【开源免费】基于SpringBoot+Vue.JS房屋租赁系统(JAVA毕业设计)
    本文项目编号T020,文末自助获取源码\color{red}{T020,文末自助获取源码}......
  • 计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解
    ......
  • 基于Node.js+vue基于springboot大学生兼职平台(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在当今社会,随着高等教育的普及和就业市场的竞争加剧,越来越多的大学生选择在校期间参与兼职工作,以积累经验、提升技能并缓解经济压力。然而,传统的兼职信息获......