阶段四 · 课程学习指南

本阶段按「关系型数据库 → 缓存 → 消息队列 → 搜索 → 文档库 → 协调与中间件」组织。★ 为必学主干。


一、关系型数据库

1. MySQL 实战 45 讲 ★(本阶段第一门,必学)

为什么学:这是极客时间史上最经典的数据库课,没有之一。它把 MySQL 讲成「一个系统」——一条 SQL 怎么走完 Server 层和存储引擎,事务怎么隔离,索引怎么选,日志怎么保证不丢数据。学完它,你面试、调优、排障全都不虚。

知识地图:

  • 一条 SQL 的完整执行流程(连接器→分析器→优化器→执行器)
  • 日志系统:binlog、redo log、undo log 各管什么
  • 事务:ACID、四种隔离级别、MVCC、幻读
  • 索引:B+ 树、覆盖索引、最左前缀、索引下推
  • 锁:全局锁、表锁、行锁、间隙锁、死锁
  • 主从复制、读写分离、分库分表
  • 慢查询优化、参数调优

经典案例:小白问「为什么我只改了一行数据,binlog 和 redo log 要写两遍?」老师画了张图:「redo log 是 InnoDB 自己记的『账本』,保证内存里的数据不会丢(崩溃恢复);binlog 是 MySQL 的『对外账本』,用来主从复制。两本账,各管一摊。而且两阶段提交保证它们对得上——这就是数据库『不丢数据』的秘密。�� 小白第一次理解:「数据库的可靠性,是一层一层日志堆出来的。」

引发思考:

  1. 为什么索引用 B+ 树而不是哈希、红黑树或 B 树?(从「范围查询 + 磁盘 IO 次数」两个角度想)
  2. 为什么说「事务隔离级别越高,并发越低」?可重复读是怎么用 MVCC 实现的?
  3. 哪些写法会导致索引失效?列出 5 种以上。
  4. 一条慢查询,你的排查步骤是什么?(先 explain 看执行计划,再分析索引……)

2. SQL 必知必会 / MySQL 必知必会(选学,基本功补强)

为什么学:如果 SQL 基础不牢,先补这两门。SQL 必知必会讲标准 SQL 的核心(SELECT/JOIN/GROUP BY/子查询),MySQL 必知必会讲 MySQL 特有语法。它们是「实战 45 讲」的垫脚石。

知识地图:

  • 基本查询:SELECT、WHERE、ORDER BY、LIMIT
  • JOIN 家族:INNER / LEFT / RIGHT / FULL
  • 聚合:GROUP BY、HAVING、COUNT/SUM/AVG
  • 子查询与窗口函数(ROW_NUMBER 等)
  • 建表、约束、外键、视图、事务语法

经典案例:小白写了一条「统计每个部门工资最高的员工」的 SQL,用子查询写出一坨嵌套,跑了 3 秒。老师用窗口函数 ROW_NUMBER() OVER (PARTITION BY dept_id ORDER BY salary DESC) 三行搞定,0.1 秒。老师点评:SQL 写得好不好,看你会不会用窗口函数和 JOIN 的语义。

引发思考:

  1. JOIN 的三种实现方式(NLJ/BNL/Hash Join)和索引有什么关系?
  2. WHERE 和 HAVING 的区别是什么?执行顺序呢?
  3. 为什么说「能不用子查询就不用」?(临时表 + 索引失效)
  4. 写一条 SQL 统计「每月新增用户数」,你会怎么写?有几种写法?

二、缓存

3. Redis 核心技术与实战 ★(必学)

为什��学:Redis 是后端架构里最万能的基础设施:缓存、分布式锁、排行榜、计数器、消息队列、布隆过滤器……而且它用单线程 + 内存做到每秒 10 万+ 操作。懂 Redis,是所有后端岗位的标配。

知识地图:

  • 为什么 Redis 快:纯内存、单线程、IO 多路复用、高效数据结构
  • 五大数据结构:String / Hash / List / Set / ZSet 及使用场景
  • 持久化:RDB 与 AOF、混合持久化
  • 过期策略与内存淘汰(LRU/LFU)
  • 缓存三大问题:缓存穿透、击穿、雪崩
  • 分布式锁(SETNX + 过期 + 续期)
  • 高可用:主从、哨兵、Cluster 集群
  • 大 key、热 key 问题与治理

经典案例:双十一零点,缓存里没有的商品 ID 被刷爆,请求全部打到数据库,数据库瞬间宕机——这就是「缓存穿透」。小白问怎么防,老师给三板斧:「① 查不到也缓存空值;② 布隆过滤器先挡一层;③ 接口限流兜底。」 小白:「一个缓存问题居然有三种解法?」 老师:「这就是为什么 Redis 值得深学——每个问题背后都有一整套『工程套路』。」

引发思考:

  1. 缓存和数据库的数据一致性怎么保证?(先更库还是先删缓存?Cache Aside 是什么?)
  2. Redis 单线程为什么还这么快?它不怕「一个慢命令拖垮全局」吗?
  3. 分布式锁用 Redis 实现,有哪些坑?(锁过期、主从切换丢锁……)怎么解?
  4. ZSet 为什么能做排行榜?它底层是什么数据结构?(跳表!还记得阶段三吗)

三、消息队列

4. Kafka 核心技术与实战 ★(必学,MQ 之王)

为什么学:Kafka 是「吞吐之王」,每秒可处理百万级消息,是大数据与微服务架构的事实标准。学它,你理解「异步、削峰、解耦」这三个架构关键词的真正含义。

知识地图:

  • 为什么用 MQ:异步、削峰、解耦
  • Kafka 核心概念:Topic、Partition、Offset、Consumer Group
  • 生产者:分区策略、批量发送、幂等
  • 消费者:消费组、Rebalance、手动/自动提交
  • 存储机制:顺序写、页缓存、零拷贝
  • 可靠性:ack 机制、ISR、副本同步
  • Kafka 在日志、大数据、微服务中的角色

经典案例:秒杀系统瞬间 10 万请求,直接写数据库必挂。老师用 Kafka 一挡:「请求先进 MQ 排队,后端按自己节奏慢慢消费,一秒只能处理 1 万,就每秒消费 1 万。用户那边显示『排队中』,其实很流畅——这就是『削峰』。系统从『被流量打垮』变成『按部就班』。」 小白惊呼:「MQ 原来是系统的『缓冲垫』!」

引发思考:

  1. 消息「不丢」和「不重复」能同时做到吗?(幂等消费)
  2. Kafka 为什么比 RabbitMQ 吞吐高得多?(顺序写、零拷贝、批量)
  3. 消费者组里的 Rebalance 是什么?为什么它经常是「元凶」?
  4. 什么业务适合 MQ、什么不适合?(不适合:强一致、实时要求极高)

5. 消息队列高手课 / 深入拆解消息队列 47 讲(选学,MQ 原理深挖)

为什么学:第一门课教你「用 Kafka」,这两门教你「MQ 的底层设计」——存储模型、一致性协议、网络模型。学完你能举一反三:任何 MQ(RabbitMQ、RocketMQ、Pulsar)到你手里,半天上手。

知识地图:

  • 消息队列的整体架构与核心问题(存储、路由、投递)
  • 顺序消息、事务消息、延迟消息
  • 消息积压的排查与治理
  • 各主流 MQ 对比与选型
  • 从零理解「分布式一致性」在 MQ 中的体现

经典案例:小白问「为什么 Kafka 用『追加写』而不是『随机写』?随机写不是更灵活吗?」老师:「磁盘顺序写比随机写快 100 倍——机械硬盘最怕寻道。Kafka 把所有数据『从头写到尾』,配合页缓存和零拷贝,单个 Broker 就能撑起百万级吞吐。『把写做成顺序的』,这是存储设计的黄金法则。」

引发思考:

  1. 消息积压了 1 亿条,你会怎么处理?(扩容消费者?临时转存?)
  2. 「最多一次 / 至少一次 / 恰好一次」三种投递语义,业务上怎么选?
  3. 为什么说「MQ 是分布式系统的解耦神器,也是最大单点」?MQ 挂了怎么办?

四、搜索

6. Elasticsearch 核心技术与实战(选学,全文检索)

为什么学:数据库的 LIKE 查询是「全表扫」,数据量大了必挂。ES 用「倒排索引」把搜索做到毫秒级——电商搜索、日志检索、站内搜索全靠它。

知识地图:

  • 倒排索引:为什么搜单词快
  • 分词器:中文分词为什么难
  • 文档、索引、分片、副本
  • 查询 DSL:match、term、bool、aggregation
  • 相关性打分(TF-IDF / BM25)
  • ES + Kibana 做日志分析(ELK)
  • 集群与容量规划

经典案例:小白问「为什么我搜『华为手机』,淘宝能把『华为 Mate 60 Pro 手机』排第一?」老师:「因为 ES 先把文档切成词(分词),再算每个词和你搜索词的相关性分数(BM25),按分排序。数据库做不了这事——它只会精确匹配。搜索,是另一个维度的技术。」

引发思考:

  1. 倒排索引和 B+ 树索引的本质区别是什么?各自擅长什么?
  2. 「分词」为什么难?「南京市长江大桥」怎么切才合理?
  3. 什么时候该用 ES,什么时候用 MySQL 就够了?(别过度设计)

五、文档库

7. MongoDB 高手课(选学,NoSQL 思维)

为什么学:MongoDB 是文档型 NoSQL 代表:schema 灵活、水平扩展容易。适合内容、物联网、游戏等「结构多变」的数据。学它,你理解「关系型 vs 文档型」的思维差异。

知识地图:

  • 文档模型 vs 关系模型
  • CRUD 与聚合管道
  • 索引与性能
  • 副本集与分片集群
  • 事务与一致性(MongoDB 4.0+ 支持事务)
  • 应用场景与选型

经典案例:小白问「订单数据为什么不能用 MongoDB?」老师:「订单要频繁跨表 join、要严格事务,这是关系型的强项。但如果你做『商品评论』,每人评论的字段都不一样(有人带图片、有人带视频、有人带表情),MongoDB 的『文档』想存什么就存什么——这就是它的用武之地。选型不是看谁火,是看数据长什么样。」

引发思考:

  1. 关系型数据库和文档型数据库,各自的「舒适区」是什么?
  2. MongoDB 为什么扩展容易?分片(sharding)的原理是什么?
  3. 你正在做的业务里,哪类数据适合 MongoDB?为什么?

六、分布式协调与中间件

8. etcd 实战课(选学,K8s 的底座)

为什么学:etcd 是「分布式一致性存储」,Kubernetes 的全部状态都放在 etcd 里。学它,你理解「分布式系统怎么达成共识」(Raft 协议),也是学云原生绕不开的一环。

知识地图:

  • Raft 共识算法:选举、日志复制、安全
  • etcd 的数据模型与 watch 机制
  • 服务发现、配置中心、分布式锁
  • 与 K8s 的关系
  • 集群运维与性能

经典案例:小白问「为什么 K8s 挂了,etcd 要是也挂了就全完蛋?」老师:「K8s 自己是无状态的,它所有的『记忆』(节点、Pod、配置)都存在 etcd。etcd 用 Raft 在多个节点间复制数据,保证『即使部分节点挂了,集群还有一致的数据』。这就是分布式系统最核心的思想:冗余 + 共识。」

引发思考:

  1. Raft 选举为什么需要「多数派」?多数派和可用性的关系?
  2. etcd 的 watch 机制可以用来做什么?(配置热更新)
  3. 为什么说「etcd 是云原生时代的『注册中心』」?

9. 中间件核心技术与实战(选学,视野补全)

为什么学:这门课把常见中间件串起来讲——缓存、MQ、搜索、注册中心、网关,帮你建立「中间件全景」,知道每个中间件解决什么问题、怎么选型。

知识地图:

  • 中间件全景:存储 / 消息 / 协调 / 网关 / 搜索
  • 各中间件的核心原理与对比
  • 中间件选型方法论
  • 高可用架构设计
  • 故障排查与运维

经典案例:小白问「注册中心那么多,Nacos、ZooKeeper、etcd、Consul 选哪个?」老师:「先看你的诉求:要 AP 还是要 CP?配置管理 + 服务发现要一体化吗?团队熟哪个?选型没有银弹,只有『trade-off』。中间件课的价值,就是让你面对选择时,能说出『为什么』,而不是『随大流』。」

引发思考:

  1. CAP 定理(一致性/可用性/分区容忍性)怎么指导中间件选型?
  2. 网关(API Gateway)解决什么问题?和注册中心什么关系?
  3. 如果你要设计一个「每日千万级」的系统,你会选哪些中间件?为什么?

本阶段小结

学完阶段四,你已经拥有「数据层」的完整武器库:

  • MySQL 存核心业务数据,索引/事务/日志门儿清;
  • Redis 扛热点,把 QPS 顶上去;
  • Kafka 削峰解耦,让系统扛住洪峰;
  • ES 做搜索,MongoDB 存多变文档,etcd 管分布式状态。

你现在能看懂绝大多数后端架构图了。 下一阶段,把这些中间件用起来,写出真正的后端项目。

下一站:05_阶段五_后端开发工程/。