目前兩項最熱門的技術(shù)就是網(wǎng)格計算和 Web 服務(wù),但是這兩者是兼容的嗎?在本文中,Martin C. Brown 告訴我們這兩個系統(tǒng)實際上兼容程度是相當高的,并描述了在網(wǎng)格應(yīng)用程序中使用 Web 服務(wù)的好處。為了確定網(wǎng)格計算和 Web 服務(wù)是否相互兼容,我們需要研究一下網(wǎng)格計算的工作方式,看看我們是否真的可以將一個典型的網(wǎng)格系統(tǒng)分解成若干個相對分散的單元。網(wǎng)格計算的架構(gòu)依賴于相當基本的原理,即在多臺客戶機和多臺服務(wù)器之間傳送簡單的請求。 Web 服務(wù)依賴于處理從一臺客戶機發(fā)送到一臺服務(wù)器上的請求。
如果您尚未看到這一點是如何適應(yīng)已有的網(wǎng)格結(jié)構(gòu)的,本文將探討兩種最常見的網(wǎng)格系統(tǒng):請求架構(gòu)和分發(fā)架構(gòu)。請求系統(tǒng)依賴于客戶機請求工作,而分發(fā)系統(tǒng)依賴于代理直接給客戶機提供工作。這兩種系統(tǒng)在與 Web 服務(wù)結(jié)合的時候面對的是不同的問題,這一點我們也會討論到。
網(wǎng)格通信
在網(wǎng)格計算中,基本存在兩種主要的組件類型 —— 服務(wù)器和客戶機。服務(wù)器用于分發(fā)工作請求及保存有關(guān)構(gòu)成整個工作的獨立工作單元的信息??蛻魴C(典型情況下有多個)負責處理獨立的工作單元。這兩者之間的通信方式有多種,但是系統(tǒng)的核心是對工作的分發(fā)。再次指出,系統(tǒng)采用兩種工作方式中的一種,要么是客戶機管理自己的工作流,并向服務(wù)器請求新的工作單元,要么是服務(wù)器將工作單元分發(fā)給客戶機。
通信過程并不是到這里就停止了;通常還需要額外的服務(wù)器和服務(wù)來支持網(wǎng)格服務(wù)器的基礎(chǔ)設(shè)施,它們相互之間需要進行對話,并交換信息。關(guān)鍵的問題在于,通常情況下網(wǎng)格解決方案中交換的是相當分散的信息片斷。在客戶機和服務(wù)器之間交換的是原始的工作單元和處理之后的響應(yīng)。甚至在數(shù)據(jù)負載相當高的情況之下,如進行數(shù)據(jù)處理或視頻呈現(xiàn)時,我們依然在交換信息包,而不是在客戶機和服務(wù)器元素之間建立完全、雙向、永久的通信。
新版的 WebSphere 擴展包中的網(wǎng)格思想更為激進,甚至允許將到 WebSphere 應(yīng)用程序的 Web 請求通過 WebSphere 服務(wù)器進行分發(fā)。這個例子也證明了網(wǎng)格管理與實際的工作分發(fā)都可以通過相當簡單的數(shù)據(jù)交換來完成。
規(guī)則中當然總有例外。并不是所有的網(wǎng)格系統(tǒng)都依賴于如此直接的簡單包交換。比如說,資源網(wǎng)格通常依賴于網(wǎng)格提供者(客戶機)之間相當繁重的相互通信,這樣才能在網(wǎng)格上實現(xiàn)實時的存儲請求。不過在這些情況下,即便當客戶機之間直接進行通信時,依然是一種基本的信息交換。因此,如果我們僅僅在交換信息,當然就應(yīng)該用一種標準的方法在服務(wù)器和客戶機之間進行通信。這也就是 Web 服務(wù)的用武之地。
Web 服務(wù)概覽
在我們能夠理解 Web 服務(wù)如何為我們的網(wǎng)格解決方案提供支柱之前,我們需要理解 Web 服務(wù)的工作方式。最簡單的方法是將其想像成一種遠程過程調(diào)用(RPC),通過這種方式我們可以從一臺計算機(客戶機)上調(diào)用某個功能,而代碼和實際的功能是在另外一臺計算機(服務(wù)器)上執(zhí)行的。
各種各樣的 RPC 中不存在新東西。一段時間以來,各種不同的平臺上都有不同的實現(xiàn)。也許最有名的 RPC 實現(xiàn)是 UNIX 機上的。這一實現(xiàn)使用了一組復(fù)雜的函數(shù),可以使客戶機與服務(wù)器之間進行信息交換,它將一種基本的 C 結(jié)構(gòu)轉(zhuǎn)換成一種可以在網(wǎng)絡(luò)上廣播的標準化格式,即外部數(shù)據(jù)表示(External Data Representation, XDR)格式。這種方法對數(shù)據(jù)進行了序列化和標準化的處理,轉(zhuǎn)換后的數(shù)據(jù)格式可以被該 RPC 架構(gòu)下的任何客戶機或服務(wù)器解碼出來。
最近 Web 的爆炸式發(fā)展意味著,每當我們訪問某個 Web 站點的時候,我們很自然就是在進行遠程過程調(diào)用。我們的客戶機就是瀏覽器,它向一臺服務(wù)器(如 Apache, IIS 等)請求一個文件,然后,處理并顯示得到的信息。這是一個簡單的數(shù)據(jù)交換過程。有了公共網(wǎng)關(guān)接口(Common Gateway Interface, CGI)、JSP、ASP 這樣的動態(tài)技術(shù),我們才真正是在調(diào)用遠程過程。交換過程是以 HTTP 請求和 HTML 響應(yīng)的形式進行的,但是達到的效果一樣:我們調(diào)用遠程機器上的過程,然后獲得一個響應(yīng)。
通過以某種方式標準化信息的交換過程,我們就得到了 Web 服務(wù)。請求和響應(yīng)都以 XML 編碼。從基本相同的技術(shù)派生出兩個變種:XML-RPC 的設(shè)計目標與它的縮寫名所暗示的完全一樣 —— 發(fā)送和接收用 XML 格式化的遠程過程調(diào)用;簡單對象訪問協(xié)議(Simple Object Access Protocol, SOAP)更加高級。SOAP 的核心依然是一種 RPC 技術(shù),但是這種技術(shù)經(jīng)過增強,可以實現(xiàn)對一個對象的遠程操縱。這樣 SOAP 就不是一種簡單的 RPC 調(diào)用,而是可以創(chuàng)建對象、操縱對象、并用這個對象在服務(wù)器和客戶機之間進行更加確切和格式化的信息交換。
Web 服務(wù)可以由任何一種 Web 服務(wù)器提供,可以在幾乎所有的支持平臺上用幾乎所有的語言書寫,其中包括 Perl、Python、C/C++、Java 語言以及 Visual Basic。Web 服務(wù)的核心基本上是 Web 服務(wù)器上的一個動態(tài)組件,它能夠正確地處理 Web 服務(wù)請求和響應(yīng)。這意味著,在很多情況下,您可以很容易在您的已有系統(tǒng)中創(chuàng)建一個 Web 服務(wù)的接口。您需要做的只是在通常進行的常規(guī)系統(tǒng)調(diào)用外圍編寫一個包裝器。
網(wǎng)格與 Web 服務(wù)之間的界限逐漸模糊
到目前為止,我們已經(jīng)探討了通過交換信息而實現(xiàn)的網(wǎng)格技術(shù),這種交換既可以在服務(wù)器和客戶機之間進行,也可以直接在客戶機之間進行,從而實現(xiàn)對信息的處理和分發(fā)。但是這種交換系統(tǒng)需要借用某種方式進行真正的信息交換。這些年來,人們使用了很多種系統(tǒng),包括 FTP 協(xié)議和定制的協(xié)議系統(tǒng)。
目前,在 Web 服務(wù)陣營之中,我們已經(jīng)擁有了一種通用的工具,可以用來在兩臺機器之間交換信息,比如說請求執(zhí)行某項特定的功能(如 getnewworkunit()),或是簡單地在這兩者之間交換信息。因為 Web 服務(wù)是建立在 XML 等其他標準之上的,因此很容易開發(fā)并擴展到各種不同環(huán)境中,并且也容易部署。我們擺脫了不同系統(tǒng)間數(shù)據(jù)交換的所有問題,并且不需要擔心處理器字節(jié)中的位次序(endian-ness),也不需要將我們傳遞的信息轉(zhuǎn)換成中性格式,因為 Web 服務(wù)的標準已經(jīng)替我們做了這些事情。
因為我們需要用某種類型的偵聽程序/分發(fā)服務(wù)來處理請求、分發(fā)工作以及收集結(jié)果,所以 Web 服務(wù)就是最理想的選擇。Web 服務(wù)系統(tǒng)帶來的主要益處在于,因為它依賴于 HTTP 協(xié)議,因此很容易將 Web 服務(wù)集成到已有的 HTTP 平臺、路由器、防火墻以及其他系統(tǒng)中。大多數(shù)組織已經(jīng)運行了 HTTP 服務(wù),因此您可以用已有的技術(shù)和安全系統(tǒng)來支持您的網(wǎng)格系統(tǒng),而不需要對網(wǎng)絡(luò)進行改造,也不會對網(wǎng)格系統(tǒng)中的設(shè)備造成限制。
這樣,用 Web 服務(wù)開發(fā)網(wǎng)格系統(tǒng)就具有了一些無可比擬的優(yōu)勢,其中包括:
·增強的兼容性。
·增強的靈活性。
·通過消除數(shù)據(jù)交換的復(fù)雜性,使跨平臺開發(fā)成為可能。
·很容易部署在已有的 Web 服務(wù)器上。
·很容易通過已有的 HTTP 安全機制與防火墻的支持來提供安全性。
·通過 Intranet 或 Internet 訪問網(wǎng)格組件的難度降低,這樣就使得通信變得容易,可訪問性增強。
出于所有上面這些理由,以及更多的原因,Web 服務(wù)已經(jīng)逐漸成為新的網(wǎng)格服務(wù)標準 —— 開放網(wǎng)格服務(wù)架構(gòu)(Open Grid Services Architecture, OGSA)以及與之相伴的開放網(wǎng)格服務(wù)基礎(chǔ)設(shè)施(Open Grid Services Infrastructure, OGSI)—— 的一個組成部分。Globus Toolkit 3.0 是第一個完全支持 OGSA/OGSI 標準的網(wǎng)格平臺,它支持將 Web 服務(wù)作為數(shù)據(jù)交換的平臺。IBM 作為 OGSA 標準和 Globus 系統(tǒng)的關(guān)鍵參與者,給 Web 服務(wù)提供了強有力的支持,現(xiàn)在正推薦人們在業(yè)務(wù)開發(fā)平臺中廣泛使用 Web 服務(wù)。Globus 支持 SOAP Web 服務(wù)協(xié)議。
如果您尚未看到這一點是如何適應(yīng)已有的網(wǎng)格結(jié)構(gòu)的,本文將探討兩種最常見的網(wǎng)格系統(tǒng):請求架構(gòu)和分發(fā)架構(gòu)。請求系統(tǒng)依賴于客戶機請求工作,而分發(fā)系統(tǒng)依賴于代理直接給客戶機提供工作。這兩種系統(tǒng)在與 Web 服務(wù)結(jié)合的時候面對的是不同的問題,這一點我們也會討論到。
網(wǎng)格通信
在網(wǎng)格計算中,基本存在兩種主要的組件類型 —— 服務(wù)器和客戶機。服務(wù)器用于分發(fā)工作請求及保存有關(guān)構(gòu)成整個工作的獨立工作單元的信息??蛻魴C(典型情況下有多個)負責處理獨立的工作單元。這兩者之間的通信方式有多種,但是系統(tǒng)的核心是對工作的分發(fā)。再次指出,系統(tǒng)采用兩種工作方式中的一種,要么是客戶機管理自己的工作流,并向服務(wù)器請求新的工作單元,要么是服務(wù)器將工作單元分發(fā)給客戶機。
通信過程并不是到這里就停止了;通常還需要額外的服務(wù)器和服務(wù)來支持網(wǎng)格服務(wù)器的基礎(chǔ)設(shè)施,它們相互之間需要進行對話,并交換信息。關(guān)鍵的問題在于,通常情況下網(wǎng)格解決方案中交換的是相當分散的信息片斷。在客戶機和服務(wù)器之間交換的是原始的工作單元和處理之后的響應(yīng)。甚至在數(shù)據(jù)負載相當高的情況之下,如進行數(shù)據(jù)處理或視頻呈現(xiàn)時,我們依然在交換信息包,而不是在客戶機和服務(wù)器元素之間建立完全、雙向、永久的通信。
新版的 WebSphere 擴展包中的網(wǎng)格思想更為激進,甚至允許將到 WebSphere 應(yīng)用程序的 Web 請求通過 WebSphere 服務(wù)器進行分發(fā)。這個例子也證明了網(wǎng)格管理與實際的工作分發(fā)都可以通過相當簡單的數(shù)據(jù)交換來完成。
規(guī)則中當然總有例外。并不是所有的網(wǎng)格系統(tǒng)都依賴于如此直接的簡單包交換。比如說,資源網(wǎng)格通常依賴于網(wǎng)格提供者(客戶機)之間相當繁重的相互通信,這樣才能在網(wǎng)格上實現(xiàn)實時的存儲請求。不過在這些情況下,即便當客戶機之間直接進行通信時,依然是一種基本的信息交換。因此,如果我們僅僅在交換信息,當然就應(yīng)該用一種標準的方法在服務(wù)器和客戶機之間進行通信。這也就是 Web 服務(wù)的用武之地。
Web 服務(wù)概覽
在我們能夠理解 Web 服務(wù)如何為我們的網(wǎng)格解決方案提供支柱之前,我們需要理解 Web 服務(wù)的工作方式。最簡單的方法是將其想像成一種遠程過程調(diào)用(RPC),通過這種方式我們可以從一臺計算機(客戶機)上調(diào)用某個功能,而代碼和實際的功能是在另外一臺計算機(服務(wù)器)上執(zhí)行的。
各種各樣的 RPC 中不存在新東西。一段時間以來,各種不同的平臺上都有不同的實現(xiàn)。也許最有名的 RPC 實現(xiàn)是 UNIX 機上的。這一實現(xiàn)使用了一組復(fù)雜的函數(shù),可以使客戶機與服務(wù)器之間進行信息交換,它將一種基本的 C 結(jié)構(gòu)轉(zhuǎn)換成一種可以在網(wǎng)絡(luò)上廣播的標準化格式,即外部數(shù)據(jù)表示(External Data Representation, XDR)格式。這種方法對數(shù)據(jù)進行了序列化和標準化的處理,轉(zhuǎn)換后的數(shù)據(jù)格式可以被該 RPC 架構(gòu)下的任何客戶機或服務(wù)器解碼出來。
最近 Web 的爆炸式發(fā)展意味著,每當我們訪問某個 Web 站點的時候,我們很自然就是在進行遠程過程調(diào)用。我們的客戶機就是瀏覽器,它向一臺服務(wù)器(如 Apache, IIS 等)請求一個文件,然后,處理并顯示得到的信息。這是一個簡單的數(shù)據(jù)交換過程。有了公共網(wǎng)關(guān)接口(Common Gateway Interface, CGI)、JSP、ASP 這樣的動態(tài)技術(shù),我們才真正是在調(diào)用遠程過程。交換過程是以 HTTP 請求和 HTML 響應(yīng)的形式進行的,但是達到的效果一樣:我們調(diào)用遠程機器上的過程,然后獲得一個響應(yīng)。
通過以某種方式標準化信息的交換過程,我們就得到了 Web 服務(wù)。請求和響應(yīng)都以 XML 編碼。從基本相同的技術(shù)派生出兩個變種:XML-RPC 的設(shè)計目標與它的縮寫名所暗示的完全一樣 —— 發(fā)送和接收用 XML 格式化的遠程過程調(diào)用;簡單對象訪問協(xié)議(Simple Object Access Protocol, SOAP)更加高級。SOAP 的核心依然是一種 RPC 技術(shù),但是這種技術(shù)經(jīng)過增強,可以實現(xiàn)對一個對象的遠程操縱。這樣 SOAP 就不是一種簡單的 RPC 調(diào)用,而是可以創(chuàng)建對象、操縱對象、并用這個對象在服務(wù)器和客戶機之間進行更加確切和格式化的信息交換。
Web 服務(wù)可以由任何一種 Web 服務(wù)器提供,可以在幾乎所有的支持平臺上用幾乎所有的語言書寫,其中包括 Perl、Python、C/C++、Java 語言以及 Visual Basic。Web 服務(wù)的核心基本上是 Web 服務(wù)器上的一個動態(tài)組件,它能夠正確地處理 Web 服務(wù)請求和響應(yīng)。這意味著,在很多情況下,您可以很容易在您的已有系統(tǒng)中創(chuàng)建一個 Web 服務(wù)的接口。您需要做的只是在通常進行的常規(guī)系統(tǒng)調(diào)用外圍編寫一個包裝器。
網(wǎng)格與 Web 服務(wù)之間的界限逐漸模糊
到目前為止,我們已經(jīng)探討了通過交換信息而實現(xiàn)的網(wǎng)格技術(shù),這種交換既可以在服務(wù)器和客戶機之間進行,也可以直接在客戶機之間進行,從而實現(xiàn)對信息的處理和分發(fā)。但是這種交換系統(tǒng)需要借用某種方式進行真正的信息交換。這些年來,人們使用了很多種系統(tǒng),包括 FTP 協(xié)議和定制的協(xié)議系統(tǒng)。
目前,在 Web 服務(wù)陣營之中,我們已經(jīng)擁有了一種通用的工具,可以用來在兩臺機器之間交換信息,比如說請求執(zhí)行某項特定的功能(如 getnewworkunit()),或是簡單地在這兩者之間交換信息。因為 Web 服務(wù)是建立在 XML 等其他標準之上的,因此很容易開發(fā)并擴展到各種不同環(huán)境中,并且也容易部署。我們擺脫了不同系統(tǒng)間數(shù)據(jù)交換的所有問題,并且不需要擔心處理器字節(jié)中的位次序(endian-ness),也不需要將我們傳遞的信息轉(zhuǎn)換成中性格式,因為 Web 服務(wù)的標準已經(jīng)替我們做了這些事情。
因為我們需要用某種類型的偵聽程序/分發(fā)服務(wù)來處理請求、分發(fā)工作以及收集結(jié)果,所以 Web 服務(wù)就是最理想的選擇。Web 服務(wù)系統(tǒng)帶來的主要益處在于,因為它依賴于 HTTP 協(xié)議,因此很容易將 Web 服務(wù)集成到已有的 HTTP 平臺、路由器、防火墻以及其他系統(tǒng)中。大多數(shù)組織已經(jīng)運行了 HTTP 服務(wù),因此您可以用已有的技術(shù)和安全系統(tǒng)來支持您的網(wǎng)格系統(tǒng),而不需要對網(wǎng)絡(luò)進行改造,也不會對網(wǎng)格系統(tǒng)中的設(shè)備造成限制。
這樣,用 Web 服務(wù)開發(fā)網(wǎng)格系統(tǒng)就具有了一些無可比擬的優(yōu)勢,其中包括:
·增強的兼容性。
·增強的靈活性。
·通過消除數(shù)據(jù)交換的復(fù)雜性,使跨平臺開發(fā)成為可能。
·很容易部署在已有的 Web 服務(wù)器上。
·很容易通過已有的 HTTP 安全機制與防火墻的支持來提供安全性。
·通過 Intranet 或 Internet 訪問網(wǎng)格組件的難度降低,這樣就使得通信變得容易,可訪問性增強。
出于所有上面這些理由,以及更多的原因,Web 服務(wù)已經(jīng)逐漸成為新的網(wǎng)格服務(wù)標準 —— 開放網(wǎng)格服務(wù)架構(gòu)(Open Grid Services Architecture, OGSA)以及與之相伴的開放網(wǎng)格服務(wù)基礎(chǔ)設(shè)施(Open Grid Services Infrastructure, OGSI)—— 的一個組成部分。Globus Toolkit 3.0 是第一個完全支持 OGSA/OGSI 標準的網(wǎng)格平臺,它支持將 Web 服務(wù)作為數(shù)據(jù)交換的平臺。IBM 作為 OGSA 標準和 Globus 系統(tǒng)的關(guān)鍵參與者,給 Web 服務(wù)提供了強有力的支持,現(xiàn)在正推薦人們在業(yè)務(wù)開發(fā)平臺中廣泛使用 Web 服務(wù)。Globus 支持 SOAP Web 服務(wù)協(xié)議。

