512 | 限流与熔断:保护系统的"安全阀"
场景引入
医院的"安全阀":
医院挂号:
- 正常情况:随便挂号
- 高峰期:排队叫号
- 爆满:限流(“今天号已满,明天再来”)
这防止了:
- 医生累死
- 系统崩溃
- 等待时间爆炸
限流就是系统的"挂号限流"。
限流算法
1. 固定窗口
时间窗口:1分钟 限流阈值:100次 00:00 - 00:59:统计请求数 如果 > 100,拒绝 问题:临界点可能有两倍流量 00:59 来了100个 01:00 来了100个 瞬间200个请求2. 滑动窗口
# 滑动窗口算法classSlidingWindowRateLimiter:<