月度归档:2026年7月 (56)
收官:稳定性体系全景图
二十篇走到收官。从一次爆单雪崩出发,装了限流、熔断、降级、隔离、超时五道闸,配了重试纪律、自适应、全链路压测三套方法论,最后归拢成一张全景图:流量进来怎么挡、故障起来怎么断、用户侧怎么保、事后怎么复盘。稳定性没有银弹,只有纵深。
事故集锦:十个真实故障复盘
十个真实事故对应本系列的十件武器:没设超时的等待、恢复瞬间的重试、共用的线程池、混部的报表、低峰误跳闸、反复横跳的半开、陈年缓存兜底、挂掉的降级开关、打爆分片的热 key,以及一次因演练过而毫发无损的故障。看别人的事故,长自己的记性。
全链路压测:洪水来之前先演一遍
保护机制装了一堆,能不能扛住大促,只有洪水自己知道。全链路压测把真实流量按比例回放进生产环境,压出容量上限、压出最先垮的层、压出没演练过的预案——但流量标记、影子表、安全红线,一个都省不得。
自适应保护:让系统自己拿主意
静态阈值是一张拍出来的考卷——流量涨了偏紧,扩容了偏松。自适应保护让系统按实时指标自己调阈值:TCP BBR 的测量思想、gRPC 的重试预算、Sentinel 的系统自适应规则,是同一个心法——不猜测容量,直接测量容量,用刚测得的数字约束现在的流量。
重试风暴:好心如何办坏事
下游恢复的瞬间最危险:积压请求、层层重试、用户刷新全在门口排队,门一开洪水同时灌进来。重试是善良,无节制的重试是 DDoS——三重放大会把 10 倍流量打成上百倍。指数退避、随机抖动、重试预算、熔断联动,纪律一个都不能少。
超时治理:全链路的时间预算
没有超时的调用是最危险的等待,但超时不是随手填一个 3000ms——上游超时要大于下游耗时加余量,层层倒挂的超时等于没设,重试还得从预算里扣。超时是全链路的时间账本,要像做账一样对齐。
资源隔离:舱壁模式
把所有依赖塞进同一个线程池,等于让全船人共用一堵舱壁——一处漏水全船沉。舱壁模式把资源切成隔舱:每个下游一个线程池或信号量配额,谁的依赖病了,淹的只有它自己的舱。隔离的本质,是把故障的爆炸半径限制在你愿意承受的范围内。
服务降级:有损服务的艺术
熔断挡住了伤害的蔓延,但跳闸之后用户总得看到点什么——返回缓存、给默认值、砍功能、上兜底。降级的核心不是「做得更好」,而是明确放弃什么:谁先下桌、怎么下、何时回来。有损服务是门艺术,预案要在晴天写好。
Sentinel 实战:注解一贴,熔断上线
手写熔断器搞懂了原理,生产要的是注解一贴就能用、规则不发版就能改、监控不用自己搭——Sentinel 用 @SentinelResource 一个注解接住拒绝与异常,用一条 DegradeRule 把上篇的参数表翻译成配置,再用控制台把跳闸变成看得见的事。轻量派 Resilience4j 是另一个答案。