摘 要: 利用Spaces模型的時間和空間透明性,將Spaces用作網格計算中共享數據和分配任務的“黑板”,設計了一個基于Spaces的網格計算構架——GCFS,為網格計算的框架設計提供了一種新方法。
關鍵詞: 網格計算 異步通信 Spaces模型 Master-Worker模型
隨著網絡技術的發展,網格計算作為一種新型的分布式技術,提供了集成的計算與資源環境,在提高資源利用率方面起到越來越重要的作用。但在分布式系統中,進程間的通信、事件同步是必須解決的問題。目前出現了眾多的解決方法,具有代表性的有RMI、CORBA、Web Service等分布式計算模型。由于這些方法在解決問題時的抽象層次不一樣,所以對系統的開銷、可擴展性、跨平臺性以及易實現性等方面的影響程度也不一樣。
耶魯大學的David Gelernter在Linda系統中提出了元組空間(Tuple Space)的思想。該系統的初衷是利用Spaces為并行計算提供全局的通信緩存。由于Spaces模型簡單且能較好地協調進程間的同步,因此,可將它作為另一種抽象的分布式計算模型應用于當前的各種分布式計算領域。T Spaces、JavaSpaces作為由Tuple Space模型發展起來的通用分布式中間件,已被應用到很多分布式計算中。但在實際應用中,它們的一些功能是不必要的,且容易引起性能效率的降低。網格計算中一個很重要的性能是可將位于異構網絡的多種資源整合為虛擬的統一視圖,由不同的應用動態地共享。本文把Spaces用作網格計算中共享數據和分配任務的“黑板”,通過動態地創建或取消Spaces服務來適應網格計算環境的變化并設計了具有良好可伸縮性的GCFS(Grid Computing Framework with Spaces)框架。
1 Spaces模型
分布式應用中的通信通常有兩種。一種是異步通信,指不同進程間的消息傳遞;另一種是同步通信,指遠程過程的調用。Spaces擴展了進程間異步通信的模型,應用的參與者集中在一個或多個Spaces中,資源提供者將信息放到Spaces,訂閱該資源的請求者可從Spaces訪問到這些信息,也就是說Spaces為網絡資源的提供者和請求者的相互協作提供了共同的虛擬空間。圖1為Spaces模型,它體現了Spaces的以下特點:
(1)具有分布式應用的四個最基本操作:讀、寫、取、通知。
(2)計算機間的進程通信是間接的,并不需要預先知道其他進程的情況,直接和Spaces進行信息交互即可。與多個點對點通信的方式相反,所有的計算機都能通過Spaces看到相同的全局消息。
(3)具有持久性,即使創建消息的進程不再存在,它們所生成的消息也仍然可以保留。
(4)作為允許N個進程同時進行協作通信的公共中介,Spaces以一種自然的方式實現了分布式計算的可擴展性。新進程的加入和離開不需分別通知其他進程,只需由對應的Spaces進行管理。
根據上述特點,可把Space定義為一個可通過網絡訪問并提供協作異步通信服務的共享消息庫。與RMI、CORBA、Web Service等進程間直接通信的計算模型不同,在Spaces模型中,進程間的協作交互是通過在一個或多個Spaces中交換消息來實現的。Spaces模型具有異步性,對Spaces內的信息操作具有時間和空間的透明性。該特性能有效地解決分布式系統設計中所遇到的局部失敗、平臺獨立性、系統間難以相互發現等問題,從而減低了開發分布式應用程序的難度。
盡管Spaces能夠存儲各種消息,支持在應用間共享消息,但它們并不是分布式文件系統或者數據庫。Spaces側重于利用消息來協調分布式計算,而分布式文件系統側重于對信息進行存儲管理。由于兩者的應用目的不同,所以使用方式也有很大差別。例如,在文件系統中,通過命名對先前存儲的數據進行訪問,用惟一的名字來標識文件,并通過文件的名字或內容來查找文件。而Spaces是邏輯共享內存模型,與常規的共享內存模式不同,它與值關聯,但沒有地址,可通過模板進行匹配查找。消息的名字、類型、內容以及消息間的關系等都可以作為查找條件。
2 GCFS的設計
2.1 體系結構
GCFS是利用Spaces的異步性來創建一個靈活且具有可擴展性的網格計算框架。圖2所示的體系結構包含了六個主要構件,分別是:Space管理器、任務管理器、任務調度器、Space服務、負責通信的Agent以及網格應用程序。
Space管理器本身也是由Spaces模型建立起來的,它的主要功能是負責管理系統中的各個Space服務。Space管理器通過所掌握的參與網格計算的所有計算機的信息,動態地創建或者撤銷Space服務,即系統中的Space服務能夠隨著計算環境的變化而動態變化。例如,在網格搭建的初期,A地參與的計算機數量較少,可以通過位于B地的Space服務為A地的計算機提供任務分配服務。但隨著A地越來越多的計算機參與該網格平臺,Space管理器將采用評估算法判斷是否有必要專門在A地建立一個Space服務,從而減少兩地之間的通信開銷。相反,如果A地網格節點數量減少到一定程度,為了減輕Space管理器的管理成本,Space管理器也會評估是否有必要撤銷A地的Space服務,并將A地的計算機重新引導到相鄰地區的Space服務中。
在Space管理器中的任務管理器將任務劃給各個Space服務。相應地,Space服務的任務調度器負責將任務分配給合適的網格節點執行。Space服務為網格節點提供信息的公共存儲和共享服務,在GCFS中起到了連接網格節點和待處理任務的中間橋梁作用。一個Space服務可以管理多個網格節點,但每個網格節點只接受一個Space服務管理。此外,GCFS框架具有良好的負載均衡性,參與計算機首先連接平臺的Space管理器,Space管理器根據當前各個Space服務的負載、計算機的處理能力以及地理位置等情況,將計算機引導到相應的Space服務。如果某個Space服務出錯或者出現過載,Space管理器會根據調度算法重新將該服務區域中的網格節點切換到其他的Space服務。
圖3描述了將GCFS應用于Master-Worker模式的方法示例。一個位于A地的Master(同時作為Space管理器)通過任務管理器劃分多個任務到各個Space服務。位于各地的Worker通過Space管理器訪問相應的Space服務,從中獲取任務進行計算并將計算結果返回Space服務。Master從各個Space服務中收集返回的結果進行匯總分析。圖3中用虛線圈出的Space是虛擬的,由位于各地的多個Space服務構成,它們可以被動態地創建或撤銷。位于各地的Worker看到的是一個虛擬統一的Space,其中真實存在的Space服務的變動對Workers來說是透明的。
2.2 實現方法
由于Java語言具有良好的跨平臺性和可移植性,因此GCFS的實現采用Java語言。本節重點討論GCFS的主要類設計,其類結構如圖4所示。
Computer類負責管理參與網格的計算機基本信息。這些基本信息主要包括計算機的所在位置、計算機名、用戶、IP地址、CPU處理能力、內存大小、硬盤空間、操作系統版本、網絡連接情況以及開始參與系統的時間等。evaluateComputer方法根據計算機的屬性評估其性能指標,為Space-
Manager類的evaluateSpace方法提供算法判斷依據,使Space管理器能夠選擇計算能力強的計算機提供Space服務。同時,任務管理器和任務調度器也能夠根據計算機的性能情況分配合適的任務給各個網格節點進行處理。
SpaceManager類用于管理網格中的Space服務,包括Space服務的動態創建、撤銷和監控。evaluatedSpace方法的作用是評估在某個網格節點上創建或者撤銷一個Space服務的必要性。該方法首先要判斷網格中是否需要創建新的或者撤銷一個已有的Space服務,然后再選擇應該在哪個網格節點上執行新建或者撤銷的操作。
TaskManager類管理網格中的任務,決定如何進行任務劃分和分配。assignTask方法利用智能任務調度算法,根據各個Space的當前負載情況,決定在何時將何任務分配給何Space服務。
Space類用于提供Space服務。在本框架中,Space服務的主要作用是為任務提供管理服務,網格節點能夠從Space服務中獲取任務。該類提供了read、write、take、inform等基本方法操作存放在Space服務中的系統信息和任務。
TaskScheduler類對在Space服務中的任務進行調度。它的scheduleTask方法與TaskManager類的assignTask方法功能類似,都是將任務分配給合適的資源,其差別為二者分配的資源對象不同。scheduleTask是將在Space服務中的任務分配給該服務轄下的網格節點。
Task類表示子任務的信息,starttime屬性表示任務的開始時間,estimatedinterval屬性表示預計要處理的時間。這兩個屬性用于容錯,如果當前時間超出了starttime+k×estimatedinterval(其中k是一個經驗值),任務調度器就會通知Space服務,要求其檢查負責該任務的網格節點是否出現故障。taskobject屬性包含了任務的可執行代碼,當網格節點從Space服務獲得一個Task實例后,taskobject會自動地下載到節點上執行,并將計算結果返回給Space服務。
ClientAgent類和ServerAgent類用于網格節點、Space服務和Space管理器之間的相互通信。connectServer、listentoServer等方法采用的是UDP通信協議。目前GCFS在安全方面的措施還較少,參與任務計算的網格節點不需驗證就可以直接連接到Space服務和Space管理器上,且網格節點對服務器傳送的數據也是信任的。
3 結束語
網格技術要對計算資源進行“虛擬”組合,使得位于不同位置、具有不同硬件和操作系統的資源能夠協同工作。Spaces模型是一種非常抽象的分布式計算模型,可管理消息、資源和任務等信息。通過在網格中動態地創建Space服務,GCFS系統建立了一個輕量級的網格計算框架。為了提高3G無線網絡仿真的性能,該框架正被應用于移動通信的3G仿真。該框架還存在著許多需要深入研究的問題,例如,如何使多個Spaces進行相互協作,如何更好地增強Spaces在Internet中的安全性以及如何有效地對任務進行分解和調度等。
參考文獻
1 Freeman E,Hupfer S,Arnold K.JavaSpaces(TM) Principles,Patterns and Practice.Addison-Wesley Pub Co,1999
2 Edwards W K.Jini核心技術.北京:機械工業出版社,2002
3 GigaSpacesTM Technologies Ltd.GigaSpaces Grid Server for Web Services Applications[R/OL].http://www.gigaspaces. com/whitepaper.htm.2005,1
4 Sterck H D,Markel R S,Pohl T et al.A lightweight Java Taskspaces framework for scientific computing on computational grids.In:Proceedings of the ACM Symposium on Applied Computing,Track on Parallel and Distributed Systems and Networking,2003
5 Lehman T J,Cozzi A,Xiong Y et al.Hitting the distributed computing sweet spot with TSpaces.Computer Networks, 2001;35(4)
6 Liu M L.Distributed Computing Principles and Applications.Pearson Education,Inc,2004
7 Noble M,Slateva S.Scientfic computation with JavaSpaces. Harvard-Smithsonian Center for Astrophysics.Boston University,Boston,2001