Hystrix隔离
在应对服务雪崩效应时,除了前面介绍的降级,缓存,请求合并及熔断外还有一种方式就是隔离,隔离又分为线程池隔离和信号量隔离。接下来我们分别来介绍。
一、线程池隔离
1.概念介绍
我们通过以下几个图片来解释线程池隔离到底是怎么回事
在没有使用线程池隔离时
当接口A压力增大,接口C同时也会受到影响
使用线程池的场景
当服务接口A访问量增大时,因为接口C在不同的线程池中所以不会受到影响
通过上面的图片来看,线程池隔离的作用还是蛮明显的。但线程池隔离的使用也不是在任何场景下都适用的,线程池隔离的优缺点如下: 优点
- 使用线程池隔离可以完全隔离依赖的服务(例如图中的A,B,C服务),请求线程可以快速放回
- 当线程池出现问题时,线程池隔离是独立的不会影响其他服务和接口
- 当失败的服务再次变得可用时,线程池将清理并可立即恢复,而不需要一个长时间的恢复
- 独立的线程池提高了并发性
缺点 线程池隔离的主要缺点是它们增加计算开销(CPU).每个命令的执行涉及到排队,调度和上下文切换都是在一个单独的线程上运行的。
2.案例演示
2.1 创建项目
创建一个普通的SpringCloud项目。