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