分布式系统与架构
面试官翻到简历上"负责过高并发分布式系统设计"这一行,开口问道:
"你们用的是什么一致性方案?强一致还是最终一致?为什么不用 2PC?"
候选人小张支支吾吾说了句"看场景",面试官眉头一皱,继续追问:"那你知不知道 2PC 有什么问题?为什么 Seata 选择了 AT 模式而不是 2PC?"
小张卡住了。
【架构权衡】 这道题背后考的不是背书,是候选人有没有真正在生产环境里权衡过一致性和可用性的取舍。能说清楚"为什么不用"而不是"用什么",才是 P7 和 P6 的分水岭。
分布式系统是现代后端工程师的核心战场,也是面试官最爱深挖的领域。从理论到实践,从方案选型到生产避坑,这一模块覆盖分布式系统的全链路知识。
一、内容总览
本模块围绕分布式系统的四大核心方向展开,每个方向都是从生产事故和架构评审中沉淀出来的实战经验:
1.1 分布式事务 🔴
命中率最高、踩坑最多的领域。
覆盖 2PC、3PC、TCC、Saga、本地消息表等主流事务模式,以及 Seata 在阿里的工程实践。
1.2 分布式理论 🟡
CAP、BASE、PACELE 三大理论的正确理解与工程落地。
1.3 分布式锁 🔴
生产环境里用过 Redis 锁但没踩过坑的,不算真正用过。
覆盖 Redis 分布式锁、RedLock、ZooKeeper 锁、etcd 锁、数据库悲观锁与乐观锁的完整选型对比。
1.4 高可用设计 🟡
SRE 视角:怎么让系统在故障面前保持可用。
覆盖限流、熔断、降级、多活、单元化、混沌工程、容量规划等高可用核心手段。
二、学习路径指引
第一阶段:打牢理论基础(1-2 周)
从 CAP 理论 入手,搞清楚"一致性、可用性、分区容错性"三选二的真正含义。别急着背结论,先理解为什么这是一个权衡问题。
接着看 BASE 理论,理解现实生产环境里为什么最终一致比强一致更实用。然后可以补充 PACELE 理论 进一步加深对 CA/CP 权衡的理解。
理论阶段的关键问题:为什么 Redis Cluster 选择弱化一致性?为什么 Zookeeper 不适合做注册中心?
第二阶段:掌握事务模式(2-3 周)
分布式事务是最容易翻车的领域,建议按这个顺序啃:
- 先看 2PC 协议 和 3PC 协议,理解二者的差异和各自缺陷
- 重点看 2PC 的问题分析,这是面试高频深水区
- 再学 TCC 模式,结合 Seata TCC 看阿里工程实践
- 最后看 Saga 模式 和 本地消息表
事务模式的选择没有银弹,关键看你愿意为一致性付出多少性能和复杂度代价。
第三阶段:搞定分布式锁(1-2 周)
分布式锁看似简单,但生产环境的坑多到令人发指:
- 先看 Redis 分布式锁 和 RedLock
- 接着看 RedLock 的争议与批评,理解为什么不是所有人都信任它
- 对比 ZooKeeper 锁 和 etcd 锁
- 最后看 锁的选型对比 做出工程决策
分布式锁的学习重点不在于记住谁比谁快,而在于理解每种锁在节点故障、网络分区、时钟漂移等异常场景下的行为。
第四阶段:高可用工程实践(持续)
高可用是运维经验和架构设计的结合,需要持续积累:
三、核心能力矩阵
四、生产避坑速查
五、面试高频考点
分布式系统模块的面试核心在于三个追问:
第一追问:这个方案在节点宕机时还能正常工作吗?
考察候选人对故障模型的理解。说到任何方案,必须能讲清楚在节点故障、网络分区、时钟漂移等异常场景下的行为。
第二追问:性能和一致性你怎么权衡的?
考察候选人的工程决策能力。能说出"我们选择了最终一致,因为业务可以接受"还不够,要能说清楚这个选择背后的业务约束和技术代价。
第三追问:你踩过什么坑?怎么排查和修复的?
考察候选人的实战深度。没有踩过坑的方案选型是纸上谈兵,能讲清楚排障过程和修复方案的才是真正做过的人。
本模块持续更新中,涵盖从理论到生产实践的全链路知识。每个方向都是从真实架构评审和生产事故中提炼出来的经验,没有空话,只有干货。