分布式计算3精品PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分布式计算系统—分布式程序设计语言
1、分布式应用程序的分类 分布计算系统有很多不同类型的应用,比起其他体系结
构如单处理机或共享存储器的多处理机来有很大优势。在 分布计算系统上对应用程序进行程序设计的理由有四个: 减少单个计算的周转时间;增加可靠性和可用性;使用系 统的某些部分提供某些特殊功能;以及固有的分布式Fra Baidu bibliotek用。 所以分布式应用程序可分为以下四类:
分布式计算系统—分布式程序设计语言
●容错应用程序。对于像控制飞机或自动工厂这类应用程 序,使用单处理机是不可靠的。而分布计算系统具有 允许部分失效的特性,即由于各处理机具有自治性, 一个处理机的故障不影响其他处理机的正常工作,所 以可靠性高。不仅如此,程序和数据也可在若干处理 机上复制而进一步增加可靠性。如果一个处理机崩溃 了,其他处理机还可以继续执行该作业。 一些容错的应用程序也可在其他具有容错功能的紧密 耦合系统上运行。但如果要求系统能抵御像火灾、地 震和飓风等这类自然灾害的话,紧密耦合分布计算系 统是不够的,必须使用处理机在地理上是分布的松散 耦合分布计算系统。
●固有的分布式应用程序。有些应用程序本身就是分布的, 例如在两个用户工作站之间发送电子邮件。在这种情况 下,可以把工作站的集合看成一个分布计算系统,这种 应用程序必须在分布式硬件上运行。类似地,具有多个 办公室和工厂的公司可能需要建立一个分布系统,以使 不同地点的人们能够相互用机器联系。
分布式计算系统—分布式程序设计语言
分布式计算系统—分布式程序设计语言
●处理部分失效。在单机系统中,如果CPU失效,所有的工作立即停 止。但在分布计算系统中一些CPU失效时,其他CPU照样工作。可 利用这个性质编写一个能对硬件失效容错的程序。这对于容错应用 程序特别重要,其他应用程序也需要。例如对于能用于比赛的分布 式下棋程序来说,能对处理机失效容错是非常有用的。所以对分布 式程序设计支持的第三个要求是能对系统的部分失效进行检测并恢 复。
分布式计算系统—分布式程序设计语言
●处理机合作。分布计算系统的各个进程在执行分布式应 用程序时需要合作。运行并行的应用程序时,各个进程有 时需要交换中间结果,对它们的活动要进行同步。例如, 在控制自动工厂的系统中,各处理机要相互监视,检测出 失效的处理机。分布式操作系统的各服务程序需要相互支 持,例如进程服务可能需要文件服务的帮助以获得进程的 二进制映像文件。在分布式电子邮件中,必须在各个进程 之间转发报文。上述各个例子中,各个进程必须能相互通 信和同步,这是对分布式程序设计支持的第二个要求。
2、分布式程序设计与顺序程序设计的区别 上面介绍了在分布计算系统中运行的几类应用程序。那
么这些应用程序如何在分布计算系统上实现呢?在分布计 算系统上实现这些应用程序的活动就叫做分布式程序设计。
分布式程序设计和顺序程序设计的三个基本区别是:使 用多个处理机、处理机合作和存在着部分失效。
分布式计算系统—分布式程序设计语言
上述各点要求可由分布式操作系统来满足,或者由为分布式程序 设计专门设计的语言来满足。在分布式操作系统的支持下,应用程 序的编程可以使用扩充的顺序语言,带有可调用操作系统原语的库 子程序。这种方法的一个缺点是顺序语言的控制结构和数据类型通 常不适合分布式程序设计。
●使用多个处理机。分布式程序在不同的处理机上并行执 行其代码的不同部分。高性能应用程序使用这种并行性达 到加速执行的目的,它的目标在于如何最佳地使用可以得 到的处理机,考虑哪些计算需要并行计算是非常重要的。 在容错应用程序中,不同处理机执行的功能要根据增加可 靠性和可用性来决定。对于专用功能和固有的分布式应用 程序,功能可在一个给定的处理机上执行,因为这个处理 机具有某种能力或者包含有服务所需的数据。总而言之, 对分布式程序设计支持的第一个要求就是系统应该具有把 一个程序的不同部分分配到不同处理机上执行的能力。
分布式计算系统—分布式程序设计语言
●并行、高性能应用程序。通过并行性达到加速是在分布计 算系统上运行应用程序的最主要的原因。将一个程序的 不同部分放到不同的处理机上同时执行,就可以尽早地 完成。原则上,这些并行应用程序在紧密耦合系统上也 可以运行,但是这种系统的处理机数目有限,所以人们 在松散耦合系统上运行并行程序具有更大兴趣。 并行应用程序可进一步按使用的并行粒度分类。粒度是 在通信之间的计算时间的长短。大粒度并行应用程序用 大部分时间进行计算而不经常通信;细粒度并行程序经 常通信。细粒度和中等粒度并行适合于紧密耦合分布计 算系统;在松散耦合系统上,通信开销非常大,所以松 散耦合分布计算系统只适合于大粒度并行计算,当然, 大粒度并行计算也适合于紧密耦合分布计算系统。
分布式计算系统—分布式程序设计语言
3.1 分布式程序设计语言概述 在过去的二十年来,人们提出和建造了很多分布计算系
统,它们在设计目标、规模、性能和应用等方面差别很大, 这些差别还表现在如何进行程序设计。一些系统使用传统 的语言,然后再加上一些新的子程序库;而其他系统使用 完全新型的语言,这些语言是为分布式应用程序而特殊设 计的。
分布式计算系统—分布式程序设计语言
●具有专用功能的应用程序。一些应用程序可以被构造成 一组专用的服务程序。例如文件服务、打印服务、进程 服务、终端服务、时间服务等。在分布式硬件上实现这 些服务是很自然的。每个服务可使用一个或多个专用处 理机,因为这样可得到好的性能和高可靠性。可以跨过 网络向这些服务发送请求。如果增加新的功能或改进现 存服务的性能,可以很容易地通过增加新的处理机来实 现。
分布式计算系统—分布式程序设计语言
分布计算系统最初出现时,使用传统的顺序式语言加上 一些用于收发报文的子程序库进行程序设计。随着分布式 应用程序愈来愈普遍并且复杂化,人们对这种方法不再满 足,开始设计新型程序设计语言来支持分布式应用程序。 本章介绍这类语言的基本原理和设计特点,主要说明区别 分布式程序设计语言和传统的顺序式语言的三个主要特征, 即如何处理并行性、通信和部分失效,并介绍一些有代表 性的分布式语言的风格。这些语言有基于报文传递、会合、 RPC、对象、原子事务处理的,以及函数语言、逻辑语言 和分布式数据结构语言。