摘要:分析了DAS 2.0版本中生命周期管理的不足之處,闡述了用資源方法來實現網格服務的狀態;然后提出了DAS新版本中資源管理和生命周期管理機制的設計,并且指出了在實現中遇到的困難。
關鍵詞:Web服務;GT4;狀態;服務生命周期
中圖分類號:TP311.5文獻標志碼:A
文章編號:1001-3695(2007)08-0246-02
0引言
網格從最開始的理論設想發展到現在的具體應用,其內涵經歷了不斷的演化和變遷。最早是“電網”比喻,即像用電一樣來使用網格資源,不管是火電還是水電,不管生產經過了什么樣的工序,也不管怎樣把電能傳輸給用戶,只要插上插頭就可以使用。這說明了早期對網格技術的一種期待,希望它能屏蔽底層復雜的異構性,提供接口統一的數據資源、計算資源以及設備資源等共享。與此同時,Web services技術也如火如荼地發展起來。作為基于XML的一種分布式計算技術,它很好地實現了跨平臺跨異構系統。將Web services作為網格的底層分布式技術支撐,可以很好地屏蔽瑣碎的細節并且實現接口的統一。于是網格技術和Web services技術出現了融合的趨勢。網格以服務的形式來提供數據資源、計算資源、設備資源等。
國家“863”項目科學數據網格(SDG)是為了解決中國科學院科學數據庫大規模、分布式、異構海量數據的共享問題而提出的網格服務解決方案,即以網格服務的形式提供數據服務的發布、查找和調用。其中data access service(DAS)系統是SDG的核心子系統,以網格服務的形式提供數據庫查詢,從而將數據資源加入到網格中來。可以以此為基礎,陸續將各種計算資源、設備資源等加入到網格中,從而推動中國科學院的escience基礎平臺的建設。
2005年7月,已經完成了DAS 2.0版本的開發。2005年8月成功申請了DAS 2.0軟件著作權。截至2005年底,中科院分布在全國各地的四十多個研究所進行了DAS部署。
盡管DAS 2.0反映情況良好,但是目前的版本基于Globus Toolkit3(GT3)。由于GT3中沒有將服務和狀態分離開來,在DAS 2.0中的資源和服務生命周期管理不是很理想,造成系統負擔過大,響應時間過長。因此,本文提出了基于Globus Toolkit4(GT4)的DAS新版本的設計,在原系統的基礎上進行了改進,把狀態信息從服務中分離出來,作為資源進行管理。當服務調用完畢后,可以釋放系統資源,銷毀服務,從而實現服務生命周期的有效管理,提高系統的效率。
1網格服務關鍵技術
1.1OGSA
OGSA(open grid services architecture)是Global Grid Forum提出的一套標準,定義了什么是網格服務,并定義了網格環境提供的整體結構和服務。通過定義一系列的標準接口為網格應用定義一個通用的、標準的、開放的體系結構。然而,這套體系結構需要一種分布式的中間件來支撐。換句話說,如果OGSA定義了一個包含submitJob方法的JobSubmissionInterface接口,需要有一種通用、標準的方式來調用submitJob方法。理論上,可以用任何一種分布式中間件如CORBA、RMI、RPC。最終,OGSA選擇了Web serivices技術作為底層支撐,將網格服務定義為一個符合特定規范的 Web service。
1.2WSRF
Web services通常是沒有狀態的,并且沒有一個統一的方式構造Web services的狀態。然而,OGSA最重要的需求之一就是支撐它的中間件要有狀態。OASIS組織定義了Web services resource framework(WSRF)規范,這個規范定義了如何讓Web services加入狀態信息。WSRF提出了提供持久數據的方式,提供了OGSA所需求的有狀態服務。WSRF的目標是能夠以一種更能接近通用Web Services的方式來提供網格框架。這些規范可以使 OGSA 中定義的服務完全基于標準的Web service。可以說,WSRF的出現說明了網格技術和Web services技術的融合。
1.3Globus Toolkit 4
2005年1月31日發布的GT4,實現了WSRF和WSN標準。GT4提供API來構建有狀態的Web服務,其目標是建立分布式異構計算環境。GT4不僅增添了一些新的Web services組件,還包含了不少高層服務,如資源監控和發現、任務提交和數據管理服務等。這些服務大部分在WSRF之上實現。實際上,GT4完全實現了WSRF規范。關于OGSA、WSRF、GT4和Web services的層次關系圖如圖1所示。
2DAS系統資源和生命周期管理
2.1用資源的方式來實現狀態
Web service是沒有狀態的,可以看成它只是一個處理過程,接受輸入,進行處理,然后返回結果。通過WSRF的擴充,增加了資源的概念(WSResource)。WSResource在軟件工程意義上有ACID特性,即原子性、一致性、隔離性、持久性,將狀態作為資源來管理。這樣,實現了狀態與服務的分離,既保存了狀態的信息(在資源中),又保留了Web services的無狀態性。例如一個簡單的加法運算,Web service只作加處理,將結果保存到資源中;下次客戶端再送來一個被加數,Web service可以從指定的資源中取出加數和被加數運算,將結果返回給客戶端的同時,保存到資源中以備后用。
2.2多資源管理模式
基于GT4的Web/grid services創建多個資源以保存不同用戶的狀態信息,用resourceKey來區分不同的資源。采用多資源模式,需要部署兩個服務,即工廠服務和實例服務。 工廠服務提供一個createResource操作,這個操作返回新建資源的端點引用(endpointReference,EPR)。實例服務提供各種處理操作,如在加減運算中的add和substract。客戶端使用服務過程時,首先通過工廠服務的URI調用該工廠服務以創建新的資源并返回一個EPR;然后,客戶端通過調用EPR發起請求在該資源上執行某個特定Web service操作。
當工廠服務接收客戶請求創建新的資源時,首先通過GT4 WSRF提供的resourceContext類來獲取resource home,并把創建資源的任務交給resource home來完成。Resource home負責創建和管理所有的資源,并且保存一個現有資源列表。完成資源的創建后,生成一個resourceKey的對象(相當于新資源的ID);然后將resourceKey對象和實例服務的URI封裝為EPR,返回給客戶端,以備客戶端調用。
當實例服務接受客戶請求執行操作時,通過EPR隱式分解出resourceKey(資源的ID),resourceHome根據resourceKey來定位資源。于是實例服務可以從指定資源中獲取一些狀態信息進行操作,操作完成后也將一些狀態的改變反映在資源上。最后返回服務調用的結果給客戶。
2.3DAS的資源管理
DAS是SDG的核心子模塊,它以網格服務的形式封裝對數據庫的訪問,實現跨越異構網絡環境、異構操作系統環境和異構數據庫平臺的統一訪問模式。具體來講,它負責屏蔽底層數據庫的差異性,提供元數據查詢服務和數據庫查詢服務。由于DAS主要對Web查詢提供服務,為了便于查詢結果的分頁顯示,DAS提供的服務接口主要有getFirstBlock、getLastBlock、getPreviousBlock、
getNextBlock、getCurrentBlock、getAbsoluteBlock、getBlocks、getMetaData。
在客戶端第一次使用DAS服務時,首先調用getMetaData以獲取相應數據庫的元數據。根據元數據,客戶端再提交SQL查詢語句,同時將blockSize(每頁顯示的條數)和數據庫URL發送給DAS。DAS接收到請求后,DAS factory service首先利用resource home創建一個DAS resource,資源的內容(resourceProperty)包括 databaseURL、SQLQuerySentence、blockSize、cursorPosition。將新建資源的ID和DAS instance service URI封裝為EPR后,返回給客戶端,客戶端通過這個EPR調用DAS instance service。調用時,DAS instance service通過EPR提取出reourceKey,進而通過resourceHome定位到資源。然后將資源信息(如DBURL、SQLQuery、blockSize、cursorPosition)進行初始化,并且獲取數據庫連接,進行SQL查詢,根據blockSize確定查詢返回的記錄數。查詢完成后,返回給客戶結果,同時修改資源中的cursorPosition變量,以便同一客戶下次執行getNextBlock等操作時能準確定位結果集的游標位置。
當有多個用戶調用DAS服務時,DAS factory service通過resource home創建多個DAS resource,分別用resourceKey加以辨識,DAS instance service用它來加以區分,以識別不同的客戶。示意圖如圖2所示。
2.4DAS的生命周期管理
生命周期指的是資源創建與銷毀之間的時間間隔。資源的創建上文已經有比較詳細的論述了。下面著重探討資源銷毀的問題。在一個客戶調用完服務后,要釋放系統資源,對服務進行銷毀。當一個DAS服務完成后,就應用某種策略把該服務中用到的DAS resource進行銷毀。有兩種銷毀算法,即立即銷毀和定時銷毀。立即銷毀是最簡單的生命周期管理方法,可以通過調用instance service中的destroy操作來完成。因為GT4 WSRF提供了immediateResourceTermination的portType,所以從此基礎上進行擴展,可以很方便地實現資源的立即銷毀。定時銷毀是比較高級的資源生命周期管理方式,可以設定銷毀時間。用定時銷毀方式需要首先設定terminationTime和currentTime兩個資源屬性。TerminationTime設定資源銷毀的時間,currentTime是資源的本地時鐘時間。當terminationTime到來時,就把資源銷毀掉。目前DAS試采用立即銷毀和定時銷毀相結合的方法。如果用戶設定了銷毀時間則自動采用定時銷毀;如果沒有設定,則默認用立即銷毀。
3結束語
因為現有的DAS 2.0版是基于GT3的,而GT3和GT4在服務創建和生命周期管理上有較大的差別。例如,GT3中沒有資源的概念,沒有將狀態和服務分離開,或者說服務包含狀態。當進行生命周期管理時,必須將包含狀態的服務進行創建或銷毀。因而,GT3沒有GT4靈活、便于管理。要將現在基于GT3的DAS改造成基于GT4的DAS,就需要首先確定哪些信息可以作為資源。如上面分析所示,databaseURL、SQLQuerySentence、blockSize、cursorPosition可以作為資源來處理。但是現在的實現已經穩定成型,如何提取這些信息又避免系統接口的重大改變需要進一步分析。對DAS的服務進行監控以及優化服務的調用效率等需要進一步的研究和探討。
參考文獻:
[1]FOSTER I,KESSELMAN C.The anatomy of the grid:enabling scalable virtual organizations[J].International J Supercomputer Applications ,2001,15(3):200-222.
[2]FOSTER I,GANNON D.The open grid services architecture platform,GGF Working Draft[R].[S.l.]:GGF Working,2003.
[3]SOTOMAYOR R,CHILDERS L.GlobusToolkit 4:programming Java services[M].[S.l.]:Morgan Kaufmann Publishers,2005.
[4]都志輝,陳渝,劉鵬,等.以服務為中心的網格體系結構OGSA[J].計算機科學,2003, 30(7):26-29.
[5]趙洪東,楊德婷,南凱,等.基于網格服務的科學數據庫統一查詢系統的設計與實現[J]. 微電子學與計算機,2007,24(2):5-8.
注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”