CAP 理论是什么?在数据系统里如何理解一致性?
CAP一致性分布式
考察意图
系统设计与数仓同步常被问到。考察分布式基本盘,能连到「主从延迟/对账」。
回答框架
- C/A/P 定义与「网络分区时的取舍」。
- 澄清:不是永远只能三角选二的口号理解。
- 联系实践:缓存、主从、数仓最终一致。
参考答案(口述版)
CAP:在分布式系统中,一致性(Consistency)、可用性(Availability)、分区容忍(Partition tolerance)难以在发生网络分区时同时完美满足。现代分布式系统必须假设 P 可能发生,因此关键时刻往往在 C 与 A 间权衡。
更细的一致性光谱:
- 强一致:读必看到最新写(体验简单,成本高)
- 最终一致:短期可能旧,但约定时间内收敛(缓存、主从复制常见)
数据工作中的映射:
- 业务库主从延迟 → 读从库可能旧
- 数仓 T+1 → 天生最终一致,靠分区就绪与对账
- 指标服务:要声明「数据截至时间」避免假强一致
回答避免背诵「只能三选二」教条,强调场景化取舍与用户可读的数据新鲜度。
关键词
分区容忍最终一致主从延迟新鲜度
面试官可能的追问
追问 1:BASE 是什么?
Basically Available、Soft state、Eventually consistent,面向高可用的柔性一致思路,和传统 ACID 强事务相对。
常见踩坑
- 把 CAP 的 C 和 ACID 的 C 混为一谈
- 宣称系统「同时满足 CAP」却说不清降级策略
记忆锚点
有分区时要在一致与可用间权衡;对数人要声明数据新鲜度。