摘要:作为使用低成本的硬件来达到高性能计算机性能的一项技术,分布式计算技术近年来发展迅速,并且在科研、数据搜索、复杂数据计算等方面发挥了重要作用,如:中间件技术;P2P技术;移动Agent技术;网格技术;云计算;Web Service等,这里介绍这些技术和国内外应用情况。
关键词:分布式计算;云计算;并行计算;Web Service;网格计算
中***分类号:TP393.02文献标识码:A 文章编号:1009-3044(2011)22-5463-03
Introduction of Distributed Computation
DUAN Xiao-guo
(College of Information Science and Engineering, Shandong University of Science and Technology, Qingdao 266500, China)
Abstract: Distributed Computation system is developing quickly, we can use cheap hard ware to do some research work which only high performance computer can do before by this technology, today distributed computation system is an important technology in research, database search, complex computation and other fields. Such as: P2P, Mobile Agent, Grid Computing, Cloud Computing, Web Service. Introduce this technology and some application examples here.
Key words: distributed computation; cloud computing; parallel computing; Web Service; grid computing
1 综述
分布式计算和并行计算技术为研究开发高性能计算机另辟蹊径,使用普通的计算机通过网络连接之后,通过这两种计算技术来完成以前只有在高性能计算机上才能进行的工作,随着技术的发展和进步,分布式计算技术已经使参与分布式计算的普通计算机的“联合计算能力”超过了单台超级计算机。分布式计算技术已经有十几年的研究历史, 但现在仍然是计算机研究领域的一片热土,在不同的应用领域发展起来特点各异的分布式计算技术的分支。
1.1 分布式计算国内外研究现状[1]
现在对分布式计算技术的研究主要集中两个方面:分布式操作系统和分布式计算环境。经过近20年的研究,已经有多种分布式计算技术在各不同领域得到应用,下面是比较主流的几种技术:中间件技术、P2P技术、移动Agent技术、网格技术、Web Service技术,这些技术已经比较成熟,且得到了大家的认同,已经在其适合的领域内用于科学研究或大规模数据计算。
整体研究水平来看,国内的研究水平和国际上发达国家有明显差距,我国虽然拥有数量巨大的计算机用户和网络用户,但了解或者知道分布式计算的用户却不多,大部分人或者绝大部分用户使用计算机进行日常办公、网上查询、聊天等工作,只有部分高校和科研机构才参与分布式计算,这和西方欧美发达国家相比,我们的理论起点低,研究的深度和应用的广度都和发达国家有巨大的差距。
1.2 分布式计算国内外应用现状[1]
现在分布式计算已经应用在科研、教育、天气预报分析、数据库搜索、生物技术等诸多领域,以下是几个比较典型的例子:
SETI@home是国际上比较著名的一个分布式计算应用的项目。这个项目主要是通过使用参与分布式计算的计算机***计算程序来对射电望远镜收到的海量信号进行计算分析,目的是确定地球之外有无类人或类似地球生物的生命存在,寻找宇宙中的生命体,我们国家也有一些机构和个人参与这个科研项目。
若说SETI@home和我们的实际生活没有多大关系,那么下面这两个项目则和我们有密切的关系。Climateprediction工程是分布式计算技术在气象预测领域内的成功应用例子之一,研究者首先建立气象计算模型,全球各地巨的气象数据输入计算程序,任何参加这个项目的组织和机构或者个人,都可领到合适的计算任务,并把计算的结果返回,通过海量的计算来组建地球气象模型。
Folding@home是另一个著名的分布式计算工程,这个项目主要是研究蛋白质折叠、、聚合及由此过程引起的一些相关疾病。使用计算机来模拟蛋白质的折叠和聚合过程需要海量的计算,分布式计算可以通过利用大量的闲散计算资源,甚至是跨越国界、民族的界限,来承担这个巨大的计算任务,研究这些疾病的产生原理,为攻克和预防这些疾病做理论上的分析,目前有多个国家的科研机构和组织参与这个项目,我们中国也有人参与这个项目。
作为应用分布式计算最成功的组织之一:谷歌,他的文件管理系统被作为一个典范,许多学者对其研究,一些同行进行效仿,甚至有些人将谷歌的文件管理系统作为一门学科来研究,GFS这个原本是谷歌自有名词缩写因此也成了这个行业应用分布式计算的一个典范。
和上面的应用例子类似的分布式计算工程有很多,分布在不同的国家和地区,但这些项目大都互无联系,甚至每个项目都使用一个不同的软件,使用不同的分布式计算技术,如何整合这些互不关联的项目,更大限度地发挥参与这些工程的计算机的能力,这也是一个研究课题,美国加州大学伯克利分校已经建立了一个开放的网络计算平台,即行内皆知的BOINC(BERKELEY OPEN INFRASTRUCTURE FOR NETWORK COMPUTING),这个平台的主要功能是把不同的分布式计算项目连接起来,对参与这些项目的计算资源进行统一合理分配,从而更有效的利用这些计算资源,提高计算效率。
2 分布式计算的关键技术
2.1 关键技术一:中间件技术[2]
中间件技术是比较早期的分布式计算技术,所谓的中间件技术,就和字面上的意思一样,是一个联络不同技术和操作系统的纽带,通过这个软件,分布式应用软件可以在使用不同的操作系统和技术的计算机之间进行计算资源共享,IBM和SUN Microsystems以及AT&T贝尔实验室都对中间件技术的研究和发展做出重要贡献,贝尔实验室于1984年的Tuxedo应该算是早期比较成熟的中间件技术产品,这个负责屏蔽不同操作系统、编程语言、通讯协议的中间件就负责计算资源的管理和分配以及网络通信。经过十几年的发展,多种技术开始融合,中间件技术又发展出不同层次和类型的多个产品,例如:自适应中间件、移动中间件、对象中间件、消息中间件、数据库中间件,远程过程调用中间件等等。
中间件技术是分布式计算技术中的一种基础技术,其他一些分布式计算技术和中间件技术结合以优化分布式计算技术,例如:网格计算。
2.2 关键技术二:网格技术[3]
网格计算是目前最重要的分布式计算技术之一,它通过网络系统将分布在不同地点或区域的计算机资源(包括各种硬件和软件以及信息数据等)连接成一个巨大的“异构计算机”,虽然这些计算资源分布在各自不同的计算机上,这些计算机可能有不同的操作系统、不同的技术协议,但是通过网格技术组建的这个系统却可以象一台计算机一样对这些资源进行管理和利用,从而完成一些计算规模巨大的复杂运算和数据处理任务。从另一个意义上说,这种计算资源的统一管理和共享,不仅仅为提供复杂就算提供支持,还可以在很大的区域范围内,打破企业、组织和国家界限,避免重复资源投资和浪费,充分利用自己的计算资源,因此网格计算在分布式计算技术中占有十分重要的地位。
网格有多种体系结构,其中Foster等提出的五层沙漏结构(***1)为比较典型的一种体系结构,自下向上分别是构造层、连接层、资源层、汇聚层和应用层;还有一种典型的结构体系:开放网格服务结构OGSA(Open Grid Services Architecture),这个结构是结合Web Service技术的网格体系,OGSA是以服务为中心的“服务结构”,定义了“网格服务”的概念,网格服务是一种Web Service,该服务提供了一组接口。
网格系统大致都可以划分为三个层次的基本结构:底层(构造层),主要是分布在各个计算机上的资源,硬件和软件、信息数据等;中间层,主要负责屏蔽底层资源的异构性,是上面提到的中间件技术;应用层,这是我们的工作平台,通过应用层来组织协调和合理利用底层的资源来完成分布式工作任务。
网格(GRID) 归诸于一个下部基础构造,它使得高端计算、网络、数据库和私有科学工具的集成和协作使用成为可能,并且,能够被多个组织所管理。网格应用通常包含大量的数据或计算,经常需要组织间的安全的资源共享。因此,它们不易被今天的Internet和WEB基础构造所处理。
2.3 关键技术三:移动Agent技术[4]
移动Agent是一种可以在构成分布式计算系统的各节点移动的软件Agent,软件Agent应该是人工智能技术发展起来的一个产物,人工智能的研究主要解决知识表达、机器学习、推理等类似人的智能的算法问题,而软件Agent就具有类人的智能,可以自主管理,能对环境做出响应,甚至主动行动,进行推理计算来完成任务。我们一般把软件Agent看做是在一台机器上运行的一个程序,而移动Agent则是可以自主在网络上构成分布式计算系统的各节点之间进行移动的一个程序。这个程序带着自己的任务找到可以完成这个任务的节点(这个节点有完成这个任务所需要的数据、硬件、软件等资源),通过网络移动到这个节点,在此暂时定居,利用这个节点的资源进行计算,计算结束后,这个Agent携带计算结果通过网络自主移动到下一个需要达到的节点,这种模式可以减少网络拥堵,在一个节点盘踞期间,甚至可以断开网络连接也不会影响其正常工作,只要在它完成任务需要移动时恢复网络连接即可。这种移动类似密封采蜜,一朵花上的资源用完之后飞到另外一朵花上,满载之后(完成任务)飞回蜂窝,卸载蜂蜜,进行第二次行动。这和传统的数据调用方式要好得多,一来可以减少大量数据在网络上传输,对带宽的要求就低了;二来可以减少大量数据传递带来的数据错误,提高计算的效率和鲁棒性;***2和***3分别是传统网络计算和移动Agent的示意***。
***2 传统网络计算方式 ***3 移动Agent
移动Agent技术自90年代开始发展很快,因其本身就是一种适用性很强的分布式计算模式,且具有极好的鲁棒性,对网络的要求低,故这项技术是目前分布式计算技术研究的一个热点。
2.4 关键技术四:P2P技术[5]
P2P(Peer-to-Peer)对等网络应该是资格比较老的一项技术,例如TCP/IP协议,并没有对客户机和服务器做区分,所谓的“对等”就是地位相同,在网络中的节点处于同样的地位,没有客户端和服务器的区分,这些地位相等的节点可以互相进行资源利用和数据共享,不需要通过服务器来转接和通信,这样可以减少对服务器的依赖,也就降低了对服务器的性能要求(软件、硬件要求)。当然,纯粹的对等网也有其弊端,为了解决这些问题,一些分支和混合技术发展起来,例如为了解决P2P搜索速度慢的问题,在对等网中仍然设置服务器,但是服务器只提供搜索索引,各节点可以快速在服务器上查到要搜索的资源目录和地址,然后直接去目标地址完成资源交互。为了解决热点资源网路堵塞的问题,数据传输方式由点对点方式发展为多点对多点传输,该项技术已经在现在的网络上广泛应用。点对点传输只能在在源节点和目标节点之间传送数据,若一个节点的资源对应多个目标节点,其传送效率就低了,多点传送解决这个问题,将数据源分割成多个数据包,这些数据包可以不依照顺序给各目标节点发送,同时收到数据包的目标节点可以作为其他目标节点的源节点,给其他未收到该数据包的节点传送数据,使用这种技术,***源数据的节点越多,实际传送的效率就越快,但是若不能将全部数据包都收齐,这些数据包将无法连接起来,也就无法使用,点对点传输则不存在这个问题。
2.5 关键技术五:Web service技术[6]
并行计算和分布式计算的优点就是发挥“集体的力量”,将大任务分解成小任务,分配给多个计算节点同时去计算,起初的并行计算可以在一台计算机上执行,也可以提高运行效率,现在的分布式计算已经将计算扩展到多台计算机,甚至是多个网络,在网络上有序执行一个共同的任务,当然离不开Web技术,但在分布式计算发展起来之前的网络协议并不能满足分布式计算的要求,于是产生了Web service技术,简单地说,这种技术的功能和中间件的功能有相似之处:Web service技术是屏蔽掉不同开发平台开发的功能模块的相互调用的障碍,从而可以利用 HTTP 和 SOAP 协议使商业数据在 Web 上传输,可以调用这些开发平台不同的功能模块来完成计算任务。这样看来,要在互联网上实施大规模的分布式计算,就需要Web service做支撑,因此很多人认为这项技术是分布式系统继续研究和开发的理想模型。
2.6 关键技术六:云计算[7]
云计算也是分布式计算技术的一种,其最基本的概念,是将巨大的计算处理程序分拆成无数个小的子程序,再将这些小程序分配给庞大的计算机网络系统经搜寻、计算分析之后将处理结果回传给用户。所谓的“云”,最初来自“电子云”的概念,这种子程序的分解是数量巨大,或者可以想象成将水滴分解到蒸气一样的微小颗粒,也就是“云”状态,如此多的任务,分配给同样多的计算节点去计算,每个节点的任务很小,计算也很快,但如何管理这如云一样的庞大网络,就大有文章。使用这项技术,服务提供者可以在短时间内(数秒或者几分钟),达成处理数数量巨大的信息,达到和“超级计算机”同样强大效能的网络服务。最简单的云计算技术在网络服务中已经随处可见,例如搜寻引擎、网络信箱等,使用者只要输入简单指令即能得到大量信息。进一步的云计算不仅只做资料搜寻、分析的功能,更可计算一些像是分析DNA结构、基因***谱定序、解析癌症细胞等。稍早之前的大规模分布式计算技术即为“云计算”的概念起源。
3 结论
分布式计算作为一项快速发展的计算机技术,因有低运营成本高计算性能的优势,且目前我国有丰富的闲置计算资源,其发展前景十分乐观,关于对该项技术的研究,我国明显落后于发达国家,已经成为计算机大国,存在严重的资源浪费和闲置,现在分布式计算技术只是在一些高校、科研机构内作为研究和应用的对象,分布式计算技术虽然发展迅速,但各项技术大都存在一些问题,例如:数据安全问题、网络异构问题等等,还有巨大的研究和发展潜力。
参考文献:
[1] 邓传***,马志民.分布式计算模型探讨[D].福建:厦门大学,2005.
[2] 奚丽倩,袁国良.浅析中间件技术的研究现状[D].上海:上海海事大学,2009.
[3] 赵东.网格计算环境中若干关键技术的研究[D].成都:电子科技大学,2003.
[4] 于涛,张继棠,雷飞鹏.Mobile Agent技术应用[D].重庆:重庆邮电大学,2007.
[5] 周文莉,吴晓非.P2P技术综述[D].北京:北京邮电大学,2006.
[6] 杨涛,刘金德.web service技术综述――一种面向服务的分布式计算模式[D].四川:电子科技大学,2004.
[7] 邓倩妮,陈全.云计算及其关键技术[D].上海:上海交通大学,2009.
注:本文中所涉及到的***表、注解、公式等内容请以PDF格式阅读原文