准备分布式系统面试,最容易踩的坑是把知识点背成一堆孤立概念:CAP 是一个点、RPC 是一个点、分布式锁是一个点、分布式事务又是一个点。
真正到面试里,面试官更关心的是:你能不能把这些技术放回真实系统里,讲清楚它们解决什么问题、带来什么代价、适合什么场景。
这篇文章是 JavaGuide 分布式系统内容的面试复习导航,不会重复搬运所有答案,而是帮你把分布式相关文章串起来,按面试准备顺序建立一条清晰路径。
分布式面试先抓主线
分布式系统面试通常围绕 4 条主线展开:
- 一致性与可用性的权衡:CAP、BASE、最终一致性、中心化与去中心化、共识算法。
- 跨节点通信与治理:RPC、注册发现、API 网关、配置中心。
- 分布式数据一致性问题:分布式 ID、分布式锁、分布式事务。
- 典型中间件与落地场景:ZooKeeper、Dubbo、Spring Cloud Gateway 等。
刚接触分布式系统时,很多人会先被一串名词砸中:CAP、BASE、Paxos、Raft、分布式锁、分布式事务。
这些概念都绕不开,但入门时直接钻进去,容易把分布式系统学成一堆互不相干的术语。更好的切入口是一个更土但更实用的问题:原来一台机器、一个进程、一个数据库就能完成的事情,为什么后来要拆到多台机器上?拆完以后,为什么一个超时、一次重试、一条消息重复投递,都会牵出这么多设计问题?
这篇文章先把“分布式系统是什么”讲清楚。Paxos、Raft、分布式事务不会展开推导,只把它们放回主线里,知道它们大概在解决哪类麻烦。
什么是分布式系统?
高可用系统面试考的不是“系统永远不出问题”,而是你是否理解:故障一定会发生,关键是系统能不能限制故障范围、快速恢复,并避免把小故障放大成全站事故。
这篇文章把 JavaGuide 现有高可用相关文章串成一条面试复习路线,适合准备后端开发、系统设计和中高级岗位面试。
高可用面试先建立故障视角
高可用设计可以从 5 个问题开始拆:
- 请求太多怎么办? 限流、排队、削峰。
- 下游变慢怎么办? 超时、重试、熔断、隔离。
- 核心服务挂了怎么办? 降级、冗余、故障转移。
- 重复请求怎么办? 幂等、防重、状态机。
- 上线前怎么证明系统扛得住? 压测、监控、演练、容量评估。
不管是平时刷的购物网站、用的在线支付,还是公司内部的核心业务系统,用户对"服务不可用"的容忍度越来越低。一次持续几分钟的故障,可能就会带来大量用户流失甚至直接的经济损失。
所以,如何让系统在各种异常情况下依然能提供稳定的服务,就成了后端开发和架构设计中绕不开的话题。这篇文章会把高可用系统设计的核心思路和常见方案梳理一遍,包括 SLA 指标、单点故障治理、限流熔断、服务降级、缓存高可用、异步削峰、冗余容灾、灰度发布和故障恢复等。
什么是高可用?可用性的判断标准是啥?
高可用(High Availability,简称 HA) 是指系统在绝大部分时间内能够持续提供正常服务的能力。高可用代表系统即使在发生硬件故障或者系统升级的时候,服务仍然是可用的。
高性能系统面试不是问你会不会背几个优化手段,而是看你能不能把请求链路拆开:用户请求进来后,哪里可能慢,哪里可能扛不住,哪里需要削峰,哪里需要减少数据库压力,哪里需要用监控和压测验证效果。
这篇文章把 JavaGuide 现有高性能相关文章串成一条面试复习路线,适合准备后端开发、系统设计和架构设计相关面试。
高性能系统设计面试怎么准备?
高性能问题通常可以按请求链路拆成 4 层:
- 入口层:CDN、负载均衡、网关。
- 应用层:限流、异步化、线程池、批处理。
- 数据层:索引、SQL 优化、读写分离、分库分表、冷热分离。
- 削峰层:消息队列、延迟处理、重试和补偿。
这部分内容摘自 JavaGuide 高性能专题的重点文章,适合在系统复习之后用来查漏补缺。
高性能面试题通常不会只考一个概念。面试官更关心你能不能把问题放回真实链路里:请求从入口进来,经过负载均衡、应用服务、缓存、数据库、消息队列之后,哪个环节慢了,哪个环节扛不住,哪个方案能解决,方案又会带来什么新问题。
建议按“是什么 -> 解决什么问题 -> 核心原理 -> 适用边界 -> 生产落地”这 5 个角度准备答案。这样既能回答基础概念,也能应对继续追问。
