开篇词 掌握好学习路径,分布式系统原来如此简单
导读:以前因后果为脉络,串起网状知识体系
分布式系统解决了什么问题
- 水平扩展:解决单机性能瓶颈和用户量/数据量爆炸
- 高可用:解决单点问题
- 分而治之:解决大规模系统迭代效率和成本
分布式系统引入的新问题
- 服务发现与注册、路由与负载均衡、配置中心
- 分布式锁、重试+幂等
- 限流、熔断、降级、弹性扩容
- 分布式链路追踪与监控告警
1978 年,Lamport 在 Time, Clocks, and the Ordering of Events in a Distributed System 中提出了逻辑时钟的概念,来解决分布式系统中区分事件发生的时序问题。
逻辑时钟指的是分布式系统中用于区分事件的发生顺序的时间机制。
ZooKeeper 并没有直接采用 Paxos 算法,而是采用了名为 ZAB 的一致性协议。ZAB 协议不是 Paxos 算法,只是比较类似,二者在操作上并不相同。Multi-Paxos 实现的是一系列值的共识,不关心最终达成共识的值是什么,不关心各值的顺序。而 ZooKeeper 需要确保操作的顺序性。
ZAB 协议是 Zookeeper 专门设计的一种支持故障恢复的原子广播协议。
ZAB 协议是 ZooKeeper 的数据一致性和高可用解决方案。

发展、指标、分类、挑战物理时钟、逻辑时钟、向量时钟、全序、偏序ACID、CAP、BASE、一致性共识共识、Paxos、两阶段提交、多数派决议共识、Raft、选主、日志复制、安全性共识、ZAB、ZooKeeperGossip、去中心化、最终一致性、反熵、谣言传播在分布式系统中,数据通常会被复制到多个节点上以提高可用性和性能。然而,当网络发生分区(节点之间无法通信)时,系统就面临一个根本性的抉择:是优先保证数据一致性(C),还是优先保证服务可用性(A)?这就是 CAP 定理 所揭示的核心矛盾。
CAP 定理由 Eric Brewer 于 1998 年提出,并在 2002 年由 Seth Gilbert 和 Nancy Lynch 正式证明。它指出:一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)这三个特性,最多只能同时满足其中两个。
扩展
分布式系统(Distributed System) 是指由多台独立计算机通过网络连接协同工作的系统,这些计算机在用户看来就像是一台单一的计算机。分布式系统的核心目标是:通过将计算、存储、网络等资源分散到多个节点上,从而突破单机的性能瓶颈,提升系统的整体处理能力、可用性和可扩展性。
分布式系统广泛应用于互联网、大数据、云计算、物联网等领域,是现代大型应用系统的基石。典型的分布式系统包括:分布式数据库(如 TiDB、OceanBase)、分布式文件系统(如 HDFS、GFS)、分布式缓存(如 Redis Cluster)、分布式消息队列(如 Kafka、RocketMQ)、分布式协调服务(如 ZooKeeper、etcd)等。