前言:

hystrix中,其实最核心的一个功能就是资源隔离,就是将多个依赖服务的调用分别隔离到各个资源的内部,避免因为依赖服务的失败或者延迟,导致服务所有的线程资源花费在这个伤害,继而导致服务崩塌。

线程池隔离和信号量隔离

hystrix中主要有两种资源隔离的技术:线程池隔离和信号量隔离。
使用场景:
线程池隔离技术:大部分的场景下其实都适合用这种技术,对于依赖服务的调用以及访问;能解决场景的timeout的场景,可以避免调用线程阻塞住。
信号量隔离技术:
通常是针对超大并发量的场景,每个服务实例的QPS都非常高,如果用线程池,可能撑不住那么高的并发,如果要撑住,可能要耗费大量的线程资源,那么就是用信号量,来进行限流保护。
也就是说适合你的访问不依赖于外部服务,而只是访问内部的一些复杂的业务逻辑,由于他是内部访问,不存在timeout的问题,适合比较复杂逻辑的业务代码,防止大量的线程被这些逻辑给卡死,影响系统的稳定性。

区别:
线程池隔离技术,不是去控制web容器的线程,而是使用了线程池隔离技术,控制的是web容器中线程的执行,而非web容器本身的线程。

和信号量隔离有什么区别呢?比如说是一个容量为20的线程池和信号量个数,线程池其实是用自己的线程去调用web容器,而信号量隔离是直接让web容器的线程直接去调用依赖服务;前者会抛出异常,web容器的执行线程中可以捕获到,然后做进一步的处理。 而后者是直接返回。

资源隔离的相关概念

对于每一个command来说,其实都可以设置自己的名称,并且设置自己的分组command group。

command group:非常重要的概念,默认情况下,就是通过command group来定义一个线程池的,而且还会通过command group来聚合一些监控和报警信息;同一个command group中的请求,都会进入同一个线程池中。

command线程池
threadpool key代表了一个HystrixThreadPool,用来进行统一监控,统计,缓存;默认的threadpool key就是command group名称;每个command都会跟它的threadpool key对应的threadpool绑定在一起,如果不想直接用command group,也可手动设置threadpool name。

command threadpool VS command group VS command key
command key:代表了一类command,一般来说,抽象成底层的依赖服务的其中一个接口.

command group:代表了某一个底层的依赖服务,一个依赖服务可能会暴露出来多个接口,每个接口就是一个command key;在逻辑上去组织起来一堆command key的调用,统计信息,成功次数,timeout超时次数,失败次数,可以看到某一个服务整体的一些访问情况

command threadpool :一般来说,推荐是根据一个服务去划分出一个线程池,command key默认都是属于同一个线程池的.

一般来说,command group是对应一个服务,多个command key对应该服务的多个接口,多个接口的调用共享同一个线程池;如下图:

当然如果说commandkey 需要用自己的线程池,也是可以自行定义。

coreSize

设置线程池的大小,默认是10

queueSizeRejectionThreshold
控制queue满后reject的容量,maxQueueSize不允许热修改,因此提供这个参数可以热修改,控制队列的最大大小;HystrixCommand在提交到线程池之前,其实会先进入一个队列中,这个队列满了之后,才会reject。这个机制其实跟之前的说的线程池的工作原理非常的相近。

execution.isolation.semaphore.maxConcurrentRequests:
设置使用SEMAPHORE隔离策略的时候,允许访问的最大并发量,超过这个最大并发量,请求直接被reject

hystrix实战--资源隔离技术简介相关推荐

  1. 阿里大规模业务混部下的全链路资源隔离技术演进

    作者:钱君.南异 审核&校对:溪洋.海珠 编辑&排版:雯燕 混部顾名思义,就是将不同类型的业务在同一台机器上混合部署起来,让它们共享机器上的 CPU.内存.IO 等资源,目的就是最大限 ...

  2. 混部之殇-论云原生资源隔离技术之CPU隔离

    导语 混部,通常指在离线混部(也有离在线混部之说),意指通过将在线业务(通常为延迟敏感型高优先级任务)和离线任务(通常为 CPU 消耗型低优先级任务)同时混合部署在同一个节点上,以期提升节点的资源利用 ...

  3. Yarn上资源隔离技术的剖析-内存资源隔离源码解析

    概述 YARN框架作为一个资源管理系统,其最重要和最基础的两个功能是资源调度和资源隔离: 资源调度:由resourcemanager完成,在resourcemanager的组件及资源调度已有介绍: 资 ...

  4. Hystrix面试 - 基于 Hystrix 线程池技术实现资源隔离

    Hystrix面试 - 基于 Hystrix 线程池技术实现资源隔离 上一讲提到,如果从 Nginx 开始,缓存都失效了,Nginx 会直接通过缓存服务调用商品服务获取最新商品数据(我们基于电商项目做 ...

  5. 亿级流量电商详情页系统实战-38.hystrix与高可用系统架构:资源隔离+限流+熔断+降级+运维监控

    1.前言 前半部分,专注在高并发这一块,缓存架构,承载高并发,在各种高并发导致的令人崩溃/异常的场景下,运行着缓存架构,高可用性,在各种系统的各个地方有乱七八糟的异常和故障的情况下,整套缓存系统还能继 ...

  6. Hystrix面试 - 基于 Hystrix 信号量机制实现资源隔离

    Hystrix面试 - 基于 Hystrix 信号量机制实现资源隔离 Hystrix 里面核心的一项功能,其实就是所谓的资源隔离,要解决的最最核心的问题,就是将多个依赖服务的调用分别隔离到各自的资源池 ...

  7. Linux 操作系统原理 — Namespace 资源隔离

    目录 文章目录 目录 Linux Namespace UTS namespace PID namespace IPC namespace Mount namespace Network namespa ...

  8. Hadoop - YARN NodeManager 剖析、NodeManger内部架构、分布式缓存、目录结构、状态机管理、Container 生命周期剖、资源隔离

    一 概述 NodeManager是运行在单个节点上的代理 ,它管理Hadoop集群中单个计算节点,功能包括与ResourceManager保持通信,管理Container的生命周期.监控每个Conta ...

  9. 互联网高并发之Hystrix实现服务隔离和降级

    当大多数人在使用Tomcat时,多个HTTP服务会共享一个线程池,假设其中一个HTTP服务访问的数据库响应非常慢,这将造成服务响应时间延迟增加,大多数线程阻塞等待数据响应返回,导致整个Tomcat线程 ...

  10. 资源管理与调度系统-YARN资源隔离及以YARN为核心的生态系统

    资源管理与调度系统-YARN资源隔离及以YARN为核心的生态系统 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是资源隔离 资源隔离是指为不同任务提供可独立使用的计算资源以 ...

最新文章

  1. http://www.cnblogs.com/amboyna/archive/2008/03/08/1096024.html
  2. 居住7年未交一分钱天然气使用费 女房主替租户偿还近4万元欠款
  3. 程序不能使用中文名_这几款车没有中文名?那买车时应该怎么叫?
  4. ADSL之PPPOE
  5. python turtle画彩虹的代码_如何用python海龟库画彩虹
  6. how to learn html5,HTML5与CSS基础
  7. c语言贪吃蛇黑方框,[求助][贪吃蛇]源程序,请教其中一个问题。
  8. CentOS7网络快速解决
  9. 35. systemtap
  10. libgsm.a relocation R_X86_64_PC32 can not be used when making a shared object; recompile with -fPIC
  11. unity3D跑酷游戏源码,支持安卓+IOS双端 unity2019 C#语言开发
  12. an怎么做淡入_切换场景的淡入淡出效果
  13. Centos6-防火墙的基本配置
  14. 自媒体平台有哪些---(特点及优缺点)
  15. 一文理顺离散信号的傅里叶变换
  16. 互联网 B C端产品对比分析
  17. linux原子过程,linux系统编程:IO读写过程的原子性操作实验
  18. 数据库decimal对应java什么类型_数据库字段类型和Java的对应关系
  19. errno、stderr、perror函数和strerror函数
  20. OpenGL(12)GL库API

热门文章

  1. vue项目——商品详情页面图片放大镜效果实现(完成)
  2. android 没有menu菜单键,android之onCreateOptionsMenu失效,按菜单键无反应
  3. 电脑重装系统后被格式化了怎么恢复之前的数据?
  4. SLE12 Server 在线安装MySQL Server
  5. matlab 非圆齿轮,非圆齿轮参数化设计关键技术研究
  6. Python案例实操3-电影数据分析
  7. [BZOJ3162]独钓寒江雪
  8. 【寒江雪】Go实现单例模式
  9. 联想y7000 Linux显卡驱动,联想Y7000安装显卡驱动
  10. NLP中的主题模型理解