当前位置: 首页 > news >正文

什么是分布式?

分布式可以先用一句话理解:

把一个原本由一台计算机完成的工作,拆给多台计算机共同完成。

这些计算机通过网络互相通信,对用户来说,通常像一个完整的系统。

一、 从单机开始理解

假设你开发一个网上商城,所有功能都放在一台服务器中:

用户 | v 一台服务器 ├── 用户登录 ├── 商品查询 ├── 创建订单 ├── 支付 └── 保存数据

这叫单机系统

它的优点是结构简单,但问题也很明显:

用户太多时,一台机器处理不过来;

机器一旦损坏,整个商城都可能无法使用;

数据量太大,一台机器存不下;

全国用户都访问同一台机器,部分地区可能很慢。

二、什么是分布式系统

为了处理更多用户,可以增加多台服务器:

┌── 服务器 A 用户 -> 负载均衡器 ├── 服务器 B └── 服务器 C

用户请求被分配给不同服务器:

用户甲 -> 服务器 A 用户乙 -> 服务器 B 用户丙 -> 服务器 C

这些服务器共同提供商城服务,这就是一种分布式系统。

关键点是:

  1. 系统由多台计算机组成;
  2. 计算机之间通过网络通信;
  3. 多台计算机共同完成任务;
  4. 对用户来说,整体上像一个系统。

三、一个生活化例子

把系统想象成一家饭店。

单机系统

只有一个工作人员:

点菜 + 做饭 + 上菜 + 收银 = 同一个人

顾客少时没有问题。顾客多了,一个人就忙不过来。

分布式系统

工作拆给不同的人:

服务员负责点菜 厨师负责做饭 传菜员负责上菜 收银员负责结账

每个人负责一部分,互相配合完成整个流程。

分布式系统也是类似的:

用户服务:负责注册、登录 商品服务:负责商品查询 订单服务:负责创建订单 支付服务:负责付款 物流服务:负责发货

不过,微服务不完全等于分布式。微服务通常是构建分布式系统的一种方式。

四、 分布式有两种常见形式

多台机器做相同的工作

例如三台服务器都可以处理商品查询:

┌── 商品服务器 A 商品请求 --->├── 商品服务器 B └── 商品服务器 C

这样做主要是为了:

支持更多用户;

分担访问压力;

某台机器坏了,其他机器还能继续工作。

这通常称为集群、负载均衡或服务副本

多台机器做不同的工作

例如:

用户请求 | v 订单服务器 ---> 库存服务器 | v 支付服务器 ---> 通知服务器

每台服务器负责不同功能,组合起来完成一次购物。

这通常称为服务拆分

真实系统经常同时使用这两种形式。例如订单服务负责订单功能,同时订单服务本身又部署三台机器。

五 、分布式数据库是什么

如果数据太多或者要求更高的可靠性,也可以把数据放在多台机器上。

数据副本

同一份数据保存多份:

数据库 A:用户余额 100 元 数据库 B:用户余额 100 元 数据库 C:用户余额 100 元

如果数据库 A 损坏,还可以从 B 或 C 读取数据。

数据分片

不同数据放在不同机器上:

数据库 A:用户 1~100 万 数据库 B:用户 100~200 万 数据库 C:用户 200~300 万

这样可以存储和处理更大的数据量。

六、 为什么要使用分布式

提高处理能力

一台服务器每秒只能处理 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 定理本质上研究的是:

分布式系统中的多台机器失去联系后,系统应该怎样处理请求和数据。

最简单的总结是:

单机:一台计算机完成工作 分布式:多台计算机通过网络合作完成工作

分布式解决了单机的容量、性能和故障问题,同时也带来了网络、数据一致性、重复请求和故障协调等新问题

http://www.jsqmd.com/news/1239481/

相关文章:

  • 两种范式的碰撞
  • Redis键空间通知实现电商订单自动取消
  • 亲身探访深圳百达翡丽**售后服务中心|最新热线和完整地址(2026年7月最新) - 百达翡丽服务中心
  • 泰格豪雅武汉**网点地址及售后客服热线2026年7月最新**信息 - 亨得利钟表维修中心
  • Qwen3.6 27B密集模型部署与AI编程实战指南
  • 公证关系证明需要什么材料?公证关系证明哪里办理?
  • 放弃Selenium吧!2026年最火的AI驱动测试框架终极盘点
  • Android14显示系统架构与优化解析
  • 基于MCP协议的Claude项目管理工具开发实践
  • 数字孪生技术如何通过游戏推动文旅创新
  • C++ STL核心组件深度解析:从容器算法到现代C++实战
  • AI时代语音输入崛起,如何调和语音交互成本差异成竞争关键?
  • Dockerfile核心指令与容器化构建最佳实践
  • CNN-Attention混合模型在锂电池寿命预测中的应用
  • AI录音修音工具有哪些?录音修音一体音乐编辑器实测分享
  • 2026年充电桩3C认证厂家清单与大功率直流桩选型指南
  • 2026年7月最新宝玑合肥银泰中心维修保养服务电话 - 亨得利官方服务中心
  • 西安百达翡丽回收价格查询和靠谱回收平台实测**2026年7月最新) - 天价名表回收平台
  • Java调用C++动态库实战:JNI原理、环境配置与跨平台编译指南
  • C++ <numeric>库深度解析:从accumulate到并行reduce的性能演进
  • 碳化硅二极管在快充市场的技术优势与应用
  • Android Studio开发环境搭建与优化指南
  • 郑州爱彼回收价格查询和靠谱平台实测**2026年7月最新数据) - 尊奢回收二奢平台
  • YOLOv11与HaloAttention融合的目标检测优化实践
  • 真空回流炉在生物医疗传感板封装中的工艺参数与避坑指南
  • AI低代码开发:从自然语言到系统原型的革命
  • 2026IVL夏季赛W6D2成都Wolves群访:战术复盘与版本适应深度解析
  • 从零构建高性能C++ Profiler:低开销采样与线程本地存储实战
  • 2026年7月最新卡地亚石家庄长安万达广场维修保养服务电话 - 卡地亚官方售后中心
  • AI模型安全审查能力终极验证:用17类对抗样本+5类提示注入+2类数据投毒完成TTP级能力压测(结果震惊NIST)