D
AI
学习工作台
后端面试题2026-03-171 分钟阅读

分布式系统面试

CAP、一致性与限流

分布式CAP一致性限流记笔记标记疑惑

CAP 与 BASE

CAP:分布式系统最多同时满足一致性(C)、可用性(A)、分区容错(P)中的两个。网络分区时,要么保证一致(拒绝部分请求),要么保证可用(可能读到旧数据)。

BASE:对 CAP 的工程化妥协。BA(Basically Available):允许部分不可用;S(Soft state):中间状态可存在;E(Eventually consistent):最终一致。牺牲强一致换可用性和性能。

实际系统:金融、库存选 CP;社交、推荐选 AP。需根据业务权衡。

一致性

强一致:读必读到最新写,实现成本高(如 Paxos、Raft 同步复制)。

最终一致:允许短暂不一致,通过异步复制、冲突解决最终一致。适合多数互联网场景。

因果一致:有因果关系的操作顺序一致;无因果的可不同节点看到不同顺序。向量时钟、版本向量可追踪因果。

一致性协议:Paxos/Raft 用于共识;Gossip 用于最终一致传播;两阶段提交(2PC)用于分布式事务,存在阻塞和协调者单点问题。

限流与熔断

限流:保护下游,防止过载。固定窗口:单位时间内的请求数限制,边界处可能突发。滑动窗口:平滑边界。漏桶:固定流出速率,平滑流量。令牌桶:固定放入速率,允许突发(桶有容量时)。

熔断:下游故障时快速失败,避免雪崩。状态:关闭 → 打开(失败率超阈值)→ 半开(试探恢复)。如 Hystrix、Resilience4j。

降级:非核心功能关闭或返回默认值,保证核心可用。

知识卡片

问题

CAP 定理中,为什么实际系统通常选择 CP 或 AP?

点击翻转查看答案

答案

网络分区不可避免,必须在 C 和 A 间取舍。CP 牺牲可用性保证一致性(如 ZooKeeper);AP 牺牲强一致保证可用(如 Cassandra)。

问题

强一致、最终一致、因果一致分别是什么?

点击翻转查看答案

答案

强一致:读总能读到最新写;最终一致:一段时间后一致;因果一致:有因果关系的操作顺序一致,无因果的可乱序。

问题

令牌桶和漏桶限流有何区别?

点击翻转查看答案

答案

漏桶:固定速率流出,请求以任意速率进入桶,超则拒绝;令牌桶:固定速率放令牌,请求消耗令牌,可应对突发(桶内积累令牌)。