李晓科,季凯帆,邓 辉,王 锋,2,耿艳波
(1.昆明理工大学云南省计算机技术应用重点实验室,云南 昆明 650051;2.中国科学院云南天文台,云南 昆明 650011)
近年来,随着天文数据雪崩式的膨胀,在天文研究中利用自动化工具提高科研效率势在必行,使用分布式计算技术发布天文数据,可以在一定程度上克服上述不足。Web Service使用了开放的HTTP、XML协议为异地异构用户提供服务,符合SOA(面向服务架构)的理念——将业务服务化,与面向对象的体系相比,它可在不改变现有软件系统的情况下添加或更新服务以解决新的需求。因此,跨平台、开放、松耦合的Web Service很好地符合了天文数据发布的需求,将各种天文工具及资源发布成Web Service,更有利于实现数据密集型在线天文研究环境[1]。
目前主流的天文数据发布主要使用基于Web页面和基于REST风格的Web服务两种发布技术,如SDSS、NED等。使用Web页面用户可以在浏览器界面中查询和获取数据,但返回数据结果通常包含在固定的页面格式中,难以根据用户的需要组合调用多个服务以实现订制化的功能;而基于REST风格的Web服务由于缺少足够的语义且没有服务自身的描述,所以也不利于在自动化工具中实现机器自动识别并调用。相比以上两种方式,具有标准传输协议和服务定义的SOAP风格的Web服务更适合在自动化工具中调用,以便天文学家进行数据密集型的天文数据处理和研究工作。
国外2002年开始将Web Service应用于虚拟天文台并进行相关理论研究。应用方面提出并实现了通过Web Service联合数据库的方法——SkyQuery用于将分布于互联网中的天文数据联合,以组成能解决复杂的分布式计算任务的虚拟天文台[2];理论方面提出在虚拟天文台中通过Web Service实现一个互操作服务的多层次架构,底层包括了由大多数数据提供商实现的简单标准的服务,通过这种方式有助于建立一个模块化的架构,可以在这个核心层建立更复杂的应用[3];同年Jim Gray提出建立全球望远镜的Web Servive时需要对天文目标进行对象化定义,被归档的天文数据都用类的实例表述。同时提到SkyQuery在虚拟天文台中数据联合上的尝试反映和暴露了全球望远镜在数据整合上的很多问题[4]。这些研究反映出将Web Service应用于虚拟天文台中是可行的,同时也反映出在虚拟天文台中制定Web Service标准的必要性。
国内崔辰州在2003年提出Web Service是虚拟天文台的三大支柱技术之一,通过开放网格服务架构(Open Grid Services Architecture)将把Globus为代表的网格技术标准与以商用为主的Web Services的标准结合起来[5]。在此之后中国虚拟天文台利用Globus Toolkit工具包,结合国际虚拟天文台联盟制订的天文数据标准,对现有的异构分布式的数据资源进行服务化封装[6]。此外,国内虚拟天文台对Web Service的应用还包括SkyMouse,其整合了大多数的天文服务如SIMBAD、NED、ADS、Vizier等[7];利用JNI和Web Service等技术设计出面向星历研究人员和天文程序开发人员的星历计算服务平台——China-VO Ephemeris WS[8]。这些研究主要集中在将Web Service应用于对天文数据的整合,而将Web Service应用于天文数据发布的研究则较少。
国内外目前主流的天文数据发布方式有Web页面、客户端和Web服务,其中Web服务通常作为API编程接口向二次开发的用户开放。而在Web服务中大多数是REST风格的Web服务[9]。REST是Roy Fielding在他的博士论文中提出的一个名词,它代表REpresentational State Transfer,是对Web体系结构设计原则的一种描述。在REST系统中,所有资源都有一个URL,包括Web服务也可以用URL来标识。根据IVOA中的标准,多数的数据服务都是基于REST风格的,例如简单锥型检索(Cone Search)接收HTTP GET的参数并返回VOTable,但是REST风格的Web服务对于语义的支持仅限于URI中,并且相比SOAP风格的Web服务缺少了传输协议和服务的定义,因此不利于在自动化工具中实现机器自动识别并调用。
为了使天文Web服务具有互操作性,需要遵循国际虚拟天文台联盟(IVOA)相关的数据访问标准接口规范。在IVOA发布的一系列技术规范中,与Web服务相关的有IVOA Web服务基本概要(Web Service Basic Profile)和IVOA支持接口(Support Interface),以下对二者以及本文中将实现的锥型检索服务规范做简单介绍。
IVOA基本概要描述了在实现基于SOAP的Web服务时要考虑的规则,并说明如何检查是否符合这些规则。该规范立足于现有Web服务互操作性组织(WS-I)的工作成果,并针对虚拟天文台的需求和实际提出部分取代和补遗的规则。主要规则如下:IVOA基于SOAP的Web服务必须符合的WS-I基本概要1.1;必须符合IVOA支持接口(VOSI)规范,根据服务类型提供一系列的支持接口[10]。
IVOA支持接口详细描述了作为IVOA Web服务应提供的最少接口,以便提供支持虚拟天文台管理的基本功能。这些接口在不改变原服务状态的情况下返回元数据,可以通过以下几种方式实现:在现有服务的端点中添加;在新服务的端点中添加;作为单独的URL资源而不是SOAP协议的方式提供。但在目前版本的规范中,仅仅使用最后一种方式[11]。
锥形检索已经由NVO加入IVOA标准化进程,新的名称是简单锥形检索(Simple Cone Search)协议。通过锥形检索天文学家可以通过圆形天区中心坐标和搜索半径确定天区范围,创建并搜索给定天区中表格化的天体目标。实现符合IVOA规范的锥型检索服务必须遵循以下规范:(1)服务必须相应由基本URL和约束条件构成HTTP GET请求,约束条件包括了赤经(RA)、赤纬(DEC)、搜索半径(SR)3个参数;(2)服务必须以VOTable格式返回XML文档,VOTable必须包含一个RESOURCE元素,并且其中只有一个TABLE元素。TABLE必须包含遵循UCD(Unified Content Descriptors)命名的id、RA和DEC的FIELD元素;(3)服务必须在调用错误的时候返回特定格式的VOTable[12]。
下面以中国科学技术大学光谱分析项目生成的数据锥型检索功能为例,展示符合IVOA规范的服务搭建流程。自2002年来,中国科学技术大学天体物理中心在利用SDSS光谱数据进行星系和活动星系核研究过程中,发展了一套完善的光谱数据处理与分析方法和程序,它能自动分析海量的星系和活动星系核光谱。主要功能包括两方面,一是将寄主星系恒星光谱贡献与活动星系核贡献从光谱数据中分离(星核光谱分离);二是对各成份的谱线和连续谱做精确的分解和测量。目前计算结构以FITS格式保存。
为了进一步提高自动化程度并完善系统的功能,本文利用该光谱数据实现了对基于FITS格式的光谱数据发布及检索,其中检索功能通过后端的MySQL数据库实现,关键数据表结构如表1。为提高检索速度,事先已经将FITS文件中相关源的信息字段(RA,DEC)导入MySQL数据库,以便于通过SQL语句查询符合各类条件的光谱数据,具体的光谱数据仍保存在文件中。
表1 数据表结构Table 1 Table Schema
除了后端的MySQL,项目中使用的相关软件版本如表2。由于IVOA锥型检索规范要求使用HTTP GET的方式调用并以VOTable的方式返回数据,即REST风格的Web服务,所以传统Web服务搭建方式搭建的Web服务不能满足这一规范。搭建REST风格的Web服务可以使用Restlet框架,但此处使用同时支持SOAP和REST方式Web服务的Axis2搭建,可使Web服务即可以符合IVOA的锥型检索规范又可以获得在SOAP客户端调用的便利。
本次搭建及调用过程包含以下步骤:(1)将Axis2引擎配置到Tomcat容器中;(2)在Eclipse中编写服务代码及服务配置文件;(3)将Eclipse中的服务打包并部署到Axis2中;(4)在浏览器或客户端中调用服务。以下详细介绍各步骤。
2.2.1 配置 Axis2引擎
Axis2作为Web服务引擎,可在Servlet容器中部署或以独立服务器的方式运行。此处采用生产环境中更常用的Servlet容器模式。首先下载Tomcat及Axis2的安装包;其次建立目录结构,在Tomcat的webapps中建立axis2目录,并将Axis2安装包中的 webapps目录解压到Tomcat的webapps目录下;最后将Axis2安装包中的 lib、conf、repository/services和repository/modules目录解压到tomcat/webapps/axis2/WEB-INF。经过以上步骤,即完成在Tomcat中配置Axis2。启动Tomcat后可在浏览器中输入http://localhost:8080/axis2查看Axis2引擎的Web页面。
表2 本项目中Web服务端及客户端使用软件及版本Table2 Softwares and libraries for the server side and client side in this project
2.2.2 编写服务代码及服务配置文件
配置完成Axis2引擎以后,即可开始编写Web服务代码。锥型检索功能的流程如图1:服务端在接收到OMElement类型的参数后,分析XML文档对象获得传入的ra/dec/sr参数;判断参数是否有效,如果参数无效则按照IVOA规范返回包含错误消息的VOTable,如果有效则查询数据库并生成包含检索结果的VOTable;最后将VOTable转换为OMElement并返回。
图1 锥型检索服务的流程Fig.1 Flowchart of the Cone-Search Service
为了代码清晰及易于维护,此处借鉴Web开发中常见的MVC模式,将锥型检索服务代码划分为多层结构。关键代码如下:
虽然Axis2中搭建的服务默认支持SOAP和REST绑定,但在Axis2中默认使用SOAP对消息进行封装,所以在编写返回自定义格式XML(如VOTable)的服务时需要注意以下技术细节:
首先,Web服务需配置使用Raw XMLIN Out Message Receiver作为消息接收器以支持HTTP GET方式的调用和自定义格式以XML的方式返回。在Raw XMLIN Out Message Receiver作为接收器时,服务即可接收SOAP封装的参数,又可接收HTTP GET风格的参数。其中HTTP GET风格传递的参数被Axis2自动转换为XML结构的文档,因此对Web服务代码来说参数的传递方式是透明的,接收到的参数都是OMElement类型的XML文档。
其次,Web服务通过接收和返回OMElement类型的参数,可以使用非SOAP消息封装传输自定义文档格式。使用Axiom(AXis对象模型,AXis Object Model)直接操作XML文档对象,可以读取传入参数并生成返回文档。服务端在接收参数时,需要通过OMElement.getChildren()方法返回的Iterator遍历XML文档,以分离出传入的多个参数,关键代码如下:
分离传入参数以后,即可通过参数和字符串拼接出查询用的SQL语句,关键代码如下:
String sql="SELECT 'fitsname','ra','dec'FROM spec_param WHERE"+"sqrt(power(('RA'-"+ra+"),2)+power(('DEC'-"+dec+"),2))<="+radius+"";
服务端代码返回数据时也需要向Axis2引擎返回OMElement对象。方法是将JDBC执行SQL查询获得的结果,通过voi.vowrite库提供的相应方法构造输出符合规范的VOTable格式,并使用Axis2的AXIOMUtil.stringToOM(xml)函数将xml字符串转换为OMElement类型的对象并返回Axis2引擎。
完成服务代码的编写后,还需要编写服务的配置文件META-INF/services.xml。服务配置文件可以描述服务的名称、开放接口、接口使用的传输方式等,此处针对锥型检索接口需要配置消息接收器为RawXMLINOutMessageReceiver,以便返回自定义格式的XML,配置文件如下:
2.2.3 打包并部署服务
Eclipse中可通过菜单File-Export-JAR file将项目打包,选择输出到Axis2的services目录下即可由Axis2引擎自动部署服务。如果服务已经存在则需重启Tomcat服务器,或者在Axis2配置文件中开启热更新,使已存在的服务也可以热部署。
2.2.4 调用服务
由于支持REST风格的服务调用,所以在浏览器中直接输入网址即可调用刚才搭建的锥型检索服务,例如一次调用锥型检索的查询URL及返回结果如图2,其中,ra=180,dec=59,sr=2。服务成功接收参数并查询返回符合IVOA规范的锥型检索规范的结果。
除了通过URL查询直接访问该服务,还可以通过Axis2编写SOAP客户端调用该锥型检索服务。此处采用Axiom技术构建OMElement消息的方式,实现SOAP风格的服务调用,客户端流程如图3:首先创建调用服务的方法名节点,此处为coneSearch;其次在方法名节点中添加各个参数节点并设定参数值;最后新建Axis2客户端对象并设定服务端点,以调用服务并返回结果。
图2 符合IVOA规范的锥型检索结果Fig.2 Results of Cone-Search Service complying with IVOA specifications
图3 锥型检索客户端流程Fig.3 Flowchart of the Client in the Cone-Search Service
由于IVOA基本概要主要基于WS-I基本概要的工作,所以可以使用WS-I测试工具(WS-I Test Tool)验证Web服务是否符合IVOA基本概要[10]。测试工具包含监视器和分析器,其中监视器采用中间人的方式拦截并记录客户端与服务器之间的消息,分析器通过处理一组测试断言判断Web服务的构件是否符合基本概要(Basic Profile)[13]。借助WS-I测试工具,可以得到一份能在浏览器中打开的WS-I概要一致性报告,查看各项规范的符合情况,如图4,结论是该Web服务符合WS-I基本概要。
本文对就如何将Web Service技术应用到天文数据发布中进行了系统的调研,对IVOA的相关规范进行了分析,并在此基础上,利用中国科学技术大学光谱数据设计实现了基于SOAP风格和REST风格的标准锥型检索服务,为自动化工具中机器识别与调用打下了基础。下一步的工作可以开发自动化程度更高的工具,并考虑到以科学工作流等相应系统进行有效数据集成,为天文学研究提供更为简便、高效的数据检索服务。
图4 WS-I概要一致性报告Fig.4 WS-I Profile Conformance Report
[1]王晓倩,崔辰州,赵永恒.中国虚拟天文台软件集成 [J].天文研究与技术——国家天文台台刊,2005,2(4):293-301.Wang Xiaoqian,Cui Chenzhou,Zhao Yongheng.Integrating Legacy Software Toolkits into China-VO System [J].Astronomical Research & Technology——Publications of National Astronomical Observatories of China,2005,2(4):293-301.
[2]Tanu Malik,Alex S Szalay,Tamas Budavari,et al.Sky Query:A Web Service Approach to Federate Databases [J].Computer and Information Science,2002,11(2):23-32.
[3]Alexander S Szalay,Tamas Budavari,Tanu Malika,et al.Web Services for the Virtual Observatory[J].Proceedings of SPIE,2002:22-28.
[4]Gray J,A Szalay.The World-wide Telescope [J].Communications of the ACM,2002,45(11):50-55.
[5]崔辰州.中国虚拟天文台系统设计 [D].北京:中国科学院国家天文台,2003.
[6]桑健,赵永恒,崔辰州.中国虚拟天文台数据访问服务 [J].天文研究与技术——国家天文台台刊,2004,1(3):216-228.San Jian,Zhao Yongheng,Cui Chenzhou.Data Access Service of China-VO [J].Astronomical Research & Technology——Publications of National Astronomical Observatories of China,2004,1(3):216-228.
[7]孙华平,崔辰州,赵永恒.天文服务的统一调用及其在Sky Mouse系统中的实现 [J].天文研究与技术——国家天文台台刊,2008,5(2):130-136.Sun Huaping,Cui Chenzhou,Zhao Yongheng.Uniform Access to Astronomical Web Services and its Implementation in SkyMouse [J].Astronomical Research& Technology——Publications of National Astronomical Observatories of China,2008,5(2):130-136.
[8]田海俊,赵永恒,崔辰州,等.基于Web Services的星历计算服务平台设计及其实现 [J].天文研究与技术——国家天文台台刊,2007,4(3):283-287.Tian Haijun,Zhao Yongheng,Cui Chenzhou,et al.Design and Implementation of China-VO Ephemeris Computing Service Based on Web Services[J].Astronomical Research& Technology——Publications of National Astronomical Observatories of China,2007,4(3):283-287.
[9]Sky Server:Application Programmer’s Interface [EB/OL].http://cas.sdss.org/dr6/en/help/docs/api.asp.
[10]Schaaff A,M Graham.IVOA Web Services Basic Profile [EB/OL].http://www.ivoa.net/Documents/WSBasicProfile/.
[11]Group,G.a.W.S.W.IVOA Support Interfaces [EB/OL].http://www.ivoa.net/Documents/latest/VOSI.html.
[12]Roy Williams,Robert Hanisch,Alex Szalay,et al.Simple Cone Search [EB/OL].http://www.ivoa.net/Documents/latest/ConeSearch.html.
[13]Brittenham P.了解 WS-I测试工具 [EB/OL].http://www.ibm.com/developerworks/cn/webservices/ws-wsitest/.