Globus開源網格基礎平臺簡介
http://www.media.edu.cn 2007-10-22 作者:
網格技術出現于20世紀90年代,其核心思想是:“整個因特網就是一臺計算機!”Globus Tookit工具包來源于Globus項目,Globus項目是國際上最有影響力的與網格計算相關的項目之一,是由來自世界各地關注網格技術的研究人員和開發人員共同努力的成果。
網格技術出現于20世紀90年代,它的目的是想利用高速互聯網把分布于不同地理位置的計算機、數據庫、存儲器和軟件等資源連成整體,就像一臺超級計算機一樣,為用戶提供一體化信息服務,其核心思想是:“整個因特網就是一臺計算機!”
由全球網格論壇(GGF)下屬Globus項目組成員聯合開發的Globus Toolkit標準工具包,已被公認為當前建立網格系統和開發網格軟件事實的參考標準。
最近一兩年,“網格”這個詞持續升溫。你如果用Google搜索“網格”,可以看到8萬個結果;你會發現除了美國、歐洲對網格的研究投入了巨資,我們國家也通過“863”、自然科學基金等設立了網格專項,對網格有數億元的投資;你還可以看到,有關網格的活動高潮迭起。
所有這些都說明了網格已經悄然的走進了千家萬戶,它正被越來越多的人認識和熟悉。在因特網的刺激下,計算機行業正迎接影響深遠的第三次發展浪潮。
Globus Toolkit
Globus Tookit工具包來源于Globus項目,Globus項目是國際上最有影響力的與網格計算相關的項目之一,是由來自世界各地關注網格技術的研究人員和開發人員共同努力的成果。Globus Tookit是一個開放源碼的網格的基礎平臺,基于開放結構、開放服務資源和軟件庫,并支持網格和網格應用,目的是為構建網格應用提供中間件服務和程序庫。
Globus Tookit具有較為統一的國際標準,有利于整合現有資源,也易于維護和升級換代。現在,一些重要的公司,包括IBM和微軟等都公開宣布支持Globus Toolkit。目前大多數網格項目都是采用基于Globus Tookit所提供的協議及服務建設的。
Globus現在的發展勢頭正可謂與Linux有異曲同工之處。作為免費的操作系統,Linux正以勢如破竹之勢發展著。從世界范圍來看,開放源代碼軟件(OSS)是軟件業發展的大趨勢,Linux更是OSS的重頭戲,不僅深得IBM、惠普和Sun等國際IT巨頭的厚愛,同時也博得了各國政府的支持。
Globus與Linux 最大的相似之處在于,它們都是開放源代碼軟件,推廣、使用開源軟件已成為眾多政府官員、專家、企業與用戶的共識。目前,Globus和Linux的都非常注重標準的制定,通過采用統一的標準,使各個公司企業同一個方向上發展,加快他們的普及。所以我們可以形象地將Globus稱作網格世界的Linux。
隨著時代的發展和進步,Globus隨著體系結構的變化也經歷了幾次飛躍,它現在變得越來越完善。
Globus Toolkit 2
自從1997年起,Globus Toolkit工具包的第二版(GT2)成為了網格計算的事實標準。它著重于可用性和互操作性能力,定義和實現了一些協議、API和服務。
當時在世界上有上千個網格應用基于GT2,通過提供授權認證、資源發現和資源訪問等共同問題的解決方案,GT2加快了網格應用的構建。GT2通過定義和實現的“標準”協議和服務,真正地實現了可互操作的網格系統。
但是,GT2畢竟目的是針對網格的具體實現,所以它并沒有一個正式的標準,也沒有接受公開的審閱,所以在某種程度上限制了它的發展。隨著網格技術的快速發展和全球網格論壇這個標準性的機構出現,使修訂Globus Tookit的協議的標準提到了日程上。
基于OGSI的Globus
2002年2 月,在加拿大多倫多市召開的全球網格論壇GGF會議上,Globus項目組和IBM共同倡議了一個全新的網格標準OGSA。OGSA叫做開放網格服務體系,它把Globus標準與以商用為主的Web Services的標準結合起來,網格服務統一以Services的方式對外界提供。2003年符合OGSA規范的Globus Toolkit 3.0(GT3)發布,這標志著OGSA已經從一種理念、一種體系結構,走到付諸實踐的階段了。
GT3提供了一個完整的開放網格服務基礎設施(OGSI)實現,它的許多功能重構成與OGSI兼容的服務。GT3將服務發現、程序執行作業的提交、監控和可靠的文件傳輸,定義成了與OGSI兼容的服務。其它如數據傳遞、副本定位和授權等服務也盡量構建成與OGSI相兼容。并且GT3定義了一組關于使用Web服務描述語言(WSDL)和擴展標識語言(XML)模式的約定與擴展,以便啟用有狀態服務。
雖然OGSI的概念很重要,但是也存在一些自身的缺陷,需要一些新的結構來解決這些問題。所以采用新的結構代替OGSI是有必要的,通過轉變可以獲得網絡服務強有力的支持。
基于WSRF的Globus
2004年1 月,美國Akamai Technologies、美國The Globus Alliance、惠普、IBM、美國Sonic Software和美國TIBCO Software六公司公布了統一網格計算和Web服務的新標準“WS-Notification”和“WS-Resource Framework”。Web服務資源框架(WSRF)是OGSI的重構和發展,利用新的Web服務標準。
WSRF基本保留了OGSI中的所有功能,同時更改了一些語法,并且還在其表示中采用了不同的技術。Web服務通知(WSN)為Web服務提供基于消息發布和預定能力。WSRF和WSN都是建立在已存在的Web服務定義和技術基礎上的,幫助實現了網格計算、系統管理和Web服務的統一。
2005年1月31日發布的Globus Toolkit 4(GT4),實現了WSRF和WSN標準。GT4提供API來構建有狀態的Web服務,其目標是建立分布式異構計算環境。所有知名的GT3協議都被重新設計為可以使用WSRF。并且GT4也在其中增添了一些新的Web服務的組件。
給個通俗的解釋吧.接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現與子類相似,除了該實現類不能從接口定義中繼承行為。當類實現特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現了該接口的類的任何對象上調用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態聯編將生效。引用可以轉換到接口類型或從接口類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了接口。
接口可以繼承接口。抽象類可以實現(implements)接口,抽象類是可以繼承實體類,但前提是實體類必須有明確的構造函數。
接口更關注“能實現什么功能”,而不管“怎么實現的”。
相同及聯系
A. 兩者都是抽象類,都不能實例化。
B. interface實現類及abstrct class的子類都必須要實現已經聲明的抽象方法。
2. 不同
A. interface需要實現,要用implements,而abstract class需要繼承,要用extends。
B. 一個類可以實現多個interface,但一個類只能繼承一個abstract class。
C. interface強調特定功能的實現,而abstract class強調所屬關系。
D. 盡管interface實現類及abstrct class的子類都必須要實現相應的抽象方法,但實現的形式不同。interface中的每一個方法都是抽象方法,都只是聲明的(declaration, 沒有方法體),實現類必須要實現。而abstract class的子類可以有選擇地實現。這個選擇有兩點含義:
一是Abastract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子類必須實現。那些沒有abstract的方法,在Abstrct class中必須定義方法體。
二是abstract class的子類在繼承它時,對非抽象方法既可以直接繼承,也可以覆蓋;而對抽象方法,可以選擇實現,也可以通過再次聲明其方法為抽象的方式,無需實現,留給其子類來實現,但此類必須也聲明為抽象類。既是抽象類,當然也不能實例化。
E. abstract class是interface與Class的中介。
interface是完全抽象的,只能聲明方法,而且只能聲明pulic的方法,不能聲明private及protected的方法,不能定義方法體,也不能聲明實例變量。然而,interface卻可以聲明常量變量,并且在JDK中不難找出這種例子。但將常量變量放在interface中違背了其作為接口的作用而存在的宗旨,也混淆了interface與類的不同價值。如果的確需要,可以將其放在相應的abstract class或Class中。
abstract class在interface及Class中起到了承上啟下的作用。一方面,abstract class是抽象的,可以聲明抽象方法,以規范子類必須實現的功能;另一方面,它又可以定義缺省的方法體,供子類直接使用或覆蓋。另外,它還可以定義自己的實例變量,以供子類通過繼承來使用。
3. interface的應用場合
A. 類與類之前需要特定的接口進行協調,而不在乎其如何實現。
B. 作為能夠實現特定功能的標識存在,也可以是什么接口方法都沒有的純粹標識。
C. 需要將一組類視為單一的類,而調用者只通過接口來與這組類發生聯系。
D. 需要實現特定的多項功能,而這些功能之間可能完全沒有任何聯系。
4. abstract class的應用場合
一句話,在既需要統一的接口,又需要實例變量或缺省的方法的情況下,就可以使用它。最常見的有:
A. 定義了一組接口,但又不想強迫每個實現類都必須實現所有的接口。可以用abstract class定義一組方法體,甚至可以是空方法體,然后由子類選擇自己所感興趣的方法來覆蓋。
B. 某些場合下,只靠純粹的接口不能滿足類與類之間的協調,還必需類中表示狀態的變量來區別不同的關系。abstract的中介作用可以很好地滿足這一點。
C. 規范了一組相互協調的方法,其中一些方法是共同的,與狀態無關的,可以共享的,無需子類分別實現;而另一些方法卻需要各個子類根據自己特定的狀態來實現特定的功能。