Distributed Systems MOC
分布式系统学习入口,从部分失败、复制、一致性、分片、Leader Election 和服务发现,进入 etcd/ZooKeeper 协调、分布式事务、消息与微服务设计。
#moc
#growing
#backend
#architecture
[!info] related notes
Distributed Systems MOC
知识总览
filters:
and:
- 'file.ext == "md"'
- 'file.inFolder("z")'
- 'this.file.links.contains(file)'
- 'file.path != this.file.path'
formulas:
knowledge: 'file.asLink(title)'
properties:
formula.knowledge:
displayName: 知识
note.description:
displayName: Description
note.mastery:
displayName: Mastery
views:
- type: table
name: 知识总览
order:
- formula.knowledge
- note.description
- note.mastery
columnSize:
formula.knowledge: 280
note.description: 760
note.mastery: 56
[!abstract] 核心认识 分布式系统的难点不是“机器更多”,而是多个节点只有局部视角,通信会延迟、丢失和分区,节点会独立故障。所有复制、选主、锁、消息和事务设计,都在处理这种部分失败与不确定性。
一张图看主干
Partial Failure
→ Replication + Consistency
→ Quorum / Leader / Coordination
→ Sharding / Scale
→ Cross-node Transaction / Messaging
→ Recovery / Observability
推荐阅读顺序
- 分布式系统:partial failure 与局部视角。
- CAP 定理:网络分区出现时的一致性/可用性取舍。
- 数据复制:冗余、读扩展和故障切换。
- 一致性模型:客户端允许观察到什么。
- 数据分片:容量和吞吐如何水平拆分。
- Leader Election:谁有资格推进共享状态。
- 服务发现:动态实例如何被找到。
- 分布式锁:Lease、Owner、Fencing 与 stale client。
- etcd / ZooKeeper:协调系统中的 Revision、Session、Watch 和 Election。
- 分布式事务:2PC、Saga、Outbox 与补偿。
- 消息投递语义、幂等消费者。
核心关系
Replication 与 Sharding
Replication → 同一份数据有多个副本,主要解决可用性和读扩展
Sharding → 不同数据分布到不同节点,主要解决容量和吞吐
Consistency 与 Availability
Consistency 不是只有“强/弱”两个按钮。设计前要明确:读旧是否允许、因果关系是否重要、失败时继续服务还是拒绝不确定操作。
Leader、Lease 与 Fencing
Lease 或 Session 过期后,旧节点可能仍在运行。协调系统只撤销“资格”,外部资源还必须通过 epoch / fencing token / version check 拒绝旧 owner。
Transaction 与 Messaging
Business DB transaction
→ Outbox / CDC
→ Kafka / RabbitMQ
→ Idempotent Consumer
→ another DB / Redis / Elasticsearch / external API
Broker 内部事务不能自动覆盖跨数据库和第三方 API 的业务副作用。
抽象概念在真实组件中的映射
| 概念 | 组件示例 |
|---|---|
| Partition + Replication | Kafka、Elasticsearch、Redis Cluster |
| Consensus / Leader | etcd Raft、Kafka KRaft、RabbitMQ Quorum Queue |
| Lease / Session / Watch | etcd、ZooKeeper |
| Event Log / Offset | Kafka、Redis Stream |
| Routed Queue / ACK | RabbitMQ |
| Erasure Coding / Quorum | MinIO |
学习边界
求职阶段优先解释:
- partial failure 为什么比普通并发更难;
- CAP 的适用前提;
- replication 与 sharding 的区别;
- linearizable 与 eventual consistency;
- retry 为什么引入重复,为什么需要幂等;
- Lease 为什么不等于永久拥有外部资源;
- Outbox / Saga 为什么比“跨系统强事务”更常见。
Raft / Paxos 的证明和源码实现可以后置,但要理解 quorum、term/epoch、commit 和旧 Leader 隔离的目的。
掌握标准
- 能推演网络分区时不同节点各自看到什么。
- 能区分复制、分片、选主、锁和事务的职责。
- 能解释一个“写成功但响应丢失”的安全处理方式。
- 能说明消息至少一次投递为何要求业务幂等。
- 能用真实中间件说明抽象理论,而不是只背 CAP。