151 / 163 · C11 · 约 8 分钟
分布式系统对话
先记住这句话
师生对话引入分布式系统的基本概念,说明多机协作的不可靠性以及复制与重试等应对手段,为后续分布式文件系统章节做铺垫。
从单机到多机
学生:操作系统课快结束了,接下来是分布式部分。究竟什么叫分布式系统? 教授:就是若干台各自拥有处理器、内存和磁盘的计算机,只通过网络交换消息来共同完成一件事。对用户来说它们应当像一台机器,但内部其实彼此独立。
故障是常态
教授:真正麻烦的地方在于任何组件随时可能出问题:数据包消失、某台机器突然断电、磁盘返回损坏的数据。没有全局时钟,也没有瞬间一致的共享内存。 学生:可我每天用的搜索和购物网站几乎从不中断。 教授:那是因为设计者事先把故障当成必然事件,而不是意外。
复制与重试
教授:常见做法是把同一份数据放在多台机器上,一台挂了其余的还能继续服务;对可能丢失的请求则简单重发,直到确认成功或判定彻底失败。再加上心跳检测,整个服务就能在部分节点宕机时仍对外可用。 学生:听起来简单,实际协调起来一定很复杂。 教授:没错,所以才值得单独开一章来讲。
常见误区
- 把网络当成永远可靠的管道
- 以为单机上正确的算法可以直接搬到多机
- 忽略部分节点故障时系统仍须对外提供一致视图
运行一个例子
这一章用官方 PDF 讲清概念;本页不附带可运行程序。
CHECK YOUR UNDERSTANDING
合上答案,试着解释。
为什么分布式系统不能简单沿用单机操作系统里的锁和共享内存?
查看参考答案
因为各台机器没有共享的物理内存,消息可能丢失或乱序,任何一台都可能独立崩溃,因此必须显式处理通信不可靠和部分故障。
继续查证
标准草案与官方章节会更新;版本标记只说明示例最低要求。