ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 1.FeignClient整合Sentinel 限流是一种预防措施,虽然限流可以尽量避免因高并发而引起的服务故障,但服务还会因为其它原因而故障。 而要将这些故障控制在一定范围,避免雪崩,就要靠**线程隔离**(舱壁模式)和**熔断降级**手段了。 * **线程隔离**:调用者在调用服务提供者时,给每个调用的请求分配独立线程池,出现故障时,最多消耗这个线程池内资源,避免把调用者的所有资源耗尽。 ![](https://img.kancloud.cn/e3/e9/e3e90d014511a262f109bbf7783292f0_786x438.png) * **熔断降级**:是在调用方这边加入断路器,统计对服务提供者的调用,如果调用的失败比例过高,则熔断该业务,不允许访问该服务的提供者了。 ![](https://img.kancloud.cn/40/53/4053044f0a3fd3c8c282f6f0109e6df9_629x450.png) # 2.线程隔离(舱壁模式) # 3.熔断降级 熔断降级是解决雪崩问题的重要手段。其思路是由**断路器**统计服务调用的异常比例、慢请求比例, 如果超出阈值则会**熔断**该服务。即拦截访问该服务的一切请求;而当服务恢复时,断路器会放行访 问该服务的请求。 断路器控制熔断和放行是通过状态机来完成的: ![](https://img.kancloud.cn/40/29/4029ef0c80c721db4259a4fa8ed40ffb_1128x359.png) 状态机包括三个状态: * closed:关闭状态,断路器放行所有请求,并开始统计异常比例、慢请求比例。超过阈值则切换到open状态 * open:打开状态,服务调用被熔断,访问被熔断服务的请求会被拒绝,快速失败,直接走降级逻辑。Open状态5秒后会进入half-open状态 * half-open:半开状态,放行一次请求,根据执行结果来判断接下来的操作。 请求成功:则切换到closed状态 请求失败:则切换到open状态 断路器熔断策略有三种:慢调用、异常比例、异常数