XPort项目由美国能源部DOE(Depart of Energy)下一代因特网NGI(Next Generation Internet)试验床计划[12]资助,由印第安那州大学、Argonne国家实验室ANL(Argonne National Laboratory)和劳伦斯市伯克利国家实验室LBL(Lawrence Berkeley National Laboratory)共同完成,其目标是用让远程使用科学仪器达到前所未有的方便程度,拿他们的话来说,就是“比到那儿用还方便”。
XPort使用的科学仪器是几个高亮度X射线结晶学设备,包括ANL的先进光子源APS[16](Advanced Photon Source)和LBL的先进光源ALS[17](Advanced Light Source),以及印第安那州大学的分子结构中心MSC[18](Molecular Structure Center)[13]。晶体在X射线的照射下产生衍射,其图像可以用来确定晶体的结晶单元的尺寸和原子的位置。对于大型的分子,衍射图案非常紧密,图像需要极高的分辨率才能被辨识。为此,象先进光源ALS和先进光子源APS这样的高亮度X射线源是必不可少的[19]。
XPort平台基于NGI和Globus,能提供远程仪器使用规划、仪器操作、数据获取、筛选和分析等功能,它将大大简化巨型分子晶体结构的设计和实施。为此,XPort需要结合先进的网络技术、中间件服务和远程仪器操控技术。XPort所涉及的技术问题主要包括:高速数据的采集、筛选、存贮、可视化和实时仪器控制等。
虽然像APS、ALS和MSC这些设施非常昂贵,具有很大的科学价值,然而在没有Xort之前,使用这些设施是非常不方便的。通常,一个科技工作者要想用上这种设备,需要预约排队好几个月,然后千里迢迢赶过去,接着采集数据又得花上好些天(同时也造成仪器的利用率低下),最后分析这些数据还得花很长的时间。有了XPort之后,科技工作者们就可以远程提交任务,交互式控制任务的执行,接收和分析初步的运行结果以确定任务的正确性,存贮和管理产生的数据,而且还可以与其他科技工作者即时共享其研究结果,探讨新的解决方法。
可见,XPort带来的好处是明显的,一方面它大大缩短了研究时间,提高了设备的利用率,使普通的科技工作者能够用上先进设备;另一方面它提供了一个协同研究的平台,使研究能够以团队的方式开展,为交叉学科研究创造了条件。应该说,正是NGI、Globus、Cactus、XPort这样的研究项目,为未来的“大科学”研究奠定了坚实的基础。
XPort的处理流程如图 3‑1所示[15]。电荷耦合组件CCD(Charge Coupled Device)每两秒采样一次,每帧数据大约9-32MB,平均一个实验过程大约需要12个小时。为了保证数据传输,XPort平台建立在DOE的NGI宽带网络试验平台上,专用128Mbit/s带宽[11]。采集的数据既在本地存贮,也使用宽带网远程传输给数据处理中心进行晶体的结构分析。分析的结果以可视化的形式呈现出来,提供给各地的研究人员协同分析。试验的流程如下:
1.用户把试验晶体样品用快递邮包发给LBL
2.通过远程可视会议,用户指导LBL技术人员在ALS设备上放置样品
3.用户指定初始的扫描参数
4.初步的扫描图像帧传回给用户
5.用户检查样品的正确性、放置的正确性以及样品是否形成了孪晶
6.如是,用户重新指定扫描参数、让技术人员重新放置样品或终止扫描过程
7.与异地研究人员协同处理采集到的大量数据
XPort的实现
XPort的体系结构如图 3‑2[13]所示。
底层主要使用了Globus的身份验证和任务执行功能。CoG工具包(Commodity Grid Kits)[20]的功能是使应用程序可以通过COBRA、Java、Perl和Python等访问网格服务,包括MDS、GRAM、GridFTP和GASS等。
通常,运行一个分布式应用程序是很困难的,科学门户(Science Portals)[21]提供一个Web界面让用户运行应用程序。Active Notebook是印第安那州大学开发的科学门户软件,它基于Apache Tomcat提供一个便携式网格计算问题解决环境。这个门户是一个安装在用户桌面计算机或笔记本电脑上的Web服务程序,它提供像“笔记本”一样简单的界面,供用户编写应用程序脚本及管理数据等。有了科学门户,用户只需要在Web页面上填写应用程序的运行参数,并指定初始数据的路径,就可以运行之。因而,用户不必关心程序的运行是如何完成的,大大降低了网格应用的门槛。
XPort最关键的中间件是公共元件体系工具箱CCAT(Common Component Architecture Toolkit)。元件体系CA(Component Architecture)是一种软件工程方法,它采用构件的思想,所有的构件都是经过封装的软件模块,其行为和接口经过严格定义。这样,元件体系能够很好地支持软件复用,降低应用程序的复杂度。CCAT是美国能源部公共元件体系计划CCAP(Common Component Architecture Project)[22]中的一部分,也是由印第安那州大学完成。相对于已有的桌面构件体系(如微软的COM、Java Beans、Gnome CORBA构件)和分布式构件体系(如Enterprise Java Bean、DCOM,、CORBA Component Model),CCAP专门针对用于高性能计算的并行编程环境,它更强调性能的提高。目前,CCAT已经演化成XCAT[24]。
图 3‑1所示的XPort处理流程中的每一个处理框都是一个CCAT元件,它们用C++或Java书写,运行于不同的计算机上。采集CCD数据的CCAT元件是与仪器结合的关键,它的实现却非常简单:CCD器件本身就带有相应的驱动程序,它把图像帧存入指定的目录。而CCAT数据采集元件只需要监视该目录的变动情况,把最新产生的文件传输给存贮服务器即可。
还有一个问题是CCAT基于Windows NT平台,而它使用的Globus功能却是基于Linux平台的,如何把这二者结合起来?解决方法[13]是开发一个基于Globus的代理程序,它通过SSH(Secure SHell)实例化NT上的元件功能。还有一种更为通用的机制,就是用Servlet来实例化CCAT元件,而不通过Globus资源管理器。
在CCAT之上,还需要使用其他软件系统提供的一些服务,例如,高性能存贮系统HPSS(High Performance Storage System)[26]提供的海量数据高性能网络存贮服务(数据移动器负责把CCD图像传送到海量存贮),巨型分子生物学家所使用的衍射图案分析工具包(如MOSFLG、CCP4和D*TREK等),以及用于用户之间、用户与设备提供者之间视频沟通的工具,等等。图 3‑3 [15]是一个在XPort上完成的晶体分析可视化结果。
图 3‑3 XPort上完成的晶体可视化结果