博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hystrix的隔离策略
阅读量:5845 次
发布时间:2019-06-18

本文共 825 字,大约阅读时间需要 2 分钟。

hot3.png

  • 前言

Hystrix是Spring Cloud中的一项重要的技术,是cloud服务调用过程中进行熔断必不可少的一步。

Hystrix目前是有两种隔离策略,分别是线程池隔离和信号量隔离。

  • 隔离策略
  1. 线程池隔离

如其名,他的隔离是通过线程池来做到的,也就是说他的隔离粒度是线程池。一个请求进来都经过一个线程池。

当前端发起请求过来到服务A或者B之后,服务A和服务B是通过线程池隔离的。服务A是否熔断,是否正常都和服务B无关。

他其实是一个异步编程,用线程池将后面的服务包裹了起来,至于服务内部tomcate的线程运行怎么样是无关的。他适合于绝大多数的场景,对于一些超时的场景都非常好用。但是既然是通过线程池来操作的,不可避免的就是线程之间的计算开销,以及线程上下文的切换,调度消耗。

  1. 信号量隔离

如其名,他的隔离是通过信号量来做到的。他其实是一个计数器。一个请求进来就会减少一个信号,一个请求完成就会增加一个信号。

信号量的调用时同步的,也就是说他会阻塞直到请求回来。所以他自身是不能实现超时的,因此这里的超时只能依靠协议的超时来做,否则是无法释放的(比如socket超时等等)。所以当此服务不对外部服务依赖同时自身没有大量的计算或者说经过这个服务的时间比较短,则非常适合信号量,比如说spring cloud的zuul的gateway网关。

  • 策略区别

线程池隔离:

1.和调用线程不是同一个线程,因此支持异步2.线程上下文需要切换,调度的消耗3.最大并发量取决于线程池大小4.适合有计算,会有耗时操作的服务5.保护tomcate线程,不至于tomcate一直阻塞,一旦不对,立马失败或者超时返回

信号量隔离:

1.和调用线程是同一个线程,因此只能同步2.无线程切换,开销低,因此可快速进行反应3.最大并发量取决于信号量大小4.适合低计算,快速通信的服务

转载于:https://my.oschina.net/u/3095034/blog/3012694

你可能感兴趣的文章
PCM数据格式,多少字节算一帧
查看>>
高并发大流量专题---1、高并发大流量解决方案总结
查看>>
【转】Java集合间的相互转换
查看>>
python获取当前路径的方法
查看>>
利用pil库处理图像
查看>>
kbengine mmo源码(完整服务端源码+资源+完整客户端源码)
查看>>
java锁
查看>>
Spring Data JPA
查看>>
按比例缩小图片的CSS代码
查看>>
uva 10099 The Tourist Guide
查看>>
置换元素和非置换元素
查看>>
Selenium中的xpath定位
查看>>
思索问题
查看>>
gvim 启动 全屏
查看>>
struts2基础
查看>>
KACK的处理方法
查看>>
实验四------实验十二
查看>>
一个CSS上中下三行三列结构的Div布局
查看>>
SqlDataAdapter的增加,删除,修改
查看>>
开启、关闭数据库mysql
查看>>