让每个人成为“科学家”——分布式计算技术解析及实现
技术空间
或许很多人在小时候都有一个成为科学家的梦想,幻想着自己在未来的日子里为人类的进步作出伟大的贡献……当然现实和理想总是有着巨大的差距,并不是每个人都能成为一名科学家。但是,我们总会在一些时候想象着自己能参与高科技活动或者一些伟大的项目,来实现自己幼时的愿望。还有这种机会么?答案是肯定的。只需要一部电脑我们就能达成这个目标——利用我们手中电脑闲置的处理能力来参与分布式计算,你就会发现此时,你已经是一名不为人所知的“伟人”!
聚少成多的分布式计算
或许很多人对分布式计算这个概念还很模糊,什么是分布式计算?分布式计算的用途又是什么?事实上,不同的人对于分布式计算的理解是不同的,我们可以用不同的方式定义分布式计算的具体含义。其中一种较为普遍的定义就是,分布式计算就是利用网络把成千上万台计算机连接起来,组成一台虚拟的超级计算机,并利用它们的空闲时间和存储空间来完成单台计算机无法完成的超大规模计算应用的求解。
分布式计算的最早形态出现在上世纪80年代末的Intel公司。随着Internet的迅速发展和普及,分布式计算的研究在上个世纪90年代达到了高潮。Internet技术实现了计算机硬件的连通,Web则实现了网页的连通,而分布式计算技术的目标就是实现Internet上所有资源的全面连通,把整个Internet整合成一台巨大的超级计算机,实现计算资源、通信资源、软件资源、信息资源、知识资源的全面共同体。至于目前热炒的云计算,实际上也属于分布式计算,只不过云计算将这种分布式计算的科学研究方式运用在了商业上,目前如微软、YAHOO、IBM以及Google都在用云计算的概念兜售自己的商品,这实际上是托了分布式计算的福。
分布式计算的用途和原理
可能不少人会问,分布式计算的作用到底是什么?什么才算是“超大规模计算应用”?分布式计算是一种计算求解的方法,一般来说,包括一些复杂的科学难题、急需解决的科研课题或者极富挑战性的科学项目,都可以利用分布式计算。简单而言,分布式计算主要用于需要多人或者一个极为庞大的计算量才能解决的项目,比如复杂的数学问题、密码破解、生物学研究、宇宙学研究、信号处理等等。
看到这里是不是觉得加入分布式计算很有成就感?从这些实际的例子可以看出,这些项目都需要很庞大的计算量,仅仅由单个的电脑或是个人在一个能让人接受的时间内计算完成是决不可能的。在以前,这些问题都应该由超级计算机来解决。但是,超级计算机的造价和维护非常的昂贵,这不是一个普通的科研组织以及个人所能承受的。而分布式计算恰恰是一种廉价、方便,更不需要专业机构去维护的计算方案。
随着计算机的普及,大多数人已经拥有了电脑或者其他可用于计算的设备。但很多电脑平时处于闲置状态,即使在开机状态下中央处理器的潜力也远远不能被完全利用。实际上在大多数时候,一台家用的PC都将时间花费在“等待”上面,即使是在人们使用电脑的时候,比如看视频、聊天等等,处理器或者是GPU长期依然处于“工作不饱和”的状态。而互联网的出现, 使得连接调用所有这些拥有限制计算资源的计算机系统成为了现实。

分布式计算实现的技术
分布式计算研究主要集中在分布式操作系统和分布式计算环境研究两个方面。但随着Internet技术的飞速发展,分布式计算的研究热点也从以分布式操作系统为中心的传统模式转换到以网络计算平台为中心的实用分布式技术,并取得了较大的成功。所以现在,无论是什么电脑和操作系统,都可以利用网络来实现分布式计算,而无需担心平台的不统一,这就大大降低了分布式计算的门槛和实现途径。目前能实现分布式计算的方式很多,所采用的技术也不同,不过对于我们普通人而言,在没有一个专业机构的支持下进行分布式计算,主要还是通过网格技术、P2P技术以及Web Service技术来实现。
网格技术
网格计算是通过Internet把分散在各处的硬件、软件、信息资源连结成为一个巨大的整体,从而使得人们能够利用地理上分散于各处的资源,完成各种大规模的、复杂的计算和数据处理的任务。网格计算建立的是一种新型的Internet基础支撑结构,目标是将与Internet互联的计算机设施社会化。网格计算的发展非常迅速,数据网格、服务网格、计算网格等各种网格系统在全球范围内得到广泛的研究和实施。网格计算是分布式计算技术通向计算时代的一个非常重要的里程碑,也是目前比较常见的一种分布式计算实现方案。
P2P技术
P2P系统由若干互联协作的计算机构成,是Internet上实施分布式计算的新模式。它引导网络计算模式从集中式向分布式转移,也就是说网络应用的核心从中央服务器向网络边缘的终端设备扩散,通过服务器与服务器、服务器与PC机、PC机与PC机、PC机与WAP手机等两者之间的直接交换而达成计算机资源与信息共享。一个P2P系统至少应具有如下特征中的一个。第一,系统依存于边缘化(非中央式服务器)设备的主动协作,每个成员直接从其他成员而不是从服务器的参与中受益;第二,系统中成员同时扮演服务器与客户端的角色;第三,系统应用的用户能够意识到彼此的存在,构成一个虚拟或实际的群体。P2P技术在目前已发展为一种重要的分布式计算技术。
Web Service技术
Web Service技术是对Web进行扩展,为相互间连接的软件提供服务。Web Service技术是一种分布式应用程序,它可以通过编程并使用标准的Internet协议,像HTTP和XML ,将功能展示在互联网和企业网内部。Web Service结合了以组件为基础的开发模式以及Web的出色性能,一方面Web Service具有黑匣子的功能,可以在不关心功能如何实现的情况下重用;同时,与传统的组件技术不同,Web Service可以把不同平台开发的不同类型的功能块集成在一起,提供相互之间的互操作。Web Service技术是新一代的分布式计算和处理技术,主要是因为它在Internet 上表现出来的高度扩展性。Web Service技术是跨平台的,连接非常松散,采用的是性能稳定的异步技术,在改变任何一端接口的情况下,应用程序仍可以不受影响地工作。它为集成分布式应用中的中间件及其他组件提供了一个公共的框架,无须再考虑每一个组件的具体实现方式。


如何启动你的分布式计算?
看到这里,相信不少人都已经对分布式计算产生了兴趣,那么如何才能在计算机上实现分布式计算呢?其实很简单。一般来说,分布式计算都是由客户端和服务器端两类软件组成,服务器端软件掌握在开发项目的大型机构手中,而客户端一般都是由这种科研机构通过网站或者其他途径发布,普通的电脑只要到网站去下载相应的软件程序即可。下面简单介绍几个常见的分布式计算软件。
Gpugrid.net
Gpugrid.net是在分布式计算基础上将许多NVIDIA显卡联合起来,利用闲置的GPU资源进行高性能的全原子生物分子模拟运算的项目。GPU也是目前比较新的电脑容易闲置的部分资源。
Quake-Catcher
Quake-Catcher(地震猎手)严格来说是一个分布式感应项目,它是利用笔记本中的重力感应装置作为分布式地震仪的联网地震预测系统,台式机也可以通过配备USB重力传感器进行参与。该项目由加州大学和斯坦福大学共同主持,目前该网络已经遍布全球,并及时对全球多次地震发布预警。
实际上除了PC,包括PS3、Xbox360等游戏机也有专用的分布式计算软件,所以实现分布式计算的途径很多,这也为更多人投入这项事业(算是公益事业吧……)打下了良好的基础。

写在最后>>
目前,分布式计算已经在全球范围内开展,但是它依然有着自己的一些问题。首先分布式计算技术没有完整的统一的标准,很难形成稳定的研究方向。其次是缺乏可行的软件方法学使得分布式计算软件的质量、开发进度等很难得到保证。此外,现在的网络是一个异构的环境,首要的任务是如何互相识别,目前没有方法可智能地识别这些资源,这就导致任何一种分布式计算技术只能在一定的范围内使用。而且,分布式计算技术面临的最大挑战就是不断增长的网络规模,整个平台安全性方面的问题也比较严重。
不过随着Internet上的硬件、软件、数据库的进化和扩展,要实现更多的可能性,分布式计算是一个非常理想的途径,如何更多更好地利用互联网来整合资源,为人类提供更多的信息以及更好的服务,是未来计算机发展的方向。现在已经有更多公司、机构在分布式计算上进行大量的研究,包括商业(即云计算)的以及非商业的。从这点而言,我们也能看到分布式计算在未来的前景。