系统限流是一种控制网络服务访问速率的技术,通过限制单位时间内允许的请求数量或频率,防止系统因过载而崩溃或性能下降。其核心目的是在资源有限的情况下,保障核心服务的稳定性和可用性。
一、限流的核心概念
请求控制 限流通过设定阈值,控制进入系统的并发请求数量或请求频率。例如,每秒最多允许100个请求,超过则需排队或降级处理。
核心作用
- 防止系统过载:避免因突发流量导致资源耗尽;
- 保障核心服务:通过降级策略(如返回缓存数据)确保关键功能可用;
- 提升系统稳定性:通过流量削峰填谷维持服务响应能力。
二、限流的应用场景
典型场景
- 秒杀/高并发场景: 如电商促销时限制每个账号的购买频率; - API接口保护
- 服务降级:在部分服务不可用时,通过限流保障核心服务运行。
扩展场景 - 动态调整:
根据系统负载实时调整限流策略;
- 多维度控制:结合用户IP、设备类型等维度实施精细化限流。
三、限流策略与算法
常见算法 - 计数器限流:
设定时间窗口(如1分钟)和最大请求数(如100次),超过则拒绝新请求;
- 滑动窗口限流:将时间窗口划分为多个子窗口,动态调整窗口内请求数量;
- 漏桶算法:以固定速率向系统输入请求,超过容量则排队等待;
- 令牌桶算法:系统以固定速率生成令牌,请求需消耗令牌才能处理。
适用场景对比 | 算法类型 | 适用场景 | 优势 | 缺点 |
|----------------|-----------------------------------|-------------------------------|-------------------------------|
| 计数器 | 固定速率场景(如Web服务器) | 实现简单 | 无法应对突发流量 |
| 滑动窗口 | 需精确控制时间窗口的场景 | 更灵活的时间控制| 配置复杂度较高 |
| 漏桶/令牌桶 | 需平滑请求流量的场景 | 可预测吞吐量 | 需额外维护状态变量 |
四、限流与系统稳定性
核心指标:
QPS(每秒请求数)、TPS(每秒事务数)、系统资源利用率(如CPU、内存);
风险提示:请求超时、连接重置、服务降级等;
优化建议:结合业务场景选择合适算法,动态调整阈值,避免“限流雪崩”。
通过以上机制,限流技术成为现代分布式系统不可或缺的组成部分,确保系统在海量请求下仍能保持高效稳定运行。