1. 课程导论:为什么需要限流?为什么需要缓存一致性?

在构建高并发、高可用的后端系统时,限流与缓存一致性是两道绕不开的核心关卡。前者保障系统在流量洪峰下的生存能力,后者确保数据在高速读写下的正确性。本课程将围绕 Redis 这一中间件,系统性地解决这两个问题,并最终构建一个“限流+缓存闭环一致性”的实战体系。

1.1 为什么需要限流?

任何系统的处理能力都有物理上限。当请求量超过系统阈值时,如果不加干预,会导致资源耗尽、服务雪崩,甚至整个集群宕机。限流的核心价值在于:主动拒绝超载请求,保护系统核心可用性。

场景 无限流后果 限流后效果
秒杀/抢购 数据库连接池打满,订单写入失败 只放行 N 个请求,其余快速失败
热点新闻推送 下游微服务响应超时,链路级联崩溃 平滑削峰,保证核心链路稳定
API 网关 带宽耗尽,正常用户也无法访问 按用户/接口维度公平限流
核心观点:限流不是“限制业务”,而是“用可控的拒绝换取整体的可用”。Redis 基于内存的原子计数和 Lua 脚本能力,是实现高性能分布式限流的首选方案。

1.2 为什么需要缓存一致性?

缓存是提升读性能的利器,但引入缓存后,数据在缓存层与数据库层之间可能产生不一致。典型的缓存一致性问题包括:

  • 缓存穿透:查询不存在的数据,每次穿透到数据库。
  • 缓存击穿:热点 key 过期,大量请求同时击穿到数据库。
  • 缓存雪崩:大量 key 同时过期,数据库压力瞬间飙升。
  • 更新不一致:写数据库成功但删缓存失败,导致读到旧数据。

在金融、电商、社交等对数据一致性要求严格的场景中,缓存不一致轻则导致页面展示错误,重则引发资损或资损纠纷。因此,必须建立一套缓存一致性保障机制,在性能与正确性之间取得平衡。

1.3 限流与缓存一致性的内在关联

限流与缓存一致性并非孤立话题。在高并发写入场景下,限流可以降低缓存更新的并发冲突概率;而缓存一致性策略(如延迟双删、异步补偿)又需要限流来防止补偿任务堆积。两者共同构成了高并发系统的“左膀右臂”。

课程视角:本课程将 Redis 作为核心工具,既用它实现分布式限流(计数器、令牌桶、滑动窗口),又用它管理缓存一致性(缓存旁路、读写穿透、异步对账)。最终将两者融合为一个闭环方案。

1.4 课程整体架构与学习路径

本课程共 30 章,分为四大模块,循序渐进地构建完整知识体系:

模块 章节范围 核心内容
基础篇 第 1-5 章 限流与缓存一致性的理论基础、Redis 核心数据结构选型
限流实战篇 第 6-14 章 计数器、令牌桶、滑动窗口、分布式限流、Lua 脚本优化
缓存一致性篇 第 15-24 章 缓存旁路、延迟双删、读写穿透、异步对账、最终一致性方案
融合与进阶篇 第 25-30 章 限流+缓存闭环架构设计、生产压测、监控告警、源码级调优

学习路径建议:基础篇 → 限流实战篇 → 缓存一致性篇 → 融合与进阶篇。每章均配有可运行的代码示例、架构图与避坑指南。

前置要求:需要具备 Java/Go 基础编程能力,了解 Redis 基本命令(SET/GET/EXPIRE),熟悉 MySQL 基本操作。无需分布式系统经验,课程会从零搭建。

1.5 课程核心架构总览

下图展示了本课程最终要构建的“限流+缓存闭环一致性”系统架构。红色虚线框为限流层,蓝色虚线框为缓存一致性层,两者通过 Redis 和异步对账通道协同工作。

限流+缓存闭环一致性架构总览 限流 + 缓存闭环一致性架构总览 客户端 限流层 计数器 / 令牌桶 / 滑动窗口 业务服务 缓存一致性层 延迟双删 / 异步对账 Redis MySQL 说明: 限流层在入口处拦截超载请求,保护业务服务与缓存层;缓存一致性层通过 Redis 与 MySQL 协同, 确保数据最终一致。两者通过异步对账通道形成闭环,兼顾性能与正确性。

1.6 你将收获什么?

  • 掌握 4 种 Redis 限流算法:固定窗口、滑动窗口、令牌桶、漏桶,并能根据业务场景选型。
  • 精通 5 种缓存一致性策略:缓存旁路、延迟双删、读写穿透、异步补偿、最终一致性对账。
  • 具备生产级实战能力:Lua 脚本优化、分布式限流组件封装、缓存一致性闭环设计。
  • 获得可复用的代码资产:每章配套的限流与缓存一致性 SDK,可直接集成到项目中。
课程承诺:不空谈理论,每一章都有可运行的代码、可验证的测试用例、可落地的架构方案。学完本课程,你将能独立设计高并发系统的限流与缓存一致性保障体系。