C++ / a working model

151 / 163   ·   C11   ·   约 8 分钟

分布式系统对话

先记住这句话

师生对话引入分布式系统的基本概念,说明多机协作的不可靠性以及复制与重试等应对手段,为后续分布式文件系统章节做铺垫。

本篇内容
  1. 从单机到多机
  2. 故障是常态
  3. 复制与重试
  4. 运行示例
  5. 动手练习

官方章节 PDF

从单机到多机

学生:操作系统课快结束了,接下来是分布式部分。究竟什么叫分布式系统? 教授:就是若干台各自拥有处理器、内存和磁盘的计算机,只通过网络交换消息来共同完成一件事。对用户来说它们应当像一台机器,但内部其实彼此独立。

故障是常态

教授:真正麻烦的地方在于任何组件随时可能出问题:数据包消失、某台机器突然断电、磁盘返回损坏的数据。没有全局时钟,也没有瞬间一致的共享内存。 学生:可我每天用的搜索和购物网站几乎从不中断。 教授:那是因为设计者事先把故障当成必然事件,而不是意外。

复制与重试

教授:常见做法是把同一份数据放在多台机器上,一台挂了其余的还能继续服务;对可能丢失的请求则简单重发,直到确认成功或判定彻底失败。再加上心跳检测,整个服务就能在部分节点宕机时仍对外可用。 学生:听起来简单,实际协调起来一定很复杂。 教授:没错,所以才值得单独开一章来讲。

常见误区

  • 把网络当成永远可靠的管道
  • 以为单机上正确的算法可以直接搬到多机
  • 忽略部分节点故障时系统仍须对外提供一致视图

运行一个例子

这一章用官方 PDF 讲清概念;本页不附带可运行程序。

CHECK YOUR UNDERSTANDING

合上答案,试着解释。

为什么分布式系统不能简单沿用单机操作系统里的锁和共享内存?

查看参考答案

因为各台机器没有共享的物理内存,消息可能丢失或乱序,任何一台都可能独立崩溃,因此必须显式处理通信不可靠和部分故障。

继续查证

标准草案与官方章节会更新;版本标记只说明示例最低要求。

回到目录