分布式系统的基础知识

发表时间: 2024-05-31 00:30

什么是分布式系统以及为什么要关心?基本上分布式系统不是集中式系统。什么是中心化系统?集中式系统是系统状态和程序存储在一台计算机上的系统。例如您可能正在使用您面前计算机上的microsoft word对此视频进行笔记。为了记录这些笔记,word会将文档存储在内存中,并定期将您的状态保存到磁盘。

如果你的电脑坏了,那你就倒霉了。您不能再做笔记,也不能阅读笔记,除非您足够幸运有备份,并且可以从备份恢复到新计算机上。在分布式系统中,程序的状态和程序本身被分配到多台计算机上。

回到word的例子,如果您没有将文档保存在本地磁盘上,而是将文档存储在dropbox中,那么如果您的计算机出现故障,您可以借用朋友的计算机从dropbox加载文档,然后继续工作。太好了,你开心就好。

您的系统具有容错能力,因为你的状态不仅仅只是由一台计算机来划分的。您正在利用dropbox拥有的所有计算机,如果他们的一台计算机出现故障,他可能也会将您的文档复制到不止一台计算机上,你可以继续前进。

所以集中式系统更简单,他们更容易理解。因为您只需考虑一台计算机中发生的情况,对于单个用户来说,他们可以更快,因为运行他们时不涉及网络往返。但相比之下,分布式系统可以更可靠。如果计算机出现故障,并不意味着您就完蛋了,你可以在多种类型的失败中继续努力。

分布式系统往往更具可扩展性。我的意思是由于时间共享的奢侈,您可以用更少数量的计算机为更多用户提供服务。分布式系统的缺点是他们更加复杂。现在等一下,您可能会担心因为复杂性不好,对吗?复杂性很难构建一个实际上也更可靠的复杂系统。我可以承认你是对的,复杂的系统很难正确构建。

这就是分布式系统被认为是计算机科学中的高级主题的原因之一。这是因为我不会粉饰它,这很难,这很值得。您可以使用分布式系统解决一些非常重要的问题,而使用集中式系统无法解决这些问题。即使他们失败了,后果往往也是非常糟糕的。这只是因为人们只使用分布式系统作为解决非常重要问题的工具。

所以当他们失败时,当然是很糟糕的。这是因为他们很重要。让我们考虑一些分布式系统的例子,为了观看该视频,您必须访问一个网站,并且为了查找该网站,例如youtube.com,您必须使用dns或域名服务进行查找。dns是一个由主机名到ip地址的分布式表,该表分布在全球的许多计算机上,以便总有一台。靠近您的计算机可以在其中进行查找。您可以将dns作为分布式缓存一致性的一个很好的例子来研究,这是我们稍后会讨论的内容。

facebook和google在内部广泛使用分布式系统,它们用它们来存储您的数据,它们使用它们来处理大量计算机云上的数据。当你每天与这些服务交互时,它们使用它们来实现你与之交互的服务系统。这些公司和更多公司都已经证明可以构建真正大规模的分布式系统,其速度足以解决一大类非常重要的问题,而且它们可以变得非常可靠。

如果您曾经发送过电子邮件,那么这就是您利用分布式系统的另一个地方。全球各地都有相互通信的邮件服务器,您的电子邮件在到达目的地时会通过一系列服务器进行转发。如果其中一台服务器发生故障,每个人的电子邮件都不会停止,它只是停止等待,将通过故障服务器中计的消息的用户子籍,当它恢复时一切又开始工作。

现在您可能会有这样的印象,分布式系统是为了解决互联网规模问题而开发的。而且事实上分布式系统作为一个领域最初并不是为互联网开发的,它是在互联网出现之前开发的。分布式系统是我们归类为分布式系统问题的问题。最初解决这个问题是为了建立基于固定电话的网络,这实际上是一个全球性的非常可靠容错的网络。

后来我们添加了更多技术来处理移动节点,已构建手机网络。所以也许你可以说分布式系统对于网络系统最有用。是的,只不过网络比你想象的要多。例如您的汽车中至少有一个网络,也许不止一个网络。使用所谓的can总线协议,汽车中的所有电子元件都联网在一起。

例如您可能正在驾驶汽车打开音响,但汽车音响崩溃了。您最不想做的事情就是在can总线网络上发送一条消息,该消息会使您的发动机控制单元崩溃,从而导致发动机故障。这可能会导致汽车实际崩溃,那会很糟糕。因此在汽车内部使用分布式系统技术来帮助故障隔离。

分布式系统也用于交通运输的其他领域,大城市的交通信号灯通常联网在一起,以便以容错的方式使整个城市的交通顺畅。列车控制网络用于确保列车准时运行,并且不会在同一轨道上同时运行两列列车。

飞机是我最喜欢的宠物粒子,因为我是一名飞行员和航空极客。如果你观察飞机内部,你会发现飞机上的所有航空电子设备通常都是连接在一起的,各个航空电子设备之间通常通过rs232总线进行连接。例如在这架飞机上gps知道飞机在哪里以及飞行员打算飞往哪里。

发动机监视器跟踪发动机及其所有参数、燃油流量、废弃温度、气缸温度,它基本上是在观察发动机的健康状况。发动机监视器必须做的事情之一是如果它认为您在到达目的地之前将耗尽燃料,它必须警告飞行员,它怎么能做到这一点?它从gps中了解目的地在哪里以及到达目的地需要多长时间,并且通过自己的监控了解当前消耗了多少燃料,这是简单的数学。

但如果gps出现故障怎么办?发动机监视器无法再完成这项工作,所以它有一个容错策略,它只是告诉飞行员:我不能再进行这种计算了,请查看燃油表并使用计算器自行计算。伟大的,这并不是飞机上。使用分布式系统的唯一地方。

空中交通管制是人力分布式系统的一个例子,系统和程序的状态在参与的飞行员、空中交通管制员以及空中交通管制员用于相互通信和协调所有交通的计算机之间划分。实际上一旦您开始寻找分布式系统,您就会开始在各处看到他们。

我试图为这次演讲想出好的例子,然后我开始认为现在正处于选举季节,美国选举投票系统真的只是具有拜暂停容错能力的分布式共识的一个例子吗?我说的太过分了,对不起。正如您所知,我对分布式系统感到非常兴奋。

实际上自从获得博士学位以来,我在过去的十年里一直致力于分布式系统的工业研究,试图使他们更具可扩展性,更快,更易于使用。我希望通过这一系列视频让他们更容易理解,希望在看完这些视频后您将知道应该如何以及何时构建自己的分布式系统,并更好的理解他们的工作原理。