分布式计算是一种模型,其中软件系统的组件分布在多个计算机或节点之间。尽管软件组件分散在多个地点的多台计算机上,但它们作为一个系统运行,以提高效率和性能。不同网络计算机上的系统通过相互发送消息进行通信和协调,以实现特定任务。
由于能够在多个系统之间提供并行处理,分布式计算可以提高性能、弹性和可扩展性,使其成为数据库系统和应用程序设计中常见的计算模型。
分布式计算有时也被称为分布式系统、分布式编程或分布式算法。
分布式计算如何工作
分布式计算网络可以作为局域网连接,或通过广域网连接,如果机器位于不同的地理位置。分布式计算系统中的处理器通常并行运行。
分布式计算中涉及的常见功能包括:
- 任务分配。一个中央算法将一个大任务分解为较小的子任务。这些子任务随后被分配给系统内的不同节点,以分散工作负载。
- 并行执行。一旦节点被分配,它们独立地与其他节点并发执行各自的子任务。这种并行处理能够比顺序处理更快地计算复杂任务。
- 通信。分布式系统中的节点相互通信,以共享资源、协调任务并保持同步。此通信可以通过多种网络协议进行。
- 结果聚合。在完成各自的子任务后,节点通常将其结果发送回中央节点或聚合器。聚合器将这些结果结合起来,生成整体计算的最终输出或结果。
- 容错性。分布式系统设计为能够优雅地处理故障。它们通常包括冗余、数据复制以及检测和恢复单个节点或通信通道故障的机制。
这是一个示例,展示了分布式计算中网络、服务器和计算机的结构。
分布式计算架构的类型
在企业环境中,分布式计算通常将业务流程中的各个步骤放置在计算机网络中最有效的位置。例如,典型的分布通常采用三层模型,将应用程序组织为表示层(或用户界面)、应用层和数据层。这些层的功能如下:
- 用户界面处理发生在用户位置的PC上。
- 应用处理发生在远程计算机上。
- 数据库访问和算法处理发生在提供多个业务流程集中访问的另一台计算机上。
除了三层模型,其他类型的分布式计算架构包括:
- 客户端-服务器架构。 客户端-服务器架构使用智能客户端,向服务器请求数据,然后格式化并显示给用户。
- N层系统架构。 通常用于应用服务器,这些架构使用Web应用程序将请求转发给其他企业服务。
- 对等架构。 这些架构将所有责任分配给所有对等计算机,这些计算机可以作为客户端或服务器。该模型在多个用例中很受欢迎,包括区块链网络、内容交换和媒体流。
- 扩展架构。 扩展架构通常由分布式计算集群使用,使得在网络负载增加时更容易添加新硬件。
- 分布式共享内存架构。这种类型的内存架构适用于松耦合的分布式内存系统。它使最终用户进程能够访问共享数据,而无需进行进程间通信。
分布式计算的优点
分布式计算提供以下好处:
- 增强性能。 分布式计算可以通过让集群中的每台计算机同时处理任务的不同部分来提高性能。
- 可扩展性。 分布式计算集群通过在需要时添加新硬件来实现可扩展性。此外,即使一个或多个系统出现故障,它们仍然可以继续运行,从而提供可扩展性和容错性。
- 弹性和冗余。 多台计算机可以提供相同的服务。这样,如果一台机器不可用,其他机器可以填补该服务的空缺。同样,如果提供相同服务的两台机器位于不同的数据中心,并且其中一个数据中心出现故障,组织仍然可以正常运作。
- 成本效益。 分布式计算可以使用低成本的现成硬件。这些系统旨在通过减少延迟、改善响应时间和最大化吞吐量来实现高性能,以满足共享目标。
- 效率。 复杂请求可以分解为更小的部分,并在不同系统之间分发。这样,请求被简化,并以并行计算的形式进行处理,从而减少计算请求所需的时间。
- 灵活性。 与在单一系统上运行的传统应用程序不同,分布式应用程序可以同时在多个系统上运行。
- 透明性。 分布式系统可以将文件、数据库和服务等资源呈现为存在于单台计算机或位置上,即使它们可能分散在多个节点上。这种透明性使用户或应用程序能够访问资源,而无需知道它们的物理位置。
分布式计算的缺点
除了各种优点外,分布式计算也存在某些局限性,包括:
- 配置问题。为了使分布式系统正常工作,网络中的所有节点应具有相同的配置并能够相互交互。这可能给拥有复杂IT基础设施或IT人员缺乏必要技能的组织带来挑战。
- 通信开销。在分布式系统中,多个节点之间的协调和通信可能会产生额外的通信开销,从而可能降低整体系统性能。
- 安全管理。在分布式系统中管理安全性可能很复杂,因为用户需要控制不同位置的复制数据并确保网络安全。此外,确保分布式资源的一致性能和正常运行时间可能会面临挑战。
- 成本。虽然分布式系统从长远来看可能具有成本效益,但它们通常在初始部署时会产生较高的成本。这对一些组织来说可能是一个问题,特别是与集中系统相对较低的前期成本相比。
- 复杂性。与集中系统相比,分布式系统的设计、执行和维护可能更为复杂。这可能导致调试、监控和确保整体系统可靠性方面的挑战。
分布式计算的用例
分布式计算在多个行业中有用例和应用,包括:
- 医疗保健和生命科学。分布式计算用于建模和模拟复杂的生命科学数据。这使得能够高效处理、存储和分析大量医疗数据,以及在医疗提供者、医院、诊所和实验室之间交换电子健康记录和其他信息。
- 电信网络。电话和蜂窝网络是分布式网络的例子。电话网络最初作为早期的对等网络运营。另一方面,蜂窝网络由分布在指定小区的分布式基站组成。随着电话网络向互联网协议语音过渡,它们演变成更复杂的分布式网络。
- 航空航天。航空航天行业使用分布式计算,包括飞机发动机的分布式诊断系统。DAME使用网格计算处理操作飞机的大量飞行数据。这使得开发飞机诊断和维护的决策支持系统成为可能。
- 制造和物流。分布式计算在制造和物流等行业中用于提供实时跟踪、自动化控制和调度系统。这些行业通常使用监控和检查设备的应用程序,以及提供物流和电子商务活动的实时跟踪。
- 云计算和IT服务。IT行业利用分布式计算确保容错性、促进资源管理和可访问性,并最大化性能。它在云计算平台中也至关重要,因为它提供动态、灵活的基础设施和服务质量保证。
- 金融服务。金融服务组织使用分布式系统进行各种用例,例如快速经济模拟、投资组合风险评估、市场预测和财务决策。它们还部署基于分布式系统的Web应用程序,以提供个性化的保费、安全地处理大规模金融交易,并增强用户身份验证以防止欺诈。
- 娱乐和游戏。分布式计算在在线游戏和娱乐行业至关重要,因为它提供了高效操作所需的资源,支持多人在线游戏、高质量视频动画和各种娱乐应用。
- 分布式人工智能。分布式人工智能使用复杂算法和大规模系统进行学习和决策,依赖于分布在多个位置的计算数据点。
网格计算、分布式计算和云计算
网格计算和云计算是分布式计算的变体。以下是网格、分布式和云计算模型的关键特征、差异和应用:
网格计算
网格计算涉及多个计算机连接的分布式架构,用于解决复杂问题。服务器或PC运行独立任务,通过互联网或低速网络松散连接。在网格计算模型中,个别参与者可以利用其计算机的一部分处理时间来解决复杂问题。
SETI@home是网格计算项目的一个示例。尽管该项目的第一阶段于2020年3月结束,但在20多年里,个人计算机所有者自愿将其多任务处理周期的一部分贡献给寻找外星智能(SETI)项目,同时仍在使用他们的计算机。这个计算密集型的问题使用数千台PC下载和搜索射电望远镜数据。
分布式计算
网格计算和分布式计算是相似的概念,可能难以区分。一般来说,分布式计算的定义比网格计算更广泛。网格计算通常是一个大型分散计算机组协同工作以完成特定任务。
相反,分布式计算可以同时处理多个任务。网格计算也可以被定义为分布式计算的一种类型。此外,虽然网格计算通常具有明确定义的架构组件,但分布式计算可以有多种架构,例如网格、集群和云计算。
云计算
云计算的概念也与分布式计算相似。云计算是一个通用术语,涉及通过互联网提供托管服务和计算能力。这些服务通常分为三种主要类型:基础设施即服务、平台即服务和软件即服务。云计算还分为私有云和公有云。公有云向其他方出售服务,而私有云是一个专有网络,向有限数量的人提供托管服务,并具有特定的访问和权限设置。云计算旨在提供对计算资源和IT服务的易于扩展的访问。
云计算和分布式计算都侧重于将服务或服务分散到多个不同的机器上;然而,云计算通常提供特定软件或存储等服务,供组织用于自己的任务。分布式计算涉及将服务分配给不同计算机,以帮助完成相同的任务。
通过使用分布式文件系统,用户可以无缝访问存储在多个服务器上的文件数据。了解分布式文件系统的关键特征。