🚪 分布式入门篇(零基础版)
分布式是什么 · 为什么要分布式 · 为什么"难" · 核心名词速记
1. "分布式"是什么?为什么要搞分布式?
🏪 类比——奶茶店扩张:
小店阶段:一家店搞定一切(单机)——顾客少,够用。
生意火爆:一家店忙不过来 → 开分店(多台服务器)→ 这就是"分布式":多台电脑协同完成工作。
分店多了问题也来了:顾客去哪家店(负载均衡)?总库存怎么同步(数据一致性)?一家店关门其他店怎么顶上(高可用)?
小店阶段:一家店搞定一切(单机)——顾客少,够用。
生意火爆:一家店忙不过来 → 开分店(多台服务器)→ 这就是"分布式":多台电脑协同完成工作。
分店多了问题也来了:顾客去哪家店(负载均衡)?总库存怎么同步(数据一致性)?一家店关门其他店怎么顶上(高可用)?
分布式系统:多台计算机通过网络协作,对外像一个整体。
为什么要分布式(三个原因):
- 性能不够:单台机器 CPU/内存有限,流量大了扛不住 → 加机器(水平扩展)
- 可用性要求:服务器会坏(宕机/断电)→ 多台机器互相备份,一台挂了其他的顶上
- 地理需求:用户遍布全国 → 各地部署节点,就近访问(CDN/多机房)
🎯 记住
- 分布式 = 多台机器协作干一件事(对外像一台)
- 动机:扛不住(扩展)、怕宕机(高可用)、要就近(延迟)
- 微服务 = 一种分布式架构:把一个大系统拆成很多小服务(订单/用户/支付各一个服务)
2. 为什么分布式"难"?(新手必懂,面试必问)
单机时代:代码顺序执行、数据共享内存、出错好排查。分布式后三大难题:
- 网络不可靠:两台机器通信可能延迟、丢包、超时——"它到底处理了没有?"不知道(网络分区)
- 数据一致性:用户数据在 A 机器改了,B 机器还是旧的——什么时候同步?谁说了算?
- 故障难排查:一个请求经过 5 个服务,哪个慢了?哪个错了?(所以要链路追踪)
📞 类比——异地恋式协作:两个服务协作就像异地恋:
发消息(调用)可能对方没收到(超时)、收到但回复丢了(幂等问题)、
两个人对"什么时候见面"的记忆不一致(数据不一致)——都得靠"约定"(协议)来保证。
发消息(调用)可能对方没收到(超时)、收到但回复丢了(幂等问题)、
两个人对"什么时候见面"的记忆不一致(数据不一致)——都得靠"约定"(协议)来保证。
🎯 记住
- 分布式的核心矛盾:网络会出问题 + 数据要一致
- 所以有了 CAP 定理(一致性/可用性/分区容错三选二)、分布式事务、一致性协议——都是在解决这俩
- 面试答"分布式难点":网络不可靠 + 一致性 + 运维复杂度,展开讲就是深度
3. 分布式核心名词速记(先混脸熟)
| 名词 | 大白话 |
|---|---|
| 节点(Node) | 参与协作的一台机器/一个服务 |
| RPC | 像调本地方法一样调另一台机器的方法(Dubbo/gRPC) |
| 注册中心 | 服务们的"通讯录"(Nacos/ZooKeeper)——谁在哪,谁挂了 |
| 负载均衡 | 把请求分给多台机器(轮流/按权重) |
| 熔断/降级/限流 | 保护系统:下游坏了快速失败(熔断)、砍非核心功能(降级)、挡流量(限流) |
| 分布式事务 | 一次操作改多个服务的数据,要全成功或全回滚(很难,有 TCC/Saga 等方案) |
| 分布式锁 | 多台机器互斥访问同一资源(Redis 锁/ZK 锁) |
| 幂等 | 同一操作重复执行结果一样(网络重试时的保命符) |
| CAP | 一致性/可用性/分区容错——网络故障时只能三选二(下节详解) |
🎯 学习顺序建议
- 先学懂单机(本网站前面所有模块)→ 再学分布式(先 RPC 和注册中心,再事务和一致性)
- 分布式是"面试进阶题":中小厂问得少,大厂必问——按自己的目标来