Backend 后端技术全景学习路线 / A Complete Backend Engineering Learning Path
📅 创建时间:2026-05-08 🏷️ 标签:#Backend #后端 #面试 #八股 #技术路线 📚 前置知识:无 📚 相关知识:[[/03-web/06-databases-and-data-access/00-db-overview]] [[/03-web/06-databases-and-data-access/05-redis]] [[/03-web/06-databases-and-data-access/08-vector-database]]
文档目标
本文档为后端技术面试和能力提升提供系统性的知识地图。与传统"知识点堆砌"不同,本文以真实业务场景驱动,通过问题推导原理,让你在理解"为什么"的基础上掌握"怎么用"。
场景驱动学习:一条主线贯穿全部章节
┌─────────────────────────────────────────────────────────────┐
│ │
│ 🔥 统一业务场景:秒杀系统 🔥 │
│ │
│ 凌晨 0 点,你负责的电商秒杀系统即将迎来 10 万 QPS 的洪峰。 │
│ │
└─────────────────────────────────────────────────────────────┘
第1章 Redis → 缓存层:热点数据如何缓存、分布式锁怎么用
第2章 Kafka → 削峰:下单请求如何异步化、消息如何不丢失
第3章 MQ 对比 → 选型:为什么选 Kafka 而不是 RabbitMQ
第4章 分布式 → 一致性:库存超卖、分布式锁、TCC 事务
第5章 中间件 → 网关限流:流量涌来时如何保护系统
第6章 网络 → TCP 连接:10 万连接对服务器意味着什么
第7章 认证 → 幂等性:用户手抖多点了一次下单怎么办
第8章 并发 → 线程池:库存扣减如何并发安全
第9章 MySQL → 乐观锁:扣库存的 SQL 怎么写才对
第10章 缓存策略 → 数据一致性:库存变了,缓存怎么处理
第11章 架构模式 → CQRS:读请求和写请求怎么分离
第12章 DevOps → 限流熔断:秒杀期间系统如何保护自己学完这 12 章后,你脑子里不再是一堆孤立的知识点,而是一套完整的系统——你知道每个技术为什么存在,它们如何协同工作,遇到问题时应该从哪里排查。
后端技术分层图谱
┌─────────────────────────────────────────────────────────────┐
│ 后端技术分层 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 接入层 │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ CDN │ │ API 网关 │ │ 负载均衡 │ │
│ │ │ │ (限流/鉴权) │ │ (Nginx) │ │
│ └────────────┘ └────────────┘ └────────────┘ │
│ │
│ 业务层 │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ 应用服务 │ │ 消息队列 │ │ 缓存层 │ │
│ │ (线程池) │ │ (Kafka) │ │ (Redis) │ │
│ └────────────┘ └────────────┘ └────────────┘ │
│ │
│ 数据层 │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ 关系型 │ │ 向量存储 │ │ 对象存储 │ │
│ │ (MySQL) │ │ (pgvector)│ │ (S3) │ │
│ └────────────┘ └────────────┘ └────────────┘ │
│ │
│ 基础设施层 │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ 容器/K8s │ │ 服务发现 │ │ 链路追踪 │ │
│ │ │ │ (Nacos) │ │ (SkyWalking)│ │
│ └────────────┘ └────────────┘ └────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘AI 辅助 vs 必须深入原理
┌─────────────────────────────────────────────────────────────┐
│ 每章的 AI 可查 vs 必须理解清单 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 可以高度依赖 AI 的(偏记忆/查表型): │
│ ✅ Redis 命令速查——AI 随时告诉你用什么命令 │
│ ✅ 框架 API 速查——Spring / Gin / FastAPI 参数 │
│ ✅ 代码模板生成——CRUD / 常见模式 AI 秒生成 │
│ ✅ 错误码/状态码——HTTP 状态码、gRPC 错误码 │
│ ✅ 配置参数含义——Nginx / Kafka / MySQL 配置项含义 │
│ │
│ 必须深入理解原理的(决定你能否解决实际问题的): │
│ 🔴 缓存穿透/击穿/雪崩——场景、原因、解决方案 │
│ 🔴 分布式一致性——CAP/BASE/Raft/Paxos 的 trade-off │
│ 🔴 消息队列顺序性/幂等性——如何保证、何时会乱序 │
│ 🔴 线程池原理——参数怎么调、何时会死锁 │
│ 🔴 MySQL 索引原理——B+ 树、慢查询分析、执行计划 │
│ 🔴 TCP/UDP 区别——三次握手四次挥手、time_wait │
│ 🔴 认证鉴权原理——JWT/Session/Cookie/OAuth 的陷阱 │
│ 🔴 熔断/限流原理——Sentinel/Hystrix 算法区别 │
│ │
│ 原则:能查到的不用背,理解不了的面试必挂。 │
│ │
└─────────────────────────────────────────────────────────────┘学习路径与面试频率
┌─────────────────────────────────────────────────────────────┐
│ 面试频率 × 理解深度 矩阵 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 高面试频率 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Redis 三问(穿透/击穿/雪崩) ⭐⭐⭐ 高理解 │ │
│ │ MySQL 索引 + 慢查询优化 ⭐⭐⭐ 高理解 │ │
│ │ 分布式事务(2PC/TCC/Saga) ⭐⭐⭐ 高理解 │ │
│ │ 消息队列(顺序/幂等/丢失) ⭐⭐⭐ 高理解 │ │
│ │ 线程池 + 并发安全 ⭐⭐⭐ 高理解 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 中面试频率 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 分布式 ID 生成 ⭐⭐ 中理解 │ │
│ │ 限流/熔断算法 ⭐⭐ 中理解 │ │
│ │ JWT + OAuth2 ⭐⭐ 中理解 │ │
│ │ TCP/滑动窗口 ⭐⭐ 中理解 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 低面试频率(但要会用) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Docker/K8s 基础 ⭐ 会部署即可 │ │
│ │ CQRS/ES 架构 ⭐ 理解概念即可 │ │
│ │ 链路追踪 ⭐ 会用即可 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘各章节详情
| 章节 | 主题 | 核心场景 |
|---|---|---|
| [[01-redis-deep]] | Redis 深入 | 秒杀系统被恶意刷接口导致数据库崩溃 |
| [[Redis/00-redis-overview]] | Redis 全景 | 为什么需要缓存层,Redis 定位 |
| [[Redis/01-redis-architecture]] | Redis 架构分析 | 线程模型、内存模型、持久化、集群 |
| [[Redis/02-redis-data-structures]] | Redis 数据结构场景 | 何时用 String/Hash/List/Set/ZSet |
| [[Redis/03-redis-cache-patterns]] | Redis 缓存三剑客 | 穿透/击穿/雪崩 + 一致性策略 |
| [[Redis/04-redis-distributed-locks]] | Redis 分布式锁 | Redisson/RedLock/踩坑指南 |
| [[Redis/05-redis-advanced-features]] | Redis 高级特性 | Stream/PubSub/Module/LLM 应用 |
| [[02-mq-kafka]] | Kafka 核心 | 秒杀订单如何异步处理、消息如何不丢 |
| [[03-mq-others]] | MQ 对比 | 为什么选 Kafka 而不是 RabbitMQ |
| [[04-distributed-system]] | 分布式系统 | 库存超卖、分布式锁失效、TCC 事务 |
| [[05-middleware]] | 中间件 | 流量洪峰下网关如何限流熔断 |
| [[06-network]] | 网络基础 | 10 万长连接导致服务器崩溃 |
| [[07-auth-security]] | 认证鉴权 | 重复下单、接口幂等性、JWT 安全 |
| [[08-concurrency]] | 并发编程 | 库存扣减的并发安全问题、线程池调参 |
| [[09-mysql-optimization]] | MySQL 优化 | 慢查询、执行计划、索引失效 |
| [[10-cache-strategy]] | 缓存策略 | 缓存一致性:库存更新后缓存怎么处理 |
| [[11-architecture-patterns]] | 架构模式 | CQRS/Saga/熔断降级 |
| [[12-devops-basics]] | DevOps 基础 | Docker/K8s/CI-CD/监控 |
| [[13-system-design]] | 系统设计 | 如何设计一个每秒 10 万订单的秒杀系统 |
| [[14-es-elasticsearch]] | 搜索系统 | 搜索"小米手机"却找不到"小米 13" |
| [[15-mq-advanced]] | MQ 高级 | 消息处理失败死循环、订单超时自动取消 |
| [[16-api-design]] | API 设计 | 前端要的字段和接口返回的不一致 |
| [[17-db-engineering]] | 数据库工程 | 给 5000 万行表加字段如何不停服 |
| [[18-observability]] | 可观测性 | 用户说下单失败但不知道哪一步错了 |
| [[19-security-hardening]] | 安全加固 | 登录接口被 SQL 注入,账号泄露 100 万条 |
开始之前:为什么后端技术这么难?
因为后端不是学"一个技术",而是学一套系统。每个技术都不是孤立的:
Redis 挂了
→ 先查 Redis 的问题(穿透/击穿/雪崩)
→ 如果是流量问题,查 Kafka 削峰是否生效
→ 如果是数据库问题,查 MySQL 锁等待
→ 如果是线程问题,查线程池配置
→ 如果是网络问题,查 TCP 连接数
任何一个问题的排查,都需要理解多个技术的联动。
这就是为什么后端面试要考"系统设计"——因为真实问题从不会按知识点出牌。学习状态:🟡 开始学习