容错模式
设计「坏了怎么办」,而不是假设「不会坏」。
容错模式是针对特定故障类型的防护手段:超时防止无限等待、重试处理瞬时故障、熔断器防止故障传播、限流防止过载、降级保证核心功能、隔离防止资源耗尽。理解每种模式的原理和使用场景,是设计高可用架构的核心能力。
模块结构
本模块分为三个部分:
基础模式
防护模式
组合与最佳实践
核心演进路径
容错模式组合示例
选型决策树
准备好开始了吗?从容错模式概述开始。
设计「坏了怎么办」,而不是假设「不会坏」。
容错模式是针对特定故障类型的防护手段:超时防止无限等待、重试处理瞬时故障、熔断器防止故障传播、限流防止过载、降级保证核心功能、隔离防止资源耗尽。理解每种模式的原理和使用场景,是设计高可用架构的核心能力。
本模块分为三个部分:
| 文章 | 核心问题 |
|---|---|
| 熔断器 | 防止故障传播 |
| 熔断器状态机 | 状态转换原理 |
| Resilience4j 实战 | Java 生态最佳实践 |
| 限流概述 | 限流的原理与场景 |
| 令牌桶 | 支持突发的限流算法 |
| 漏桶 | 平滑输出的限流算法 |
| 滑动窗口 | 精确的限流算法 |
| 分布式限流 | Redis + Lua 实现 |
| Sentinel 实战 | 阿里限流降级方案 |
| 降级模式 | 保证核心功能可用 |
| 降级策略 | 不同场景的降级策略 |
| 舱壁隔离 | 防止资源耗尽 |
| 舱壁类型 | 线程池 vs 信号量 |
| 舱壁实现 | 完整实现代码 |
flowchart LR
A["超时\n基础防护"] --> B["重试\n处理瞬时故障"]
B --> C["熔断器\n防止传播"]
C --> D["限流\n防止过载"]
D --> E["降级\n保证核心"]
E --> F["隔离\n限制资源"]请求入口
↓
限流(防止过载)
↓
超时(防止无限等待)
↓
重试(处理瞬时故障)
↓
熔断器(防止故障传播)
↓
舱壁隔离(限制资源消耗)
↓
降级(返回兜底数据)flowchart TD
A["需要哪种容错?"] --> B{"是瞬时故障吗?"}
B -->|"是| C["重试 + 退避"]
B -->|"否| D{"需要防止故障传播?"}
D -->|"是| E["熔断器"]
D -->|"否| F{"需要防止过载?"}
F -->|"是| G["限流"]
F -->|"否| H{"需要保证核心功能?"}
H -->|"是| I["降级"]准备好开始了吗?从容错模式概述开始。