李曉科,季凱帆,鄧 輝,王 鋒,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/.