Web 应用容错的目标是:依赖出问题时系统部分受损而非整体瘫痪,并能自动恢复。手段按层次组合:
- 冗余与故障转移:多实例 + 负载均衡健康检查,自动摘除坏节点;多可用区部署。
- 超时与有限重试:所有外部调用设超时;重试带指数退避与抖动,只对幂等操作重试,防止放大故障。
- 熔断器:失败率超阈值后快速失败一段时间,给下游喘息机会,防止线程池耗尽(如 Resilience4j)。
- 降级与兜底:非核心功能可关闭或返回缓存/默认值——推荐流挂了返回热门榜单,而不是整页 500。
- 舱壁隔离:线程池、连接池按依赖隔离,一个慢依赖不拖垮全局;限流保护自身容量。
- 队列缓冲与最终一致:可异步的操作入队,削峰并在下游恢复后重放;关键业务做对账与补偿。
- 优雅处理用户面:友好错误页、客户端重试与离线缓存。
易错点:默认值兜底要警惕返回陈旧或误导性数据;所有容错策略要一起压测/演练(如故障注入),只在纸上存在的熔断不算数。