分布式面试题
目录概述
分布式相关面试题涉及 CAP/BASE 理论、一致性算法、分布式事务、消息队列、注册中心等,是 P7 候选人的核心考察区。
这个目录帮你建立分布式系统的全局视角,理解架构权衡背后的本质。
【面试官心理】 我出分布式题,通常从理论开始:"CAP 定理是什么?你们用 CP 还是 AP?" 能说出"一致性、可用性、分区容错"的占 80%,能说清楚 CP 和 AP 各自适用场景的占 30%,能举出实际系统案例(Zookeeper 是 CP、Eureka 是 AP)的只有 10%。
内容范围
核心主题
分布式理论基础:
- CAP 定理:一致性、可用性、分区容错,三选二的权衡
- BASE 理论:基本可用、软状态、最终一致性
- 一致性模型:强一致性、弱一致性、最终一致性
- 拜占庭将军问题与 Paxos、Raft 算法
一致性算法:
- Paxos 算法: proposer、acceptor、learner 角色,三阶段提交
- Raft 算法:leader 选举、日志复制、成员变更
- ZAB 协议:Zookeeper 原子广播
- Gossip 协议:最终一致性、去中心化
- 拜占庭容错:PBFT 算法
分布式事务:
- 两阶段提交 2PC:协调者、单点故障、数据不一致
- 三阶段提交 3PC:CanCommit、PreCommit、DoCommit
- TCC 模式:Try、Confirm、Cancel,空回滚、悬挂问题
- 本地消息表:最终一致性、消息可靠性
- 最大努力通知:重试机制、核对服务
- Saga 模式:编排模式 vs协同模式
分布式协调:
- Zookeeper:ZAB 协议、watch 机制、选举算法
- Etcd:Raft 协议、MVCC、Lease
- Consul:服务发现、Health Check
- Nacos:配置中心、服务发现
消息队列:
- Kafka:分区、ISR、顺序消费、事务消息
- RocketMQ:事务消息、定时消息、延迟队列
- RabbitMQ:交换机、路由、队列,镜像队列
- 消息可靠性:生产端可靠性、消费端可靠性
- 消息顺序性:单分区顺序、多分区全局顺序
- 消息幂等性:唯一消息 ID、数据库去重、分布式锁
分布式锁:
- Redis 分布式锁:SETNX、Redlock、Redisson
- Zookeeper 分布式锁:临时顺序节点、watch 机制
- 数据库分布式锁:主键唯一、悲观锁
- 死锁检测:超时机制、watch dog
分布式缓存:
- Redis Cluster:槽位分配、故障转移
- Codis:代理分片、槽位迁移
- 缓存路由:一致性 hash、虚拟节点
- 缓存预热:系统启动时加载热点数据
服务治理:
- 服务注册与发现:心跳机制、健康检查
- 负载均衡:轮询、随机、加权、一致性 hash
- 服务熔断:Hystrix、Sentinel、熔断器模式
- 服务限流:计数器、滑动窗口、令牌桶、漏桶
- 服务降级:手动降级、自动降级
面试题分级
高频必考题 🔴
CAP 定理与 BASE 理论
面试官问:"CAP 定理是什么?为什么 nosql 数据库通常选择 AP?"
能说出"一致性、可用性、分区容错"的占 80%,能说清楚 CP 和 AP 各自权衡的占 40%,能举出实际系统案例并说清楚选型原因的占 10%。
【面试官心理】 我问他 CAP,其实想探查的是:他有没有真正在分布式系统里做过权衡。不是背结论,而是能说清楚"我们业务场景是什么,我们选了 AP 为什么这么选"。能讲清楚 trade-off 的候选人,才是真的理解分布式。
分布式事务
面试官问:"你们用什么方案解决分布式事务问题?TCC 还是 Seata?"
能说出 2PC、3PC、TCC 的占 60%,能说清楚各自优缺点的占 30%,能根据业务场景给出合理方案的占 10%,能说出 Seata 模式的只有凤毛麟角。
Raft 算法
面试官问:"Raft 算法是怎么选主的?网络分区后怎么恢复?"
能说出"Term 编号、投票机制"的占 50%,能说清楚日志复制的占 30%,能说清楚节点故障后日志同步的占 10%,能画完整状态机的只有 5%。
中频常考题 🟡
- Zookeeper watch 机制
- Kafka 顺序消费
- 消息幂等性实现
- 分布式锁选型
- 服务注册与发现
低频了解题 🟢
- Gossip 协议原理
- PBFT 算法
- 命名服务
- 配置中心设计
学习路径指引
P6 候选人(中级社招)
先掌握分布式基础理论、CAP/BASE、常见分布式中间件。消息队列、分布式锁、注册中心要会使用。这个阶段能正确使用分布式组件即可。
P7 候选人(高级/架构方向)
必须理解分布式一致性算法、Raft/Paxos 原理。分布式事务要有实战经验,能根据业务场景选择合适方案。能设计分布式系统架构,理解高可用、高性能、低延迟的权衡。
【面试官心理】 P7 候选人聊分布式,我通常会问:"你们系统里遇到过什么分布式问题?怎么排查和解决的?" 能讲出完整案例的候选人,说明他真正在生产环境处理过分布式问题。
生产避坑
分布式锁失效
Redis 分布式锁在 GC 时可能失效:持有锁的进程 GC 导致锁过期,其他进程获取锁后原进程恢复并释放锁。解决方案:Redisson 看门狗机制、Zookeeper 临时节点。
消息积压
消费者故障导致消息积压,上游又持续发送。解决方案:消费者隔离、消息过期策略、死信队列。
服务雪崩
某个服务故障导致调用方超时堆积,最终整个系统不可用。解决方案:熔断、降级、限流、隔离。