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