CAP 理论笔记

发布于:2025-08-04 ⋅ 阅读:(13) ⋅ 点赞:(0)

一、CAP 理论概述

CAP 理论由 Eric Brewer 于 2000 年提出,并在 2002 年被正式证明。它描述了分布式系统在 一致性(Consistency)可用性(Availability)分区容忍性(Partition Tolerance) 三个特性之间的取舍。

CAP 三个核心概念:

  • C(Consistency,一致性)
    所有节点在同一时间的数据视图一致。
    表现:客户端无论连接哪个节点,都能读取到最新数据。
  • A(Availability,可用性)
    每个请求都能在有限时间内得到响应(成功或失败)。
    表现:即使部分节点宕机,系统也能正常对外提供服务。
  • P(Partition Tolerance,分区容忍性)
    系统能够容忍网络分区(节点间通信中断)并继续提供服务。
    表现:即使集群被分隔成多个子集群,系统仍能运行。

二、为什么不能同时满足 CAP 三者?

原因:
分布式系统不可避免会出现 网络分区(P),如果系统要求 可用性(A),必须继续响应请求;如果要求 一致性(C),必须等待所有节点同步完成再返回结果。这两者在网络分区时是冲突的。

直观示例:

  • 如果要保证 一致性(C)
    网络分区后,某个节点接到写请求,必须等待另一个分区的节点确认,导致无法响应,降低可用性。
  • 如果要保证 可用性(A)
    网络分区后,节点仍然独立处理请求,但不同分区的数据可能不一致。

三、CAP 三者的关系

CAP 理论核心结论:

在分布式系统中,网络分区(P)必然会发生,因此只能在 一致性(C)和可用性(A)之间取舍

对应组合:

  • CP 系统(Consistency + Partition Tolerance)
    特点:牺牲可用性,保证一致性。
    示例:ZooKeeper、HBase。
  • AP 系统(Availability + Partition Tolerance)
    特点:牺牲强一致性,保证可用性,采用最终一致性。
    示例:Cassandra、Eureka。
  • CA 系统(Consistency + Availability)
    特点:不考虑网络分区(单机数据库)。
    示例:MySQL 单机模式。

四、分布式场景下的 CAP 取舍

系统类型 选择 典型案例
单机数据库 CA MySQL 单机
分布式协调服务 CP Zookeeper、etcd
分布式缓存系统 AP Redis Cluster、Cassandra

五、CAP 理论在常见系统中的应用

1. MySQL 主从复制

  • 目标:数据一致性高(主从同步),但延迟可能影响可用性。

  • 方案:

    • 强一致性(CP):主从同步采用 同步复制,但可用性下降。
    • 高可用(AP):主从同步采用 异步复制,提升可用性,但可能出现短暂不一致。

2. Redis Cluster

  • 目标:高可用性。

  • Redis 选择 AP

    • 分区时,仍然接受请求,保证可用性。
    • 通过 异步复制 + 最终一致性 解决数据一致性问题。

3. ZooKeeper

  • 目标:强一致性。

  • ZooKeeper 选择 CP

    • 网络分区时,为保持一致性,部分节点拒绝服务,降低可用性。

六、CAP 与 BASE 理论

CAP 是基础理论,而实际工程中,很多系统选择 AP + 最终一致性,这就是 BASE 理论

  • Basically Available(基本可用)
  • Soft State(软状态)
  • Eventually Consistent(最终一致性)

七、图解 CAP

        CAP 三角关系
         +-----------+
         |    C      |
         |           |
         |           |
    +----+----+      |
    |         |      |
    A         P
  • CA:单机系统。
  • CP:一致性 + 分区容忍 → 牺牲可用性。
  • AP:可用性 + 分区容忍 → 牺牲强一致性。

八、面试高频问答

Q1:CAP 理论中,为什么不能同时满足三者?

  • 网络分区(P)在分布式系统中必然发生。
  • 分区发生时,保证 一致性(C) 需要同步确认,降低可用性。
  • 保证 可用性(A) 则必须放弃强一致性。

Q2:MySQL 属于 CAP 哪种?

  • 单机:CA。

  • 主从复制:

    • 同步复制:CP。
    • 异步复制:AP。

Q3:Redis 属于 CAP 哪种?

  • Redis Cluster:AP(高可用 + 最终一致性)。

Q4:ZooKeeper 属于哪种?

  • CP(牺牲可用性,保证一致性)。

Q5:CAP 理论与 BASE 理论区别?

  • CAP:理论模型,三者不可兼得。
  • BASE:工程实践,强调最终一致性。

九、总结表

特性 含义 典型场景
C 所有节点数据一致 事务数据库
A 每次请求都能得到响应 分布式缓存
P 系统能容忍分区故障并继续提供服务 所有分布式系统必须具备的能力

网站公告

今日签到

点亮在社区的每一天
去签到