限流保护的是入口流量,熔断保护的是故障扩散。Gateway 为业务路由统一挂上 CircuitBreaker,下游异常比例或慢请求比例过高时,后续请求会快速失败。
一、两类熔断条件
项目同时配置:
异常比例:异常请求数 / 总请求数
慢请求比例:超过 RT 阈值的请求比例
二者都可以设置最小请求数、统计窗口和恢复时间。最小请求数能避免服务刚启动时因少量样本误熔断。
二、默认规则挂到路由
过滤器的资源名使用:
{routeId}-circuit
不同路由拥有独立熔断器,Provider 故障不应该导致 Mail 请求也一起失败。
三、统一 fallback 接口
熔断后转发到:
/gateway/fallback/{route}
该接口返回 HTTP 503 和统一 JSON,提示下游服务暂不可用。
四、快速失败也是一种保护
没有熔断时,一个下游变慢会占住网关和调用方的并发资源,进而拖垮其他健康服务。熔断把等待变成可预期的快速失败,给下游恢复留时间。
五、经验总结
熔断阈值不能拍脑袋定得太敏感。它应该是容量测试和真实错误率观测之后的结果。