1. CAP 定理是什么?怎么理解"三选二"?

核心结论:分布式系统必须保证 P(网络分区不可避免),所以在 P 发生时只能在 C 和 A 之间二选一:

注意:不是"平时三选二",而是"发生分区时选 C 还是 A"。平时可以同时满足。

🎯 面试要点

  • 经典对比:ZooKeeper(CP)vs Eureka(AP)——服务注册选型问题
  • 一致性细分:强一致(CP)、弱一致、最终一致(AP + 异步收敛)
  • 面试常问"你系统是 CP 还是 AP":答"核心数据 CP(订单/账户),非核心 AP(点赞数/浏览数)"最加分

2. BASE 理论?

BASE 是 CAP 中 AP 的实践展开:用"最终一致"换"可用性"。分布式事务的柔性方案(本地消息表、TCC、Saga)都是 BASE 思想的落地。

🎯 面试要点

  • BASE 与 ACID 是对立统一:强一致场景用 ACID(单库事务),跨库降级用 BASE(最终一致)
  • 提到"对账"(定时比对修复)是最终一致落地的关键手段

3. 分布式系统的幂等设计?

为什么必须幂等:网络重试(RPC 超时重发)、MQ 重复投递、用户重复提交——分布式环境下"一次请求被执行多次"是常态。

方案:

🎯 面试要点

  • 幂等设计三问:什么能唯一标识一次请求?(biz_id/请求号)哪里做约束?(DB/Redis)失败怎么处理?(返回已处理结果)
  • GET 天然幂等、DELETE 幂等、POST 不幂等——REST 设计也遵循

🎤 常见面试追问

  1. CAP 怎么理解"三选二"?——不是平时三选二:网络分区(P)发生时,只能在 C(拒绝服务保一致)和 A(继续服务可能不一致)里选一个。平时三者可兼得。
  2. 你的系统是 CP 还是 AP?——按数据分级:核心数据(订单/账户)CP,非核心(浏览数/点赞)AP。只答"AP"或"CP"都是扣分项。
  3. 最终一致靠什么实现?——异步重试 + 补偿 + 对账(定时比对修复)。BASE 的落地:本地消息表/事务消息/MQ 重试都是手段。
  4. 幂等为什么是分布式的必修课?——网络重试、MQ 重复投递、用户重复提交都是常态——"一次请求被执行多次"必须结果一致(唯一约束/状态机)。
  5. 强一致和最终一致怎么选?——强一致:单库事务/Raft(ZooKeeper、ETCD),性能受限;最终一致:异步补偿(MQ),高可用。业务能容忍短暂不一致就选最终一致。

📖 名词解释(本页术语)

术语 大白话解释
CAP 定理分布式系统的三个属性:一致性(所有节点数据相同)、可用性(请求总有响应)、分区容错(网络断了还能工作)——分区发生时只能在 C 和 A 中选。
CP / AP两种取舍:CP 宁停服务保一致(ZooKeeper 的写路径、etcd);AP 宁可数据暂时不一致也要可用(Eureka、缓存)。ZK 的读可能读到旧数据。
BASE 理论AP 的实践展开:基本可用 + 软状态 + 最终一致——用"最终一致"换可用性。
最终一致数据同步需要时间,但经过一段时间(重试/补偿/对账)后收敛到一致。
强一致写操作完成后,任何读立即看到最新值(单库事务、Raft 协议)。
幂等同一操作执行 N 次结果 = 执行 1 次。网络重试时代的保命符。
对账定时比对两边数据、修复差异——最终一致的兜底手段(资金系统必备)。
⚠️ 本页面由 AI 生成,内容仅供参考,请以官方文档和实际源码为准。