分布式计算的工作原理

作者: 乔纳森·斯特里克兰  | 
An illustration of a distributed computing system
在分布式计算系统(也称为共享计算系统)中,用户可以访问整个计算机网络的处理能力。
十万个为什么

当计算问题非常复杂时,一台计算机需要很长时间来处理它——在某些情况下,可能需要数百万天。即使是超级计算机也存在处理限制。幸运的是,可以部署分布式计算系统来高效处理复杂的计算任务。

想象一下,你被分配了一项任务:把一辆很重的车推上山。你可以招募没有其他事情可做的人来帮你推车。你有两种选择:你可以寻找一个足够强大能够独自完成的人,或者你可以召集几个普通人一起推。大多数时候,召集一群普通体型的人会更容易。这听起来可能很奇怪,但分布式计算机系统使用了相同的原理。

广告

分布式计算是高性能计算的一种经济实惠的替代方案。高性能计算使用超级计算机,而分布式计算则利用许多联网的计算机。它更具可扩展性,并利用了资源池化。

分布式计算系统是由多台计算机组成的网络,它们协同工作以完成特定任务。每台计算机都贡献其部分处理能力——有时还有其他资源——以帮助实现一个目标。通过将数千台计算机连接起来,分布式计算系统可以达到甚至超越超级计算机的处理能力。

大多数时候,你的计算机并没有使用其全部计算资源。还有一些时候,你的计算机可能处于开机状态,但你并没有实际使用它。分布式计算系统,也称为共享计算系统,利用了这些原本会闲置的资源。

共享计算系统非常适用于某些复杂问题,但对其他问题则不太有用。它们的设计和管理可能很复杂。虽然一些计算机科学家正在研究共享计算系统的标准化方法,但许多现有系统仍依赖独特的硬件、软件和架构。

典型的分布式计算系统由哪些部分组成?请继续阅读以了解详情。

广告

分布式系统

在传统的高性能计算系统中,所有计算机都采用相同型号并运行相同的操作系统。大多数时候,系统上运行的每个应用程序都有其专用的服务器。有时,整个网络依赖于硬线连接,这意味着系统中的所有元素都通过各种集线器相互连接。整个系统高效且优雅。

分布式计算系统可以同样高效,但它不一定显得非常优雅。分布式系统仅受其连接计算机所依赖的软件限制。有了正确的软件,共享计算系统可以在运行不同操作系统的不同类型的计算机上工作。网络连接可能存在于有线网络、局域网(局域网)、无线广域网(WAN)或互联网上。分布式系统相对于传统HPC系统的最大优势是,向共享计算系统添加更多资源更为容易。任何拥有能够运行该系统软件的计算机的人都可以加入。

广告

该系统的软件是使其能够访问每台计算机未使用的处理能力的关键。连接到系统的每台计算机都必须安装此软件才能参与。没有明确的共享计算软件套装,但总的来说,该软件必须执行以下操作:

  • 联系系统的管理服务器以获取数据块
  • 监控主机计算机的CPU使用情况,并在可用时利用其处理能力
  • 将分析后的数据发送回管理服务器,以换取新的数据

分布式计算的用途相对较窄。它们非常适合解决科学家可以分解成小部分的复杂计算问题。如果将问题分解成更小的块特别简单,则称之为“令人尴尬的并行问题”(embarrassingly parallel problem)。

对于小型计算问题或不易分解的问题,共享计算系统的用处较小。该系统的全部意义在于缩短完成复杂计算所需的时间。它不一定会提高网络上简单计算的速度。

分布式计算系统有哪些不同的组成部分?请继续阅读以了解详情。

广告

分布式计算架构

与网格计算系统(理论上可以拥有与用户数量一样多的网络接口点)不同,分布式计算系统通常只有少数几个控制点。这是因为大多数共享计算系统都有特定的目的,而非通用工具。

将典型的共享计算系统想象为具有前端和后端是很有用的。前端是所有自愿贡献CPU资源给项目的计算机。后端是管理整个项目、将主要任务分成更小块、与前端计算机通信并存储前端计算机完成分析后发送的信息的计算机和服务器。

广告

一般来说,将计算问题分解成更小块的任务由后端计算机上的程序(通常是服务器)负责。这台计算机使用特定软件将任务分解成更小的部分,以便普通计算机系统更容易管理。当前端计算机上安装的配套软件联系时,服务器将通过网络发送数据进行分析。在收到完成的分析任务后,服务器会将数据导向适当的数据库。

系统管理员通常会使用另一台计算机来整合已完成的分析。最终目标是通过解决微小的部分来解决一个非常大的问题。在许多情况下,系统管理员会发布结果,以便其他人可以从这些信息中受益。

如果这个架构描述听起来有点模糊,那是因为创建和管理分布式计算系统没有唯一的方法。每个系统都有其独特的软件和架构。在大多数情况下,程序员会根据特定系统的目标定制软件。虽然两个不同的共享计算机系统在总体上可能工作方式相同,但一旦深入细节,它们可能会大相径庭。

分布式计算有哪些应用,以及为什么它们需要专门的软件?请在下一节中了解。

广告

分布式计算应用

A scientist using a microscope and computer 
科学家们正在使用分布式计算系统来分析复杂的计算问题。
James Steidl/iStockphoto

目前有数十个活跃的分布式计算系统项目,每个项目都有自己的网络和计算任务。其中一些网络是重叠的——用户可以参与多个网络,尽管这意味着不同的项目必须分摊闲置资源。因此,每个单独的任务会花费更长的时间。

共享计算机系统的一个例子是威斯康星网格实验室(GLOW)。威斯康星大学麦迪逊分校将GLOW用于多个项目,这在某些方面使其区别于大多数共享计算系统。一个项目利用GLOW网络研究人类基因组。另一个项目则利用GLOW的资源研究癌症的潜在治疗方法。与专注于单一任务的分布式计算系统不同,GLOW可以容纳多个项目。

广告

使GLOW成为可能的软件叫做Condor。Condor的任务是寻找GLOW网络中闲置的处理器,并利用它们来处理各个项目。当一个项目不活跃时,Condor会将其资源借给其他项目。然而,如果任何之前不活跃的项目重新上线,Condor会释放相应计算机的处理器。

其他一些共享计算系统包括:

  • SETI@home:一个分析射电望远镜数据以寻找地外智慧生命的开项目。
  • Africa@home:该项目致力于将计算机能力贡献给旨在改善非洲生活质量的研究项目,重点关注疟疾控制倡议。
  • Proteins@home、Predictor@home、Rosetta@home和Folding@home:每个项目都以各种方式研究蛋白质。
  • Einstein@home、Cosmology@home、Milkyway@home和Orbit@home:这些项目研究天文数据。

其他项目研究的范围从流体动力学物理学到模拟纳米技术环境。

所以分布式计算系统确实非常有用,但是否存在任何危险?如果你不害怕,请继续阅读。

广告

分布式计算的担忧

每当一个系统允许一台计算机访问另一台计算机的资源时,就会出现关于安全和隐私的问题。什么能阻止程序管理员窥探特定用户的计算机?如果管理员可以利用CPU能力,他们是否也能访问文件和敏感数据?

这个问题的简单答案是,这取决于参与计算机必须安装的软件才能成为系统的一部分。共享计算系统能对单个计算机执行的所有操作都取决于该软件应用程序。大多数时候,该软件不允许任何人直接访问主机计算机上的内容。一切都是自动化的,只有CPU的处理能力可被访问。

广告

然而,也有例外。一个僵尸计算机系统或僵尸网络是恶意共享计算系统的一个例子。由一个黑客主导,僵尸计算机系统将无辜的计算机用户变成受害者。首先,受害者必须在他们的计算机上安装特定软件,然后黑客才能访问它。通常,此类软件应用程序伪装成无害程序。一旦安装,黑客就可以访问受害者的计算机执行恶意任务,例如分布式拒绝服务(DDoS)攻击或发送大量垃圾邮件。僵尸网络可以覆盖成百上千台计算机,所有这一切都在受害者不知情的情况下进行。

分布式计算系统还需要为特定计算机离线或长时间不可用时制定计划。大多数系统都有一套程序,对每项任务设置了时间限制。如果参与者的计算机在一定时间内未能完成任务,控制服务器将取消该计算机的任务,并将任务分配给一台新的计算机。

对共享计算的一个批评是,虽然它利用了闲置处理器,但会增加功耗和热量输出。随着计算机使用更多的处理能力,它们需要更多的电力。一些共享计算系统管理员敦促参与者始终保持计算机开机,以便系统能够持续访问资源。有时,共享计算系统倡议与强调节能的绿色倡议发生冲突。

也许对分布式计算系统的最大批评是它们不够全面。虽然它们汇集了处理能力资源,但它们没有利用存储等其他资源。因此,许多组织正在考虑实施网格计算系统,这些系统可以利用更多资源,并允许更多种类的应用程序利用网络。

广告

常见问题

计算机网络在分布式计算中扮演什么角色?
计算机网络在分布式计算中至关重要,因为它连接了所涉及的多台计算机,促进了任务的分配和结果的收集,以实现共同目标。
什么是并行计算,它与分布式计算系统有何关系?
并行计算涉及在多个处理器上同时运行计算。在分布式计算系统中,这个概念被扩展到包括多台计算机通过网络协同工作,每台计算机都贡献处理能力以更高效地解决复杂任务。
什么是分布式云计算?
分布式云计算将分布式计算的多地点资源池化与云计算的可扩展性相结合。它将云服务分布到不同的地理位置,以最小化延迟、遵守数据法律并提高系统弹性。

广告

加载中...