当系统资源有限时,必须通过隔离与分级限流保证核心业务稳定运行。
1. 资源隔离的目标
- 防止非核心任务占用关键资源。
- 实现“部分故障不影响全局”。
- 提升系统弹性。
2. 隔离方式
-
线程池隔离
- 不同业务模块使用独立线程池。
- 核心服务优先级高。
- Hystrix、Sentinel均支持该机制。
-
连接池隔离
- 数据源、外部API调用使用独立连接池。
- 避免一个服务占满连接导致其他服务超时。
-
进程/容器隔离
- 利用Kubernetes或Docker限制CPU与内存。
- 防止单实例资源异常拖垮整机。
3. 分级限流策略
- 全局限流:系统总QPS上限控制。
- 接口级限流:单接口独立阈值。
- 用户级限流:防止恶意请求。
- 优先级限流:根据业务等级动态分配资源。
4. 实践方案
- Sentinel支持实时动态限流与熔断。
- 使用令牌桶算法控制突发流量。
- 为每个限流规则设置监控指标与报警阈值。
5. 工程经验
- 核心链路(下单、支付)必须有独立资源池。
- 调度任务、报表类业务设置低优先级。
- 在限流被触发时返回清晰错误码,避免误判系统异常。
结论:隔离是系统的安全带,限流是系统的安全阀。分级治理,让系统在过载时“优雅拒绝”而非“全面崩溃”。