分布式计算、云计算与大数据(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 分布式计算的概念

1.1.1 定义

从分布式计算诞生到现在已经过去很长的时间,分布式计算伴随着并行计算的出现而出现。早期,人们利用并行计算在一台计算机上同时完成多项任务,但是,并行运行并不足以构建真正的分布式系统,因为它需要一种机制来在不同的计算机之间或者运行在计算机上的程序之间进行通信。因此催生了多台计算机(两台以上)的分布式计算。早期的分布式计算系统主要面向科学计算与研究,如梅森素数大搜索计划(GIMPS)、SETI@home、Einstein@Home、BOINC等。随着互联网技术与应用的飞速发展,Facebook、Google、Amazon、Netflix、LinkedIn、Twitter等互联网公司变得异常庞大,它们开始构建跨越多个地理区域和多个数据中心的大型分布式计算系统。

分布式计算是一门计算机科学,主要研究对象是分布式系统。在介绍分布式计算的概念之前,首先简单讨论什么是分布式系统。简单地说,分布式系统是由若干通过网络互联的计算机组成的软硬件系统,且这些计算机互相配合以完成一个共同的目标(这个共同的目标通常被称为“项目”)。分布式计算的一种简单定义为,在分布式系统上执行的计算。

更为正式的定义为:分布式计算是一门计算机科学,它研究如何把一个需要巨大的计算能力才能解决的问题分成许多小的部分,然后把这些小的部分问题分配给多台计算机进行处理,最后把各部分的计算结果合并起来得到最终的结果。本质上,分布式计算是一种基于网络的分而治之的计算方式。

1.1.2 优缺点

在万维网(World Wide Web,WWW)出现之前,单机计算是计算的主要形式。自20世纪80年代以来,受WWW流行的影响,分布式计算得到飞速发展。分布式计算可以有效利用全球联网机器的闲置处理能力,助力缺乏研究资金的、公益性质的科学研究,加速人类的科学进程。下面详细介绍分布式计算的优点。

●高性价比。分布式计算往往可以采用价格低廉的计算机。今天的个人计算机比早期的大型计算机具有更出色的计算能力,而且体积和价格大幅下降。再加上Internet连接越来越普及且价格低廉,大量互连计算机为分布式计算创建了一个理想环境。因此,分布式计算相对传统的小型机和大型机等单机计算具有更好的性价比。

●资源共享。分布式计算体系反映了计算结构的现代组织形式。每个组织在面向网络提供共享资源的同时,独立维护本地组织内的计算机和资源。采用分布式计算,组织可非常有效地汇集资源。

●可伸缩性。在单机计算中,可用资源受限于单台计算机的能力。相比而言,分布式计算有良好的伸缩性,对资源需求的增加可通过提供额外资源来有效解决。例如,将更多支持电子邮件等类似服务的计算机添加到网络中,可满足对这类服务需求增长的需要。

●容错性。由于可以通过资源复制维持故障情形下的资源可用性,因此,与单机计算相比,分布式计算提供了容错功能。例如,可在网络的不同系统上维护数据库备份拷贝,以便当一个系统出现故障时,还可以访问其他拷贝,从而避免服务瘫痪。尽管不可能构建一个能在故障面前提供完全可靠服务的分布式系统,但在设计和实现系统时最大化系统的容错能力,是开发者的职责。

然而,无论何种形式的计算,都有其利与弊的权衡。分布式计算发展至今,仍然有很多需要解决的问题,其主要的挑战有:

●多点故障。分布式计算存在多点故障情形。由于涉及多台计算机且都依赖于网络来通信,因此一台或多台计算机的故障或一条或多条网络链路的故障,都会导致分布式系统出现问题。

●安全性低。分布式系统为非授权用户的攻击提供了更多机会。在集中式系统中,所有计算机和资源通常都只受一个管理者控制,而分布式系统的非集中式管理机制包括许多独立组织。分散式管理使安全策略的实现和增强变得更为困难,因此,分布式计算在安全攻击和非授权访问防护方面较为脆弱,并可能会影响到系统内的所有参与者。

●大规模资源调度的复杂性。资源调度通常是一个NP-hard问题,大规模资源调度往往具有很高的复杂性和不确定性。