---
title: 分布式系统：从失败到可验证协作的学习路线
url: https://doc.liz6.com/distributed-systems/00-learning-path
locale: zh
area: distributed-systems
tags:
- 分布式系统
date: 2026-09-12
modified: 2026-09-12
description: 用消息日志与状态变化说明重试、复制和恢复，明确每项保证依赖的故障模型；能为一个后台任务服务写出可复核的成功条件。
---

# 分布式系统：从失败到可验证协作的学习路线

适合写过单机程序、知道 HTTP 请求和持久化概念的读者。先能描述一个请求何时算成功，再讨论多副本。练习可以在一个进程里模拟消息延迟、重复和丢失，不需要先部署真实集群。

## 学完要能做什么

用消息日志与状态变化说明重试、复制和恢复，明确每项保证依赖的故障模型；能为一个后台任务服务写出可复核的成功条件。

## 必读顺序与阶段自检

1. [故障模型](01-basic-theory/03-fault-models.md) → [时间与时钟](01-basic-theory/02-time-and-clocks.md) → [CAP 与一致性模型](01-basic-theory/01-cap-and-consistency-models.md)。

   先画一次请求、超时和重试的时间线。自检：超时后服务端可能已成功，时钟时间相近也不保证因果顺序；把 CAP 的取舍放到发生分区的模型中解释。

2. [复制策略](03-replication-and-consistency/01-replication-strategies.md) → [Raft](02-consensus-protocols/01-Raft.md)。

   给三副本记录加入主节点失联和恢复。自检：区分收到、持久化、提交和应用；用多数派和任期解释为什么落后的节点不能任意宣布成功。手工轨迹先于完整协议实现。

3. [消息语义](07-messages-and-streams/01-message-semantics.md) → [消费组与协作](07-messages-and-streams/03-consumer-groups-and-collaboration.md) → [分布式追踪](08-observability/01-distributed-tracing.md)。

   把任务写入、执行、结果落库和确认画成一条链。自检：在每个边界模拟崩溃，指出哪一步可能重复，并给出幂等键和持久提交点。

## 选读与前置边界

[Paxos](02-consensus-protocols/02-Paxos.md)、[分布式事务](03-replication-and-consistency/03-distributed-transactions.md)在主线之后读。容量扩大时再读[分片策略](04-partitioning-and-routing/02-sharding-strategies.md)与[动态再平衡](04-partitioning-and-routing/03-dynamic-rebalancing.md)。服务发现和 Gossip 回答成员信息传播的问题，不能替代共识中的安全性证明。

## 完成主线的交付物

交付后台任务服务的协议草图、至少三条失败轨迹，以及每条轨迹下的最终状态、重复风险和恢复方式。消息积压继续接[排队论](../theory/03-queueing-theory/index.md)，扩缩容振荡接[控制理论](../theory/02-control-theory/index.md)；一致性、等待时间和控制稳定性需要各自的证据。

首次阅读允许跳过长证明和实现细节，但要先完成各阶段自检。出现“知道术语、解释不了结果”时，回到当前例子改变一个条件，再进入下一篇；不需要先通读整个目录。
