当前位置: 首页 > ai >正文

CAP 理论笔记

一、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 取舍

系统类型选择典型案例
单机数据库CAMySQL 单机
分布式协调服务CPZookeeper、etcd
分布式缓存系统APRedis 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系统能容忍分区故障并继续提供服务所有分布式系统必须具备的能力
http://www.xdnf.cn/news/16913.html

相关文章:

  • 前端开发(HTML,CSS,VUE,JS)从入门到精通!第四天(DOM编程和AJAX异步交互)
  • Mysql深入学习:InnoDB执行引擎篇
  • K8S几种常见CNI深入比较
  • Vue+SpringBoot+langchain4j实战案例:实现AI消息问答 及 Markdown打字机渲染效果
  • C语言与数据结构:从基础到实战
  • 基于 Spring Boot + Vue 实现人脸采集功能全流程
  • 大模型智能体(Agent)技术全景:架构演进、协作范式与应用前沿
  • Selenium Web 自动化
  • 【AI论文】ScreenCoder:通过模块化多模态智能体推动前端自动化中的视觉到代码生成技术发展
  • 【Django】-9- 单元测试和集成测试(上)
  • 使用 Spring Initializr 生成项目结构:Java 开发效率提升指南
  • centos9 安装docker engine
  • react native中markdown添加数学公式的支持
  • 【大模型核心技术】Agent 理论与实战
  • 【项目日志|苍穹外卖】 Day1:项目环境搭建与架构设计
  • 【Excel】利用函数和Power Query进行数据分析
  • NX969NX972美光固态闪存NX975NX977
  • Java,八股,cv,算法——双非研0四修之路day24
  • javaweb开发之Servlet笔记
  • Android 优化 - 日志 Log
  • 【MySQL进阶】------MySQL程序
  • 自动驾驶控制算法——LQR控制算法
  • MySQL极简安装挑战
  • MySQL事务与存储引擎的学习(一)
  • 智能化设备维护:开启高效运维新时代
  • 新手向:Python制作贪吃蛇游戏(Pygame)
  • 力扣经典算法篇-42-矩阵置零(辅助数组标记法,使用两个标记变量)
  • LangChain4J入门:接入大模型
  • 解决飞书文档中PDF文档禁止下载的问题
  • TCP-单线程版本