47 分布式系统
分布式系统已经改变了世界的面貌。当你的浏览器连接到一网络这个星球上的某处服务器,它似乎参与了是一个客户端/服务器的一个简单形式的分布系统。当你与现代网络服务交互,如Google或Facebook,你不只是与一台机器在交互。在这些场景背后,这些复杂的服务构建在成百上千的机器上,每一个机器提供该网站的特定服务。因此,我们应该清楚是为什么学习分布式系统有意思。事实上,这是值得一整节课;在这里,我们只介绍几个主题。
构建分布式系统时,会出现一些新的挑战。我们的主要关注的是失败;机器、磁盘、网络和软件总是会失效,我们没有 因为我们现在不知道(也有可能永远不知道)如何建立“完美的组件和系统。然而,我们希望建立的现代网络服务对于客户端而言从未失败;那么我们如何才能完成这个任务呢?
关键:如何构建一个当组件失效时仍能工作的系统?
如何构建一个当组件失效时仍能工作的系统?这个基本的问题应该能让你想起之前在RAID存储阵列章节我们的讨论;但是,这里存在的问题和解决方案往往更加复杂。
有趣的是,虽然失效是构建分布式系统的核心挑战,它也代表着一个机会。是的,机器失效;但是一个机器故障并不意味着整个系统 一定会失败。通过许多机器的集中,我们可以构建出一个很少失效的系统,即使它的组件经常失效。这个事实正是分布式系统的核心价值。