阶段八 · 课程学习指南

本阶段按「Linux → 网关 → DevOps → 可观测性 → 性能工程」组织。★ 为必学主干。


一、Linux

1. Linux 性能优化实战 ★(第一门,性能排查内功)

为什么学:这是极客时间口碑极佳的运维入门+进阶课。它不讲「命令大全」,讲「排查思路」——CPU 高了怎么查、内存怎么查、IO 怎么查、网络怎么查,每一步用什么工具、看什么指标、怎么定位根因。

知识地图:

  • 性能分析基础:指标 vs 定位、USE 方法(利用率/饱和度/错误)
  • CPU:top/uptime/vmstat、上下文切换、负载均衡
  • 内存:free/sar、页缓存、swap、内存泄漏
  • 磁盘:iostat、IO 队列、IOPS/吞吐
  • 网络:ss/iftop、网络延迟、丢包
  • 应用:strace、perf、火焰图
  • 典型案例:CPU 飙高、内存泄漏、IO 打满的完整排查

经典案例:线上 CPU 100%,小白按「网上教程」先重启,重启后 20 分钟又满。老师用 top 找到进程,perf top 定位到热点函数,strace 追踪系统调用——原来是某个库在无限循环里反复加锁。老师总结排查公式:进程级 → 线程级 → 函数级 → 代码级,逐层缩小范围,别在第一步就用『重启大法』。

引发思考:

  1. CPU 高就一定有问题吗?怎么区分「正常高负载」和「异常」(比如在跑批处理)?
  2. 负载(load average)和 CPU 使用率是一回事吗?什么情况下负载高但 CPU 低?
  3. 上下文切换为什么贵?多少算「太高」?
  4. 你能设计一个「CPU 飙高」的最小排查流程吗?(从报警到定位到根因)

2. Linux 实战技能 100 讲(选学,命令体系补全)

为什么学:如果你 Linux 命令还不熟,这是最全的实战补课——文件、进程、网络、Shell 脚本、文本处理(awk/sed/grep)、系统管理,100 讲覆盖日常 90% 场景。

知识地图:

  • 文件与目录操作、权限、软硬链接
  • 进程管理与后台任务(ps/kill/nohup/crontab)
  • 网络工具(curl/wget/ssh/scp/ip)
  • 文本三剑客:grep/awk/sed
  • Shell 脚本编程
  • 系统管理与日志(systemd/journalctl)
  • 磁盘、包管理、用户管理

经典案例:小白要分析一份 100 万行的访问日志,统计「每个 IP 的访问次数 Top10」。老师一行命令:awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10。小白目瞪口呆:「我用 Python 写了个脚本,要 30 行;Linux 三剑客组合,一行。」 老师:「Linux 的哲学就是『小工具组合成大能力』——awk 提取、sort 排序、uniq 去重计数,管道一接,问题就没了。」

引发思考:

  1. 管道符 | 的原理是什么?进程间通信的一种方式?
  2. grep、awk、sed 各自最擅长什么?什么时候组合用?
  3. 为什么说「不会 Shell 的运维不是好运维」?Shell 脚本的适用边界在哪?

二、网关与服务器

3. Nginx 核心知识 100 讲 ★(必学,Web 服务器之王)

为什么学:Nginx 是互联网最流行的 Web 服务器/反向代理/负载均衡器——几乎所有大厂流量入口都是它。懂 Nginx,你才理解「流量怎么进到你的应用」以及「怎么让入口更稳更快」。

知识地图:

  • Nginx 架构与工作模式(master/worker、事件驱动)
  • 反向代理与负载均衡(round-robin/least_conn/ip_hash)
  • 静态资源服务与缓存
  • HTTPS 配置(证书、HTTP/2)
  • 限流(limit_req/limit_conn)、安全配置
  • 日志与性能调优
  • 高可用(keepalived + 双机)

经典案例:小白问「为什么 Nginx 能扛几十万并发,而 Tomcat 只能扛几千?」老师:「Tomcat 是『每个连接一个线程』(后来才引入 NIO),连接多了线程爆炸;Nginx 是『事件驱动 + 单进程多连接』——一个 worker 进程用事件循环管理成千上万个连接,几乎没有线程切换开销。所以 Nginx 天生就是干『入口』的活:把请求接住、分发出去,自己只做轻量的事。」

引发思考:

  1. 反向代理和正向代理的区别?(正向代理代表客户端,反向代理代表服务器)
  2. 负载均衡的几种算法各自适用什么场景?(会话保持?加权?)
  3. Nginx 限流 limit_req 和 Redis 限流有什么区别?分别在什么层面生效?
  4. 为什么 Nginx 后面一般要配 keepalived?(Nginx 挂了的兜底)

4. OpenResty 从入门到实战(选学,Nginx 上的编程)

为什么学:OpenResty 让你用 Lua 在 Nginx 里直接写业务逻辑——在入口层做鉴权、限流、缓存、动态路由,性能极高(不经过应用层)。适合网关/边缘计算方向的进阶学习。

知识地图:

  • OpenResty 架构:Nginx + LuaJIT
  • Lua 基础与 OpenResty API
  • 在 Nginx 阶段(rewrite/access/balancer)执行 Lua
  • 基于 OpenResty 做限流、鉴权、灰度
  • 连接 Redis/MySQL 做动态配置
  • 性能与安全

经典案例:小白问「为什么要在网关层做鉴权,不在应用里做?」老师:「你在 100 个微服务里各写一遍鉴权,还是在一个网关里写一遍?OpenResty 把鉴权逻辑放到 Nginx 层执行,请求在到达应用之前就被拦下——非法请求根本不进业务集群,既省资源又统一管控。这就是『边缘计算』思维:越早拦截,成本越低。」

引发思考:

  1. OpenResty 和 Spring Cloud Gateway 的定位有什么区别?(Lua 网关 vs Java 网关)
  2. 网关层做「限流」和「缓存」,分别省了什么?
  3. 什么逻辑适合放网关层、什么坚决不能放?(重逻辑别放,网关要保持轻)

三、DevOps

5. DevOps 实战笔记 ★(必学,研发效能)

为什么学:DevOps 是「开发 + 运维」的融合——让代码从提交到上线全自动化。学它,你的项目才能真正做到「一键部署、快速迭代、随时可回滚」,这是现代团队协作的底层能力。

知识地图:

  • DevOps 理念:文化、自动化、度量、共享
  • CI/CD 流水线:代码提交 → 构建 → 测试 → 镜像 → 部署
  • 常用工具链:GitLab CI / Jenkins / GitHub Actions、Docker、K8s
  • 环境管理:dev/test/staging/prod
  • 自动化测试与质量门禁
  • 发布策略:蓝绿、金丝雀、滚动发布
  • 监控反馈闭环

经典案例:小白公司还是「手工发布」——提交代码给运维,运维手动打包部署,一次发布 2 小时,还经常出错。老师搭了一条流水线:「git push → 自动构建 → 自动跑测试 → 构建镜像 → 部署到测试环境 → 一键发布到生产。发布从 2 小时变成 5 分钟,而且每次发布都有记录可回滚。」 小白:「DevOps 不是工具,是『把重复劳动交给机器,把时间留给创造』。」

引发思考:

  1. CI(持续集成)和 CD(持续交付/部署)的区别是什么?
  2. 蓝绿发布和金丝雀发布的区别?各自适合什么场景?
  3. 为什么说「没有自动化测试的 CI/CD 是空转」?(没有质量门禁的流水线会放大错误)
  4. 你的项目离「一键上线」还差哪几步?

6. 持续交付 36 讲 / 赵成的运维体系管理课(选学,深度与体系)

为什么学:持续交付 36 讲是「部署管道与发布工程」的深度课;赵成的运维体系管理课是「运维团队怎么建设」的管理课(SLA、容量、故障管理、on-call)。按需选。

知识地图(持续交付):

  • 部署管道设计(stage 划分、反馈环)
  • 构建、测试、发布的最佳实践
  • 发布风险控制与回滚
  • 大厂持续交付案例

知识地图(运维管理):

  • 运维体系:监控、告警、容量、变更、故障
  • SLA/SLO/SLI 设计与度量
  • 故障管理:on-call、复盘(RCA)、应急响应
  • 运维自动化与平台化

经典案例:老师问小白:「如果你的服务 99.9% 可用,一年可以宕机多久?」小白算了算:「8.76 小时。」老师:「如果你跟客户签了 99.99%(一年 52 分钟)的 SLA,那每一次发布、每一次变更都得极其谨慎——因为容错空间只有 52 分钟。SLA 不是口号,它会反向约束你的架构和流程。这就是『用指标管理运维』的起点。」

引发思考:

  1. SLO(目标)和 SLI(指标)的关系?怎么给一个服务定 SLO?
  2. 故障复盘(RCA)的正确姿势是什么?为什么不能「追责」?
  3. on-call 值班机制怎么设计,才能既保障系统又不烧人?

四、可观测性

7. 深入浅出可观测性 ★(必学,三支柱)

为什么学:系统复杂后,「日志、指标、链路追踪」三支柱缺一不可——指标告诉你「哪里出问题了」,日志告诉你「发生了什么」,链路追踪告诉你「到底是哪个环节慢」。这门课是建立可观测性体系的最佳入口。

知识地图:

  • 可观测性 vs 监控的区别
  • 三支柱:Metrics(指标)/ Logging(日志)/ Tracing(链路)
  • 指标体系:RED(速率/错误/耗时)、USE(利用率/饱和度/错误)
  • Prometheus + Grafana 监控搭建
  • 日志采集:ELK / Loki / 日志格式规范
  • 分布式链路追踪:OpenTelemetry、Jaeger/SkyWalking
  • 告警设计(避免告警风暴)

经典案例:小白部署的服务 502 了,只有一条「502 日志」。老师:「光有日志你只能看到『它挂了』,看不到『为什么挂』。配上指标(Prometheus 显示 CPU 飙升)+ 链路追踪(发现是某个上游服务超时 5 秒)——三者一交叉,5 分钟定位:上游数据库连接池耗尽。可观测性不是装三个工具,是让『问题定位』从小时级变成分钟级。」

引发思考:

  1. Metrics、Logging、Tracing 各自回答什么问题?为什么缺一不可?
  2. RED 方法和 USE 方法分别适合什么类型的系统?
  3. 告警设计:什么样的告警才「不吵不漏」?(分级、聚合、消除告警疲劳)
  4. OpenTelemetry 是什么?为什么说它是可观测性的「普通话」?

8. 运维监控系统实战笔记(选学,监控系统落地)

为什么学:一门「从 0 搭一套监控系统」的实战课——怎么设计监控项、怎么搭 Prometheus + 告警、怎么做容量看板。学完你能给自己的系统搭一套完整监控。

知识地图:

  • 监控系统设计:监控什么、怎么采样、怎么存储
  • Prometheus 架构:指标采集、TSDB、PromQL
  • 告警规则与 Alertmanager
  • 服务发现(K8s 环境监控)
  • 自定义指标埋点(业务监控)
  • 监控看板设计(Grafana)

经典案例:小白问「监控要监控什么?」老师:「分四层:硬件层(CPU/内存/磁盘/网络)、中间件层(MySQL 连接数、Redis 命中率、MQ 积压)、应用层(QPS、延迟、错误率)、业务层(下单量、支付成功率)。越往下越『技术』,越往上越『业务』——老板关心业务层,你关心硬件层。监控设计的本质,是让每个角色都有『自己的仪表盘』。」

引发思考:

  1. Prometheus 的拉取(pull)模型和传统推送(push)模型比,好在哪?
  2. 监控指标怎么防止「指标爆炸」?(采样、聚合、标签管理)
  3. 业务指标(如订单失败率)怎么埋点?它和基础设施监控怎么联动?

五、性能工程

9. 性能优化高手课 ★(必学,全栈性能方法论)

为什么学:这门课把「性能优化」从「见招拆招」升级为「系统工程」——从性能模型、评估方法、优化手段到结果验证,一套完整的方法论。学完你面对任何「慢」都有章法。

知识地图:

  • 性能优化的目标与模型(响应时间、吞吐、资源利用率)
  • 性能评估:怎么衡量、怎么设定基线
  • 优化的通用方法:先定位(瓶颈)再优化(对症下药)
  • 代码层:算法、缓存、连接池、并发
  • 架构层:缓存、异步、无状态化
  • 数据库与中间件层优化
  • 优化效果的验证与回归

经典案例:小白问「性能优化从哪下手?」老师给方法论:「① 先建立基线:现在多快(响应时间、吞吐)?② 定位瓶颈:用压测 + profiling 找到最慢的一环(80% 的性能问题集中在 20% 的代码);③ 对症优化:是算法问题就改算法,是 IO 问题就加缓存,是并发问题就改并发模型;④ 复测验证:优化后必须复测,且保证不引入新问题。性能优化不是『拍脑袋优化』,是『数据驱动的工程』。」

引发思考:

  1. 响应时间、吞吐量、资源利用率,三个指标之间的权衡关系是什么?
  2. 为什么说「先定位再优化」?「过早优化」的坑是什么?
  3. 一个接口响应 2 秒,你会从哪些层面逐层排查?(前端→网络→网关→应用→数据库→外部依赖)

10. 高楼的性能工程实战课 / 全链路压测实战 30 讲 / 容量保障核心技术与实战(选学,压测与容量)

为什么学:三门的共同主题是「性能工程体系」——高楼的课讲性能工程整体方法论(压测、链路、容量、治理);全链路压测课讲大促压测怎么做(影子流量、全链路演练);容量保障课讲容量规划与扩容。是进阶到大厂 SRE/性能团队方向。

知识地图(全链路压测):

  • 压测目标:容量摸底、瓶颈定位、稳定性验证
  • 压测工具:JMeter / Locust / wrk / 自研压测平台
  • 全链路压测:影子库、流量染色、压测数据隔离
  • 压测分析与调优
  • 压测在 K8s 环境下的实践

知识地图(容量保障):

  • 容量模型:QPS、RT、资源利用率的关系
  • 容量评估与规划
  • 弹性扩容(HPA、自动伸缩)
  • 容量治理:冗余、限流、降级兜底

经典案例:大促前,小白问「我们怎么知道系统扛不扛得住?」老师:「上线前做全链路压测:用影子流量(标记过的压测请求)打真实环境,观察各环节(网关、应用、缓存、DB、MQ)的表现,找到『短板』——往往是数据库或某个单点。压出极限后,按『双 11 预估流量 × 1.5 冗余』扩容量。没有压测过的系统,上线就像裸奔。」

引发思考:

  1. 压测和线上真实流量有什么不同?「全链路压测」怎么避免污染线上数据?(影子库/染色)
  2. 怎么根据压测结果估算「需要多少台机器」?
  3. 容量保障的「兜底手段」有哪些?(限流、降级、熔断各自的触发条件)

本阶段小结

学完阶段八,你拥有了「守护系统」的能力:

  • Linux 内功:排查 CPU/内存/IO/网络问题有章法;
  • 网关能力:Nginx 配置信手拈来,流量入口尽在掌握;
  • DevOps 思维:CI/CD、发布策略、运维体系门儿清;
  • 可观测性:指标/日志/链路三支柱搭建与使用;
  • 性能工程:压测、定位、优化、容量规划完整闭环。

系统「稳了、快了、看得见了」。下一阶段,解锁新时代的生产力——AI 与大数据。

下一站:09_阶段九_AI与大数据/。