什么是分布式? 📅 2026/7/22 6:19:14 分布式可以先用一句话理解把一个原本由一台计算机完成的工作拆给多台计算机共同完成。这些计算机通过网络互相通信对用户来说通常像一个完整的系统。一、 从单机开始理解假设你开发一个网上商城所有功能都放在一台服务器中用户 | v 一台服务器 ├── 用户登录 ├── 商品查询 ├── 创建订单 ├── 支付 └── 保存数据这叫单机系统。它的优点是结构简单但问题也很明显用户太多时一台机器处理不过来机器一旦损坏整个商城都可能无法使用数据量太大一台机器存不下全国用户都访问同一台机器部分地区可能很慢。二、什么是分布式系统为了处理更多用户可以增加多台服务器┌── 服务器 A 用户 - 负载均衡器 ├── 服务器 B └── 服务器 C用户请求被分配给不同服务器用户甲 - 服务器 A 用户乙 - 服务器 B 用户丙 - 服务器 C这些服务器共同提供商城服务这就是一种分布式系统。关键点是系统由多台计算机组成计算机之间通过网络通信多台计算机共同完成任务对用户来说整体上像一个系统。三、一个生活化例子把系统想象成一家饭店。单机系统只有一个工作人员点菜 做饭 上菜 收银 同一个人顾客少时没有问题。顾客多了一个人就忙不过来。分布式系统工作拆给不同的人服务员负责点菜 厨师负责做饭 传菜员负责上菜 收银员负责结账每个人负责一部分互相配合完成整个流程。分布式系统也是类似的用户服务负责注册、登录 商品服务负责商品查询 订单服务负责创建订单 支付服务负责付款 物流服务负责发货不过微服务不完全等于分布式。微服务通常是构建分布式系统的一种方式。四、 分布式有两种常见形式多台机器做相同的工作例如三台服务器都可以处理商品查询┌── 商品服务器 A 商品请求 ---├── 商品服务器 B └── 商品服务器 C这样做主要是为了支持更多用户分担访问压力某台机器坏了其他机器还能继续工作。这通常称为集群、负载均衡或服务副本。多台机器做不同的工作例如用户请求 | v 订单服务器 --- 库存服务器 | v 支付服务器 --- 通知服务器每台服务器负责不同功能组合起来完成一次购物。这通常称为服务拆分。真实系统经常同时使用这两种形式。例如订单服务负责订单功能同时订单服务本身又部署三台机器。五 、分布式数据库是什么如果数据太多或者要求更高的可靠性也可以把数据放在多台机器上。数据副本同一份数据保存多份数据库 A用户余额 100 元 数据库 B用户余额 100 元 数据库 C用户余额 100 元如果数据库 A 损坏还可以从 B 或 C 读取数据。数据分片不同数据放在不同机器上数据库 A用户 1100 万 数据库 B用户 100200 万 数据库 C用户 200300 万这样可以存储和处理更大的数据量。六、 为什么要使用分布式提高处理能力一台服务器每秒只能处理 1,000 个请求增加服务器后可以处理更多请求。但通常不会严格线性增长因为服务器之间通信和协调也需要成本。提高可用性如果只有一台服务器服务器故障 - 整个系统不可用如果有多台服务器服务器 A 故障 服务器 B、C 继续工作支持海量数据数据量超过一台机器的存储或处理能力后可以拆分到多台机器。让不同地区访问更快例如在北京、上海、广州分别部署服务器用户访问距离较近的节点。七、 分布式的困难在哪里分布式不是简单地增加几台机器。机器之间依靠网络通信而网络并不绝对可靠。网络可能中断服务器 A --X-- 服务器 B两台服务器都正常但无法互相通信。这就是 CAP 里的P网络分区。数据可能不一致北京节点已经修改了数据但上海节点还没收到更新北京节点库存 0 上海节点库存 1这就是 CAP 讨论的一致性问题。请求可能重复订单服务器发送了扣款请求但因为网络超时没有收到结果订单服务 - 支付服务扣款 100 元 订单服务 - 支付服务响应在网络中丢失订单服务不知道扣款是否成功。如果直接重试可能重复扣款。因此分布式系统经常需要考虑幂等性。部分机器可能故障可能出现订单服务正常 库存服务正常 支付服务故障系统不是全部成功也不是全部失败而是处于“部分完成”的状态。多台机器时间可能不同服务器 A 认为当前是10:00:01服务器 B 可能认为是10:00:03。因此不能总是简单依赖机器时间判断事件顺序。八、分布式和集群的区别两者经常一起出现但侧重点不同分布式把不同工作拆给多台机器。集群多台机器通常提供相同或相近的服务互相替代、分担压力例如商城 ├── 用户服务集群3 台服务器 ├── 商品服务集群5 台服务器 ├── 订单服务集群4 台服务器 └── 支付服务集群3 台服务器整个商城是一个分布式系统每一组相同服务又是一个集群九、 和 CAP 定理连接起来现在就可以理解为什么分布式系统会有 CAP 问题服务器 A库存 0 服务器 B库存 1 A 和 B 之间网络中断此时服务器 B 必须决定拒绝请求保证数据一致但降低可用性对应 CP继续返回库存 1保证可用但数据可能不一致对应 AP所以 CAP 定理本质上研究的是分布式系统中的多台机器失去联系后系统应该怎样处理请求和数据。最简单的总结是单机一台计算机完成工作 分布式多台计算机通过网络合作完成工作分布式解决了单机的容量、性能和故障问题同时也带来了网络、数据一致性、重复请求和故障协调等新问题