CAP理论
核心定位:分布式系统底层基石,弄懂CAP才能看懂Nacos、Zookeeper、Redis集群选型。
一、CAP 理论基础概念
1、定义
CAP 是分布式系统不可能三角,分别代表:一致性、可用性、分区容错性。
核心结论:三者无法同时满足,分布式系统只能三选二。
2、三大特性详解
(1)C:Consistency 一致性
含义:集群中所有节点,同一时刻数据完全一致。
-
客户端无论访问哪一个节点,获取的数据都是最新、一模一样
-
写入数据后,必须同步完成才允许对外响应
-
牺牲性能,保证数据准确
(2)A:Availability 可用性
含义:任何时刻请求都能正常响应,不会阻塞、不会报错。
-
服务永不宕机、永不拒绝请求
-
节点宕机不影响整体服务使用
-
允许返回短暂旧数据,优先保证服务可用
(3)P:Partition Tolerance 分区容错性
含义:网络断网、延迟、节点隔离(网络分区),系统依旧可以正常运行。
-
分布式部署多台服务器,网络故障必然发生
-
分布式系统P必须保留,无法舍弃
二、CAP 三种组合(工程实际只有两种)
1、AP 模式(可用性 + 分区容错)
(1)特点
-
舍弃强一致性
-
保证高可用、永不宕机
-
允许短暂数据不一致,最终自动同步(最终一致性)
(2)适用场景
服务注册、发现、心跳监控(可以短暂数据不一致)
(3)典型中间件
Nacos注册中心、Eureka、Redis集群
2、CP 模式(一致性 + 分区容错)
(1)特点
-
舍弃部分可用性
-
必须保证所有节点数据强一致
-
网络异常、同步未完成时,拒绝响应、禁止写入
(2)适用场景
配置管理、元数据、分布式锁(数据绝对不能错乱)
(3)典型中间件
Nacos配置中心、Zookeeper
3、CA 模式(不存在)
-
舍弃分区容错P
-
只能单机部署,不属于分布式系统
-
生产环境几乎不用
三、Nacos 结合 CAP 🔴
1、Nacos 注册中心 → AP
-
采用 Distro协议
-
去中心化、异步同步、高可用
-
服务宁可数据延迟,不能宕机不可用
2、Nacos 配置中心 → CP
-
采用 Raft协议
-
主从选举、过半同步、强一致性
-
配置宁可暂时不可改,不能错乱脏数据
四、高频面试对比总结
| 模式 | 取舍 | 特征 | 典型组件 |
|---|---|---|---|
| AP | 放弃强一致性 | 高可用、最终一致 | Nacos注册、Eureka、Redis |
| CP | 放弃部分可用性 | 强一致、阻塞容错 | Nacos配置、Zookeeper |
五、总结
-
CAP理论是分布式不可能三角,包含一致性C、可用性A、分区容错性P,三者不能同时满足。
-
分布式系统网络分区不可避免,P必须保留,因此只能在AP和CP之间选择。
-
AP舍弃强一致性,保证高可用、最终一致,适合服务注册发现;
-
CP舍弃可用性,保证数据强一致,适合配置、分布式锁等敏感数据。
AP:能用就行,数据晚点一致没关系。
CP:数据必须对,暂时不能用也可以。