
微服务系统最怕的不是一个服务失败而是一个服务失败后调用方一直等待、重试、堆积线程最后把整条链路拖垮。这就是服务雪崩。一句话概括服务雪崩是故障沿调用链扩散服务降级是给用户一个兜底结果服务熔断是当失败达到阈值后暂时不再调用故障服务直接快速失败或走降级。正常超时或异常否是服务 A 调用服务 B服务 B 是否正常返回真实业务结果调用失败累积失败率是否超过阈值继续尝试调用打开熔断器快速失败或执行降级逻辑保护调用方线程资源什么是服务雪崩服务雪崩是指一个服务失败导致整条链路上的服务都失败。典型场景服务 D 响应变慢或不可用。服务 C 调用 D 时大量等待。服务 C 的线程池被占满。服务 B 调用 C 也开始超时。服务 A 调用 B 继续堆积。整条链路不可用。所以雪崩的本质不是“某个服务挂了”而是故障没有被隔离资源被持续拖住。服务降级是什么服务降级是兜底策略。比如用户访问文章保存接口下游服务异常时不一定要让请求一直卡住可以返回一个可接受的提示您的网络有问题请稍后再试。或者在一些非核心场景中返回默认值、空结果、缓存结果。降级的目标不是修复下游而是保护当前服务和用户体验。常见降级场景下游服务超时。下游服务异常。当前服务压力过大。非核心功能临时关闭。服务熔断是什么熔断器可以理解成电路里的保险丝。下游持续失败时熔断器打开后续请求不再真正调用下游而是直接快速失败或走降级。是否是成功失败Closed正常调用失败率超过阈值Open打开熔断器请求快速失败走降级熔断时间结束Half-Open放行少量请求试探请求成功课程中提到的 Hystrix 规则是默认需要手动开启熔断。10 秒内请求失败率超过 50%触发熔断。熔断后快速失败。每隔 5 秒尝试放行一次请求。如果下游恢复就关闭熔断器。如果下游仍不可用继续熔断。降级和熔断有什么区别对比点服务降级服务熔断关注点返回兜底结果暂停调用故障服务触发原因异常、超时、限流、压力过大失败率达到阈值目标保护用户体验和当前服务隔离下游故障结果fallback 逻辑快速失败或 fallback降级是结果策略熔断是保护机制。实际项目里二者常常配合使用。限流、降级、熔断的边界限流、降级、熔断经常一起出现但它们不是一回事。手段发生位置解决什么问题典型例子限流请求入口请求太多系统扛不住每秒只允许 1000 个请求进入降级调用失败或压力过大时给用户一个兜底结果返回默认数据、缓存数据、友好提示熔断远程调用链路中下游持续失败避免拖垮上游失败率超过阈值后不再调用下游是否是否请求进入系统流量是否超过阈值限流拒绝部分请求调用下游服务下游是否持续失败熔断暂停真实调用降级返回兜底结果正常返回可以这样记限流挡在入口熔断挡在调用链降级负责兜底返回。面试回答模板可以这样答服务雪崩是一个服务失败后导致整条调用链上的服务都失败。比如下游服务超时调用方线程一直阻塞线程池被占满后上游服务也会被拖垮。解决方式主要有降级、熔断和限流。服务降级是下游不可用时返回兜底结果保护用户体验服务熔断是监控调用失败率当失败率达到阈值后打开熔断器后续请求不再真正调用下游而是快速失败或走降级过一段时间再进入半开状态试探恢复。小结服务保护这块可以按这条线记雪崩是故障扩散降级是兜底返回熔断是暂停调用限流是入口预防。这几个词看起来像一锅粥按“故障发生前、发生中、发生后”拆开就清楚多了。