D
AI
学习工作台
8 周后端冲刺2026-05-221 分钟阅读

CAP 与一致性级别

CAP 定理、BASE、强一致与最终一致

8周冲刺week7分布式CAP记笔记标记疑惑

分布式挑战

网络延迟、丢包、节点故障不可避免。单机事务 ACID 无法直接套多节点,需一致性模型与协调协议。

CAP

  • C Consistency:所有节点同一时刻看到相同数据(线性一致视角)。
  • A Availability:每个请求得到非错误响应(不保证最新)。
  • P Partition tolerance:网络分区仍运行。
实践:分区时选 CP 或 AP。ZooKeeper/etcd 偏 CP;DNS/CDN 偏 AP。

一致性谱系

| 级别 | 说明 | |------|------| | 强一致 | 写后读立即可见 | | 因果一致 | 有因果关系的操作有序 | | 最终一致 | 收敛到相同,中间不一致 |

MySQL 主从 异步复制 是最终一致;读主强一致。

BASE 与业务

促销库存可短暂超卖再补偿(业务层);账户余额需强一致或分布式事务(Seata、2PC 慎用)。

PACELC 扩展

无分区时在 LatencyConsistency 间权衡:Cosmos 可调、Dynamo 可调 QUORUM。

与 Week 5/6 联系

  • Redis 主从延迟 → 最终一致读。
  • Kafka ISR ack → 一致性与可用折中。
  • week07-raft-distributed 讲如何实现共识。

面试答题

不要背「CAP 三选二」口号;说 分区下具体行为:返回错误 vs 返回旧值,如何监控与补偿。

实战巩固与面试表达

本篇属于 8 周冲刺 week07-cap-consistency 主题。复习时先闭卷回答 frontmatter 中三张 flashcard,再展开口述两个「为什么」:为什么这种方案能 work、边界失败时如何降级。与相邻章节对照:算法篇强调复杂度与模板,Go 篇强调工程默认写法,中间件篇强调线上故障案例。

动手与自检清单

用 25 分钟限时做 1 道相关练习题或画出一张架构/数据结构示意图;用 5 分钟写 STAR 片段说明你在项目里是否用过类似技术。记录 3 个面试追问及你的标准答法,存入 /zh/notebook/master-plan 笔记。若某点不熟,回到对应 /chapters 交互 Lab 重新走一遍流程,比死记卡片更有效。

易错点提醒

避免只背名词不会画图;避免只说优点不谈 trade-off(性能、一致性、运维成本至少提一项);避免把学习 Demo 说成百万 QPS 生产。回答时使用「场景 → 方案 → 结果 → 反思」四段式,体现工程成熟度。

自检

设计跨机房用户配置:选 AP 还是 CP?说明理由。下一篇:Raft。

知识卡片

问题

CAP 如何理解?

点击翻转查看答案

答案

分区发生时 P 必然,只能在 C 与 A 间权衡:CP 牺牲可用(拒绝服务保一致),AP 牺牲强一致(返回可能旧值)。

问题

BASE 是什么?

点击翻转查看答案

答案

Basically Available 基本可用、Soft state 软状态、Eventually consistent 最终一致;互联网大规模系统常见哲学。

问题

线性一致性与顺序一致性区别?

点击翻转查看答案

答案

线性一致:操作像全局原子时钟;顺序一致:所有节点看到相同顺序,但不要求与实时一致;弱于线性一致。