CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
构建可扩展系统/课时/CAP 定理
RawBlame
课时目录12 节

构建可扩展系统

  1. 01可扩展性是什么
  2. 02CAP 定理
  3. 03无状态服务
  4. 04缓存与读扩展
  5. 05分片策略
  6. 06数据复制
  7. 07N+1 查询问题
  8. 08负载均衡
  9. 09背压与限流
  10. 10负载转移
  11. 11读写分离
  12. 12综合练习

CAP 定理

一致性、可用性、分区容忍;工程取舍。

35 分钟

CAP 定理

分布式系统无法同时完美满足 一致性(C)、可用性(A) 与 分区容忍(P)。CAP 不是口号,而是帮你在网络抖动、节点宕机时做 工程取舍 的框架。对应路线图 building-for-scale 下的分布式基础节点。

学习目标

  • 用业务语言解释 C、A、P 各代表什么
  • 判断常见场景(支付、Feed、配置中心)偏向 CP 还是 AP
  • 避免「CAP 选一边」的简化误解,理解 PACELC 等延伸思考

核心概念

属性含义用户可感知表现
C 一致性所有节点读到相同最新数据余额、库存不会「各看各的」
A 可用性每个请求都能得到响应(非错误/超时)页面总能打开,哪怕稍旧
P 分区容忍网络断连时系统仍能继续工作跨机房链路中断时不整体瘫痪

分区(Partition)在分布式里迟早发生——因此 P 通常是前提,实际在 C 与 A 之间权衡:

  • CP:强一致优先,可能拒绝写入(如 ZooKeeper 选主期间)
  • AP:可用优先,允许短暂不一致(如 DNS、多副本最终一致)
网络分区发生 → 选:停写保一致(CP) vs 继续服务接受旧读(AP)

Java 后端常见映射:订单扣库存偏 CP;社交点赞计数偏 AP。复制与分片细节见 scale-replication、postgresql-essentials。

工程取舍清单

  1. 这笔数据错了会不会赔钱?→ 偏 CP
  2. 短暂旧数据用户能否接受?→ 可偏 AP + 补偿
  3. 能否用 异步复制 + 读己之写 折中?→ 见 scale-read-write

练习

  • 为你负责的三个 API 标注 CP/AP 倾向并写一句理由
  • 阅读 reliability-essentials 中关于超时与重试的课,思考与 CAP 的关系
  • 讨论:Redis 主从切换瞬间,算 CP 还是 AP?

小结

CAP 帮你在分区不可避免时诚实选择:要正确还是要响应——没有银弹,只有业务匹配。

加载本节练习…
← 上一课可扩展性是什么
下一课 →无状态服务