Redis限流缓存治理领域建模与架构设计 - 第1节

1.1 为什么需要限流

在分布式系统中,限流(Rate Limiting)是保护服务稳定性的第一道防线。当请求量超过系统处理能力时,如果没有限流机制,服务可能因资源耗尽而雪崩。

核心驱动力

驱动因素 典型场景 后果
突发流量冲击 秒杀、热点事件、爬虫攻击 CPU 100%、连接池耗尽
资源有限性 数据库连接数、带宽、线程池 请求排队、超时堆积
公平性保障 多租户隔离、API 配额 恶意用户抢占资源
成本控制 第三方 API 调用计费 超额费用、被供应商封禁
关键认知:限流不是拒绝用户,而是有策略地保护。让系统在过载时仍能服务部分请求,避免完全不可用。

1.2 为什么需要缓存

缓存(Caching)是提升系统响应速度与吞吐量的核心手段。它将热点数据存储在高速存储层(如 Redis),减少对后端慢速存储(如数据库)的访问。

缓存带来的收益

  • 降低延迟:内存读取微秒级 vs 磁盘毫秒级,差距 1000 倍以上。
  • 减轻后端压力:缓存命中率 90% 时,数据库负载降低 90%。
  • 平滑峰值:缓存吸收突发读请求,防止数据库被打穿。
  • 节省成本:减少数据库实例扩容需求,降低硬件与运维开销。
实践要点:缓存不是银弹。缓存穿透、缓存击穿、缓存雪崩是三大经典问题,需要配合限流与降级策略共同解决。

1.3 限流与缓存的协同关系

限流与缓存并非独立存在,它们在请求处理链路中形成前后协同的关系。缓存负责加速正常请求,限流负责保护缓存和后端资源不被击穿。

限流与缓存协同关系图 用户请求 限流层 缓存层 后端服务/DB 缓存回写/更新 限流拒绝(429) 协同要点: 1. 限流前置:在进入缓存之前拦截过量请求,防止缓存被无效请求打满。 2. 缓存兜底:限流放行的请求优先走缓存,缓存未命中再回源后端。 3. 闭环反馈:缓存命中率下降时,限流阈值应动态调整,保护后端。

典型协同模式

  1. 缓存前置 + 限流前置:请求先过限流,再查缓存,最后回源 DB。适用于读多写少的场景。
  2. 缓存穿透防护:当缓存 miss 且回源成本高时,对回源操作进行限流,防止同一热点 key 击穿缓存。
  3. 写请求缓冲:限流控制写入速率,缓存异步批量写入 DB,避免写风暴。

1.4 闭环领域边界概念

“闭环领域边界”是本课程的核心架构思想。它指的是:限流与缓存不再是各自独立的中间件能力,而是在业务领域内形成自我感知、自我调节的闭环系统。

传统架构 vs 闭环领域边界架构

维度 传统架构 闭环领域边界架构
限流策略 静态配置,人工调整 动态自适应,基于实时指标
缓存策略 固定 TTL,统一过期 按领域热度差异化,智能淘汰
数据反馈 无反馈,限流与缓存独立 缓存命中率驱动限流阈值调整
故障处理 人工介入,重启或扩容 自动降级、熔断、恢复
领域边界 全局统一限流/缓存 按业务领域划分独立资源池
闭环领域边界架构示意 领域 A(订单) 限流器 缓存池 反馈 领域指标采集 动态策略调整 领域 B(商品) 限流器 缓存池 领域指标采集 动态策略调整 领域 C(用户) 限流器 缓存池 领域指标采集 动态策略调整

闭环领域边界的三大原则

  • 原则一:领域自治。每个业务领域拥有独立的限流阈值和缓存空间,互不干扰。订单领域的突发流量不会挤占商品领域的缓存资源。
  • 原则二:指标闭环。限流器与缓存池共享领域内的实时指标(如 QPS、命中率、平均延迟),策略调整基于数据而非经验。
  • 原则三:边界清晰。领域之间的限流与缓存策略通过明确的 API 契约交互,不产生隐式依赖。一个领域的降级不影响其他领域。
常见误区:很多团队将限流和缓存配置为全局统一参数,导致“一个业务出问题,全站受影响”。闭环领域边界要求按业务维度拆分,每个领域独立演进。

本章小结