第 46 章对话:关于分布式的对话
教授: 现在,我们到了操作系统领域的最后一个小部分:分布式系统。由于这里不能介绍太多内容,我们将在有关持久性的部分中插入一些介绍,主要关注分布式文件系统。希望这样可以!
学生: 听起来不错。但究竟什么是分布式系统呢,有趣而无所不知的教授?
教授: 嗯,我打赌你知道这是怎么回事……
学生: 有一个桃子?
教授: 没错!但这一次,它离你很远,可能需要一些时间才能拿到桃子。而且有很多桃子!更糟糕的是,有时桃子会腐烂。但你要确保任何人咬到桃子时,都会享受到美味。
学生: 这个桃子的比喻对我来说越来越没意思了。
教授: 好吧!这是最后一个,就勉为其难吧。
学生: 好的。
教授: 无论怎样,忘了桃子吧。构建分布式系统很难,因为事情总是会失败。消息会丢失,机器会故障,磁盘会损坏数据,就像整个世界都在和你作对!
学生: 但我一直使用分布式系统,对吧?
教授: 是的!你是在用,而且……
学生: 好吧,看起来它们大部分都在工作。毕竟,当我向谷歌发送搜索请求时,它通常会快速响应,给出一些很棒的结果!当我用 Facebook 或亚马逊时,也是这样。
教授: 是的,太神奇了。尽管发生了所有这些失败!这些公司在他们的系统中构建了大量的机器,确保即使某些机器出现故障,整个系统也能保持正常运行。他们使用了很多技术来实现这一点:复制,重试,以及各种其他技巧。人们随着时间的推移开发了这些技巧,用于检测故障,并从故障中恢复。
学生: 听起来很有趣。是时候学点真东西了吧?
教授: 确实如此。我们开始吧!但首先要做的事情……(咬一口他一直拿着的桃子,遗憾的是,它已经烂了)
导师的下一步建议:
分布式系统的核心挑战:一切都会失败。消息丢失、机器宕机、磁盘损坏——但 Google、Facebook 这些分布式系统却能在持续的故障中正常运行。秘诀在于复制、重试和精心设计的协议。
在第 47 章中,我们将学习分布式系统的基础概念:通信、容错、一致性模型,这正是理解 NFS 和 AFS 等分布式文件系统的前提。