请解释分布式系统中的 CAP 定理包含哪些核心组成部分,并说明 ZooKeeper 在分布式协调场景下针对 CAP 各属性做出了怎样的权衡选择?
考察说明
考察对分布式系统基本理论 CAP 的理解,以及 ZooKeeper 在一致性、可用性、分区容错性上的实际取舍。
回答思路
- 【回答框架 1】CAP 定理指出分布式系统在一致性(C)、可用性(A)和分区容错性(P)三者中只能同时满足两个。其中 P 是分布式系统的必要前提,因为网络分区不可避免,因此实际设计通常是在 C 和 A 之间权衡,即 CP 或 AP 系统。
- 【回答框架 2】ZooKeeper 是 CP 系统,它优先保证强一致性和分区容错性。当集群发生分区时,ZooKeeper 会牺牲可用性,即如果无法保证大多数节点(Quorum)达成一致,它将拒绝服务,以此确保数据一致性。
- 【回答框架 3】ZooKeeper 采用 Zab 协议实现原子广播,保证事务的顺序一致性和最终一致(强一致)。在选举和同步过程中,节点可能暂时不可用,但一旦恢复,数据会同步到最新状态。
- 【回答框架 4】对比其他系统,比如 Eureka 是 AP 系统,它注重可用性,允许节点间数据不一致,但保证服务注册和发现功能持续可用。而 ZooKeeper 则明确选择 CP。
- 【关键点 1】CAP 中 P 是分布式系统必须满足的,实际取舍是 CP 或 AP。
- 【关键点 2】ZooKeeper 属于 CP 系统,优先保证强一致性和分区容忍。
- 【关键点 3】Zab 协议实现原子广播,确保事务顺序一致。
- 【关键点 4】分区时 ZooKeeper 会牺牲可用性,确保多数派一致。
- 【易错点 1】不要误认为 CAP 可以任意三选二,实际 P 通常必须满足。
- 【易错点 2】不要将 ZooKeeper 的 CP 特性等同于绝对可靠,它仍有可用性下降风险。