企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## Hystrix Hystrix是Netflix开元的一个延迟和容错库,用于隔离访问远程服务,第三方库,防止出现级联失败. ## 雪崩问题 微服务中,服务间调用关系错综复杂,一个请求,可能需要调用三个微服务接口才能实现,会形成非常复杂的调用链路. 当某个服务出现异常,就会造成请求阻塞,用户不会得到相应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞.最后把Tomcat可用连接全都占满了.服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其他服务都不可用,形成雪崩效应. **当一切正常时,请求看起来是这样的:** ![](https://box.kancloud.cn/85b53ad6e2f359debd2c0e57471fcb80_640x582.png) **当其中有一个系统有延迟时,它可能阻塞整个用户请求:** ![](https://box.kancloud.cn/75429ec09f5822586995727110c27e5d_640x582.png) **在高流量的情况下,一个后端依赖项的延迟可能导致所有服务器上的所有资源在数秒内饱和(PS:意味着后续再有请求将无法立即提供服务)** ![](https://box.kancloud.cn/c028d74bd30eced0359507d5be5a7c1c_640x583.png) ## Hystrix解决雪崩问题手段有两个 1. 线程隔离. 2. 服务熔断. ## 解读 Hystrix为每个依赖服务调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间. 用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超时,则会进行降级处理,什么是服务降级? **服务降级:优先保证核心服务,而非核心服务不可用或弱可用** 用户的请求故障时,不会被阻塞,更不会无休止的等待或者看到系统崩溃,至少可以看到一个执行结果(例如返回友好的提示信息)