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