分布式计算简介

上传人:第*** 文档编号:34050005 上传时间:2018-02-20 格式:PPT 页数:38 大小:202.50KB
返回 下载 相关 举报
分布式计算简介_第1页
第1页 / 共38页
分布式计算简介_第2页
第2页 / 共38页
分布式计算简介_第3页
第3页 / 共38页
分布式计算简介_第4页
第4页 / 共38页
分布式计算简介_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《分布式计算简介》由会员分享,可在线阅读,更多相关《分布式计算简介(38页珍藏版)》请在金锄头文库上搜索。

1、第1章 分布式计算简介,1.1 定义1.2 分布式计算历史1.3 各种计算形式1.4 分布式计算的优缺点1.5 并发编程的类型,1.1 定义,分布式系统指通过网络互连,可协作执行某个任务的独立计算机集合。 他们是松偶合的,不共享内存。 分布式计算指在分布式系统上执行的计算。,1.2 分布式计算历史,单机互连(为了交换数据)互联网WWW(成为网络应用和服务的平台,包括电子邮件、搜索引擎、电子商务) 在早期,将一系列独立的计算机互连起来以便彼此能交换数据,是一种自然的发展过程。最初针对文件共享,采用电缆将计算机互连这一方式早在20世纪60年代就被使用。,然而,在一个或多个计算机程序为完成任务自动运

2、行时,这种方式需要人工参与,不能叫做计算机应用。这样的计算机应用需要数据交换,因此执行和完成应用中的任务,两台计算机要采用软件或硬件方法自发交换数据。,第一份Internet标准草案RFC,定义了参与主机如何通过消息实现彼此间的信息交换。虽然可能有许多人曾试图在小范围创建网络应用,但最早的网络应用是电子邮件。第一个电子邮件消息是在1972年在由4个节点组成的ARPANET上发送的。,允许数据文件在两台计算机间交换的自动文件传输机制是另一个自然发展,早在1971年就有了有关该机制的建议草案。 在今天,电子邮件和文件传输仍然是两项最流行的网络服务。 流传最久的网络服务是www。Web最初由日内瓦瑞

3、士研究院CERN的科学家作为网络上支持超文本访问的一类应用,构思于80年代。www从那时起逐渐成为网络应用和服务的平台,包括电子邮件、搜索引擎、电子商务。,www是Internet迅速得以普及的原因。 直到1990年,ARPANET,今天我们所熟悉的Internet的前身,在当时仍然主要供科学家、研究人员及学者使用。受到www流行的刺激,网络在20世纪90年代迅速发展。,历史趋势 我们是怎么到达互连服务和设施是下一波计算的驱动力这一阶段的呢? 最重要的原因是我们更深刻地了解计算和芯片制造过程的物理、化学基础。今天,功能强大的高性能计算机能构建在一两个小型芯片上,而且整个计算机系统可构造在一个很

4、小的主板上。 现代计算机三个方面的改进:体积、成本和计算能力。自20世纪60年代以来,计算机的体积、成本迅速下降,而计算能力却超速发展。,计算能力的最后一个延伸是,现代处理器已经有足够能力来支持高级面向对象语言,而且支持各对象之间的移动。这样的处理器体积非常小、价格也相当低廉,可在一些非常简单的设备上使用。 一旦有足够的计算能力,连接和通信将成为评判系统价值的主要标准。 今天,对大多数人而言,计算机只是用来执行少数应用,主要用于提供便捷通信:电子邮件和web。回想一下Internet最初随电子邮件迅速流行的速度,不难想像,web如今已和浏览器成为Internet上的主要服务。,1.3 各种计算

5、形式,了解使用计算机的各种计算形式,对理解本书所指的分布式计算的定义和内涵非常有益。1.3.1 单机计算 最简单的计算形式是,利用单台计算机进行计算。此时计算机不与任何网络互连,因而只能使用本计算机系统内可被即时访问的所有资源。该计算形式亦可称为单机计算。,在最基本的单机计算模式中,一台计算机在任何时刻只能被一个用户使用。用户在该系统上执行应用程序,不能访问其它计算机上的任何资源。在pc上使用诸如文字处理程序或电子表格处理程序等应用时,应用的就是这种被称为单用户单机计算的计算形式。,多用户也可参与单机计算。在该计算形式中,并发用户可通过分时技术共享使用单台计算机中的资源。分时技术在20世纪70

6、年代和80年代非常流行。为区别于小型计算机、微型计算机等较小规模计算机,我们通常将提供集中式资源服务的计算机称为大型机。用户可通过终端设备与大型机系统相连,并在终端会话期间与之交互。广泛使用的大型机系统有IBM 360系列、Univac 1100系列、使用该计算形式的应用通常要为执行某个特定功能设计一个独立程序,如大学或公司里的工资或帐务系统。,1.3.2 分布式计算 与单机计算模式相反,分布式计算包括在通过网络互连的多台计算机上执行的计算,每台计算机有自己的处理器和其它资源。用户可以通过工作站完全使用与其互连的计算机上的资源。此外,通过与本地计算机及远程计算机交互,用户可访问远程计算机上的资

7、源。www是该类计算的最佳例子。当通过浏览器访问某web站点时,一个如IE的程序将在本地系统允许并与运行于远程系统中的某个程序(即web服务器)交互,从而获取驻留于另一个远程系统中的文件。,1.3.3 并行计算 并行计算或并行处理这种计算形式与分布式计算相似但又不同。它采用多个处理器来执行单个程序。由于有多个引擎(CPU)执行,因此在理想情况下,并行处理使程序执行更快。但在实践中,将一个程序分割成可由多个CPU分别单独执行且无需相互交互的程序片段通常十分困难。,并行计算通常在一台多处理器计算机上执行,但根据Koniges的观点,并行计算也能通过在网络上互连多个计算机来执行并行处理。然而,这种类

8、型的并行处理需要非常复杂的分布式并行处理软件来支持。 采用并行计算,可以解决单台计算机无法解决的问题或采用别的方式会导致高代价的计算敏感问题。现在,并行计算主要应用于如生物、航空、天气预报、半导体设计等大规模科学计算领域。,1.3.4 协作计算 近来,分布计算已被应用到许多协作式计算项目,如SETI。这些项目将大规模计算分配到互联网主机上,使用工作站上的剩余cpu资源。 有兴趣的计算机用户可从SETIhome下载自由软件,然后当计算机空闲且在线时,该软件将从互联网站点上下载数据文件并在本地分析,分析结果将发送回站点,与其它的参与者提供的分析数据组合,最后用来搜索宇宙信号.,1.4 分布式计算的

9、优缺点,在WWW出现之前,单机计算是主要的计算形式。然而,自20世纪80年代以来,如果说分布式计算的重要性不如单机计算高,但至少已与单机计算同样重要。 有许多原因促成了分布式计算的流行:,低廉的计算机价格和网络访问的可用性。今天的个人计算机比早期的大型计算机具有更出众的计算能力,体积和价格不断下降。再加上Internet连接越来越普及且价格低廉,大量互连计算机为分布式计算创建了一个理想环境。 资源共享。分布式计算体系反映了计算结构的现代组织形式。每个组织在面向网络提供共享资源的同时,独立维护本地组织内的计算机和资源。采用分布式计算,组织可非常有效地汇集资源。例如,web就是一个为组织内外提供文

10、档及其它资源共享的强大平台。,可伸缩性。在单机计算中,可用资源受限于单台计算机的能力。相比而言,分布式计算有良好的伸缩性,对资源需求的增加可通过提供额外资源来有效解决。例如,将更多支持电子邮件等类似服务的计算机增加到网络中,可满足对这类服务需求增长的需要。,容错性。由于可以通过资源复制(镜像)维持故障情形下的资源可用性,因此,与单机计算相比,分布式计算提供了容错功能。例如,可将数据库备份拷贝维护到网络的不同系统上,以便在一个系统出现故障时,还有其它拷贝可以访问,从而避免服务瘫痪。 尽管不可能构建一个能在故障面前提供完全可靠服务的分布式系统,但在设计和实现系统时最大化系统的容错能力,是开发者的职

11、责。分布式计算的容错性是在研究领域内一个备受关注的复杂主题。,任何形式的计算,都有其利与弊的权衡。上面所提到的利往往又被分布式的弊抵消了。分布式的主要缺点有: 多点故障。分布式计算存在多点故障情形。由于涉及多个计算机,且都依赖于网络来进行通信,因此一台或多台计算机的故障,或一条或多条网络链路的故障,都会导致分布式系统出现问题。,安全考虑。分布式系统为非授权用户的攻击提供了更多机会。在集中式系统中,所有计算机和资源通常都只受一个管理者控制,而分布式系统的非集中式管理机制包含许多独立组织。分散式管理使安全策略的实现和增强变得更为困难;因此,分布式计算在安全攻击和非授权访问防护方面较为脆弱,并可能会

12、非常不幸地影响到系统内所有参与者。一些众所周知的Internet攻击(如蠕虫病毒)清楚证明了这个问题。,1.5并发编程的类型,分布式计算包括由多个并行执行进程组成的并发编程。有三种类型的并发编程:(1)运行于多台计算机上的并发进程 进程间通过网络交换数据实现交互,但进程执行却完全独立。必需在参与程序中编写逻辑来支持进程间的交互。如何在程序中表示这种逻辑是本书的主题。,(2)运行于单台计算机上的并发进程 现代计算机系统可运行多任务操作系统,允许多个任务或进程并发执行。并行执行可以是真实的或者虚拟的。单台计算机上的真的并行任务仅在计算机具有多个cpu时才可行,此时每个cpu可执行一个独立进程。在只

13、有一个cpu的计算机上,常用分时机制来允许多个进程轮流执行,从而形成多个进程并行执行的场景。 多任务是操作系统的一个功能,因此不需要别的软件来支持这种并发编程,也不需要在程序中包含别的软件逻辑来触发多任务。,(3)进程内并发编程 除进程间的并发编程外,也常需要在一个程序内部触发多个并发执行的任务。例如,在某个程序的一个用户界面窗口在无限期等待用户输入时,运行其它任务可能非常必要。从性能角度希望程序内多个任务并行执行,可能也很有必要。 进程内的并行程序执行一般通过使用操作系统提供的两种工具来实现。,父进程和子进程 运行过程中可能会衍生附属进程,或子进程。通过真实或虚拟多任务,父进程将和子进程一起

14、并行执行。 子进程是一个完全进程,由一个执行程序及自身的当前值、状态信息组成,其中部分信息从父进程继承。子进程终止时会通告父进程。,线程 进程也可以衍生线程,也是轻量级的进程。线程携带最少量的状态信息,但具有的行为和进程相同。由于线程需要更少开销,因此更优于子进程。程序软件编写时必须包含支持子线程衍生及在由同一父进程衍生的多个线程间协调、同步、执行的处理逻辑。 并发执行线程可能会导致竞争情况的发生。当程序中的一系列命令以任意交叉方式并行执行时,就可能出现竞争,并产生不确定的执行结果。,在代码段中提供互斥机制可避免条件进程。互斥机制可保证该代码段中的命令在同一时刻只能被一个线程执行。这样的代码段

15、称作临界区。 能防止竞争情况的多线程程序称作线程安全的。,java线程 JVM支持多线程并发执行应用的运行。当JVM启动时,通常有一个线程调用某些类中的main函数。其它线程可由活动线程衍生,每个进程都可以和其它进程并行独立运行,直到终止。 为支持线程编程,java提供了一个Thread类和一个Runnable接口。 在java中有两种创建新线程的方法:,(1)将类声明为Thread的子类。该子类需覆盖类Thread的run方法。当该子类的一个实例被创建和启动时,run方法中的代码将和main线程并行执行。(2)声明一个实现Runnable接口的类。该类将实现接口中的run方法。当该类的一个实例被创建和启动时,run方法中的代码将和main线程并行执行。 下图展示了采用第一种方法创建一个新执行线程的代码段。,public class RunThreads public static void main(String args) SomeThread p1=new SomeThread(1); p1.start(); SomeThread p2=new SomeThread(1); p2.start(); SomeThread p3=new SomeThread(1); p3.start(); ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号