软件工程本科生宝典
首页/课程学习引导/云计算与分布式系统
系统与网络 · 大三下

云计算与分布式系统

Cloud Computing and Distributed Systems

系统与网络
课程类别
大三下
建议学期
重要性
重要程度
难度
学习难度

📖这门课到底讲什么

云计算与分布式系统研究多台机器如何协同完成单机做不到的事:分布式系统基础模型与时钟与一致性问题、CAP 与 BASE、复制与共识(Paxos 与 Raft)、分区与容错、消息队列与异步解耦、微服务与 RPC、容器与编排(Docker 与 Kubernetes)、虚拟化与资源调度、以及可观测性(日志、指标、链路追踪)。它把操作系统与网络的知识放大到一个集群的尺度上。学完你应能解释一次分布式请求的完整链路与故障传播、设计具备容错能力的三层服务架构、用容器部署多服务应用并用编排工具管理、并对一致性与可用性的取舍做出有依据的判断。

🎯为什么必须学好

云原生与分布式是国内大厂后端架构的默认形态,面试中 CAP 理论、Raft 选主、分布式锁、限流与降级、消息队列如何保证不丢不重,都是高频深挖点;实习与工作中必然会接触 Docker、Kubernetes、Redis、Kafka。这门课让你从写函数进阶到设计系统,是初级工程师向中高级跃迁的知识跳板,也是系统设计面试的直接来源。

📌核心知识清单

  • 分布式系统基础:节点与网络故障模型、同步与异步系统、时钟偏移与逻辑时钟(Lamport 与向量时钟)、因果序与全序
  • 一致性与可用性理论:线性一致性、顺序一致性、CAP 三选二的实际含义、BASE 与最终一致性、Quorum 机制(读写集大小与一致性)
  • 复制与共识:主从复制与多主复制、同步与异步复制的取舍、Paxos 与 Raft 的选主与日志复制流程、脑裂与租约
  • 分区与容错:一致性哈希与虚拟节点、数据分片与再平衡、故障检测(心跳与超时)、幂等与重试、隔板与熔断降级
  • 分布式协调与服务发现:ZooKeeper 与 etcd 的角色、分布式锁与 Leader 选举的实现、服务注册与负载均衡策略
  • 消息与异步架构:消息队列的作用与投递语义(至多一次、至少一次、恰好一次)、顺序与分区、Kafka 的分区与消费组模型、幂等消费
  • 微服务与通信:RPC 与 REST 对比、gRPC 与 protobuf、服务网关、链路追踪与全链路压测、微服务的代价与拆分原则
  • 云平台与虚拟化:虚拟化与容器、Docker 镜像分层与命名空间与 cgroups、Kubernetes 的 Pod/Service/Deployment 模型、弹性伸缩与资源配额

✍️怎么学(可执行步骤)

  1. 主线教材用《数据密集型应用系统设计》(DDIA),重点第5至9章复制、分区、事务、一致性与共识,配合 MIT 6.824 课程与实验
  2. 读 Raft 论文并跟着可视化网站走一遍选主与日志复制流程,再用 Go 或 Python 实现一个简化版 Raft(选举加日志同步),这是理解共识协议的唯一有效方式
  3. 动手实践容器与编排:把一门课程项目容器化(写 Dockerfile 与 docker-compose),再部署到 minikube 或 k3s 上,配置 Service 与滚动更新并观察行为
  4. 搭一个完整的小型分布式应用:网关、两个业务服务、Redis 缓存与 MySQL、Kafka 消息解耦,用 Docker Compose 一键启动并故意杀掉某个服务观察容错表现

📚推荐教材与书籍

数据密集型应用系统设计(DDIA)Martin Kleppmann · 经典

分布式系统领域最好的书,第5至9章复制、分区、事务与共识是核心,建议精读两遍

分布式系统:概念与设计George Coulouris 等 · 经典

体系完整的学术教材,讲清时钟、一致性与分布式算法基础理论

凤凰架构:构建可靠的大型分布式系统周志明 · 进阶

中文系统架构书,从服务治理到云原生演进脉络讲得非常清楚,适合工程视角补课

Kubernetes权威指南龚正等 · 工具书

K8s 中文参考书,部署与排障时按需查阅对象模型与命令

🎬视频课程 / 公开课

分布式系统课程标杆,四个实验(MapReduce、Raft、KV 服务、分片)含金量极高

大规模分布式系统B站 / 学堂在线

国内高校与工业界讲师课程,讲解贴近企业实践

伊利诺伊大学课程,从 Gossip 协议讲到 Paxos,理论扎实

🌐网站与文档

拖动节点观察领导者选举与日志复制过程,理解 Raft 最快的方式

官方中文文档,概念、任务与参考手册齐全

镜像、网络、卷与 Compose 的权威说明

🐙GitHub 开源资料

系统设计面试最全的中枢资料,含大量真实架构案例与取舍分析

图解系统设计核心概念,从缓存到一致性哈希都有图,复习效率极高

etcd-io/etcd⭐ 48k+

基于 Raft 的分布式键值存储,生产级共识实现,适合读源码或当作分布式存储依赖

apache/kafka⭐ 28k+

主流消息队列,理解分区、副本、消费组模型的优秀工程实现

🧪动手实践任务

🧪

实践 1

用 Go 或 Python 实现一个简化 Raft:支持领导者选举与日志复制,写测试模拟节点宕机与网络分区并验证日志一致性

🧪

实践 2

把某个课程项目容器化部署到 Kubernetes:编写 Dockerfile、Deployment、Service 与 ConfigMap,实现滚动更新并验证服务不中断

🧪

实践 3

搭建消息队列驱动的异步链路:两个服务通过 Kafka 或 RabbitMQ 通信,制造消费者宕机与重复投递场景,实现幂等消费并验证不丢不重

🧪

实践 4

完成一次故障演练报告:在容器集群中手动杀死一个副本、断开网络或打满 CPU,记录系统的表现与恢复时间,提出改进方案

🧾考试与面试

💼 面试会怎么考

高频:CAP 理论的实际含义与常见系统的取舍(Redis 与 ZooKeeper 各偏什么);一致哈希解决什么问题、虚拟节点如何缓解倾斜;分布式锁的几种实现(Redis 的 SETNX 与 Redlock、etcd 租约)及各自的坑;如何保证消息不丢不重(生产者确认、手动提交位点、幂等表);Raft 的选主与日志复制流程、脑裂如何避免;限流算法(令牌桶与漏桶)、熔断与降级;分布式事务方案(两阶段提交、TCC、本地消息表、Saga);幂等设计;一次请求超时了到底有没有执行成功,如何设计接口消除这一不确定性。

📝 期末与考研怎么过

考核形式常见为笔试加项目:笔试考 CAP、一致性模型、Quorum 读写推导(如 R 加 W 大于 N 的含义)、时钟与因果序判断、选举与日志复制流程描述;项目占较大比重,通常要求部署一个多服务系统并展示容错能力。备考要点是把经典理论(CAP、Quorum、复制模型)能用一句话说清并举例,项目文档写清架构与故障处理。目标八十分以上。

⚠️ 常见坑

  • 把 CAP 理解成任意三选二,忽略分区是前提,面试中说出错误理解会直接减分
  • 只学概念不搭环境,Docker 与 K8s 停留在看视频阶段,写不出可用的 Dockerfile 与编排文件
  • 忽略幂等与重试设计,认为网络调用一定成功,导致重复下单等真实故障
  • 在单体应用尚未跑通时就上微服务与分布式,架构复杂度远超团队能力,课程项目因此拖垮
  • 盲目迷信最终一致性,忽视业务对强一致的真实需求(库存扣减、支付),设计出账或超卖问题
→ 查看 大三下学期 的完整学期安排