我們?cè)?jīng)見(jiàn)到過(guò)的,或者與客戶(hù)和雇主討論過(guò)的。我們的目的是通過(guò)與你分享這些,給你一些各種可能的實(shí)現(xiàn)的樣本,不要認(rèn)為這就是所有的實(shí)現(xiàn)方法了。實(shí)現(xiàn)和利用網(wǎng)格計(jì)算基礎(chǔ)設(shè)施的方法有很多。當(dāng)所有人都熟悉了網(wǎng)格后,你和你的團(tuán)隊(duì)一定能夠提出大量可以從這種架構(gòu)受益的項(xiàng)目,然后你只需權(quán)衡這些項(xiàng)目使用網(wǎng)格的優(yōu)缺點(diǎn),就可以確定哪個(gè)項(xiàng)目真的值得實(shí)現(xiàn)了。在擴(kuò)展應(yīng)用時(shí),網(wǎng)格計(jì)算是一種重要的工具,既可以利用網(wǎng)格對(duì)生產(chǎn)環(huán)境中的某個(gè)程序進(jìn)行經(jīng)濟(jì)有效的擴(kuò)展,又可以用它來(lái)加速生產(chǎn)開(kāi)發(fā)周期中的某一步,如編譯。并不是只有生產(chǎn)環(huán)境需要可擴(kuò)展性,支持它的流程和人員也需要有可擴(kuò)展性。當(dāng)你讀這些例子的時(shí)候,要時(shí)刻記住這一點(diǎn),同時(shí)不妨思考一下網(wǎng)格計(jì)算可以如何幫助你進(jìn)行擴(kuò)展。
我們準(zhǔn)備介紹四個(gè)例子,用來(lái)說(shuō)明網(wǎng)格計(jì)算的各種用法,包括在網(wǎng)格上運(yùn)行生產(chǎn)環(huán)境、使用網(wǎng)格進(jìn)行編譯、在網(wǎng)格上實(shí)現(xiàn)部分的數(shù)據(jù)存儲(chǔ)倉(cāng)庫(kù)環(huán)境以及網(wǎng)格上的后臺(tái)辦公處理。我們知道還有更多可能的實(shí)現(xiàn)方法,但這些示例應(yīng)該能夠給你足夠的啟發(fā),讓你用來(lái)啟動(dòng)自己的頭腦風(fēng)暴會(huì)議了。
1. 生產(chǎn)網(wǎng)格
第一種用法示例當(dāng)然是在生產(chǎn)環(huán)境中使用網(wǎng)格計(jì)算了。對(duì)于那些要求實(shí)時(shí)用戶(hù)交互的應(yīng)用(如SaaS公司的應(yīng)用)來(lái)說(shuō),不太可能這樣使用網(wǎng)格。但對(duì)于某些IT組織來(lái)說(shuō),它們的應(yīng)用中具有非常復(fù)雜的數(shù)學(xué)運(yùn)算,如用于控制制造流程或航運(yùn)控制等,這時(shí)網(wǎng)格計(jì)算就非常適用了。由于歷史原因,許多這樣的應(yīng)用都駐留在大型機(jī)或中端系統(tǒng)中。許多技術(shù)組織都發(fā)現(xiàn),無(wú)論是從供應(yīng)商還是從軟件開(kāi)發(fā)的角度來(lái)看,要支持這種又大又老的機(jī)器,都是非常困難的。現(xiàn)在越來(lái)越少有工程師知道如何在這種機(jī)器上編寫(xiě)或者運(yùn)行程序,也越來(lái)越少有人愿意放著Web程序開(kāi)發(fā)技術(shù)不學(xué),而學(xué)習(xí)這種技術(shù)。網(wǎng)格計(jì)算環(huán)境為這種陳舊的技術(shù)同時(shí)提供了機(jī)器的支持和軟件開(kāi)發(fā)的支持。把應(yīng)用從一一臺(tái)戰(zhàn)
略性硬件上遷移到運(yùn)行在許多同質(zhì)化硬件上的網(wǎng)格中,就能減少你對(duì)一個(gè)供應(yīng)商的支持和維護(hù)的依賴(lài)性。網(wǎng)格不僅能為你制衡供應(yīng)商,還可能會(huì)為你的組織極大地節(jié)省成本。同時(shí),你應(yīng)該很容易找到經(jīng)過(guò)培訓(xùn)的工程師和管理員,他們知道如何運(yùn)行網(wǎng)格,至少你也能找到些員工,愿意去學(xué)習(xí)一些新技術(shù)。
2.編譯網(wǎng)格
下一個(gè)示例是把網(wǎng)格計(jì)算基礎(chǔ)設(shè)施用作編譯機(jī)。如果你的應(yīng)用在你的臺(tái)式機(jī)上編譯也只需花費(fèi)幾分鐘,這樣做未免有點(diǎn)大材小用,但也有許多應(yīng)用如果運(yùn)行在一一臺(tái)主機(jī)或開(kāi)發(fā)者的機(jī)器上,要編譯完整個(gè)代碼庫(kù),可能需要幾天的時(shí)間。這時(shí)使用編譯場(chǎng)或網(wǎng)格環(huán)境,編譯就會(huì)變得非?旖。編譯很適合采用網(wǎng)格來(lái)做,因?yàn)榫幾g工作可以被劃分成許多子任務(wù),而且它們都能被非順次執(zhí)行。編譯后期的工作(包括連接)開(kāi)始變得比較有順次性,因此不能在網(wǎng)格上運(yùn)行,但早期階段還是很適合分工的。
大多數(shù)公司每晚會(huì)編譯出一個(gè)簽人代碼的可執(zhí)行版本,這樣需要測(cè)試這個(gè)版本的人就都能夠訪(fǎng)問(wèn)它,此外還可以確保代碼真的被編譯成功了。如果不知道簽人代碼是否被正確編譯了,那么在質(zhì)量保證工程師測(cè)試這個(gè)版本之前,就需要軟件開(kāi)發(fā)工程師花費(fèi)幾小時(shí)(甚至幾天)的工作來(lái)修復(fù)它。如果每天都不能編譯成功,都要等到最后一步才能讓這個(gè)版本運(yùn)行,這樣會(huì)給軟件開(kāi)發(fā)人員造成延遲,很可能會(huì)使軟件開(kāi)發(fā)人員不簽人代碼,直到最后才簽人一次,這樣會(huì)增加丟失工作成果的風(fēng)險(xiǎn),還會(huì)在代碼中引人很多bug。每晚都編譯代碼庫(kù)中的源代碼,就能避免這些問(wèn)題。晚上可以用于編譯的空閑資源是測(cè)試環(huán)境。它們通常只在白天使用,晚上可以占用它們,從而增加了編譯機(jī)器。這種CPU拾遺的概念我們之前討論過(guò),這只是它的一種簡(jiǎn)單實(shí)現(xiàn),能夠幫助你節(jié)省許多硬件方面的成本。
對(duì)于C、C++、Obiective C、Objective C++語(yǔ)言來(lái)說(shuō),要實(shí)現(xiàn)一個(gè)分布式的編譯流程,只需要運(yùn)行distcc即可,正如它的站點(diǎn)( hp://ww/.distcc.org)所聲稱(chēng)的。這是一個(gè)快速的、 免費(fèi)的編譯器,只需在編譯網(wǎng)格中的所有服務(wù)器上運(yùn)行istcc后臺(tái)進(jìn)程,把這些服務(wù)器的名字存放到一個(gè)環(huán)境變量中,然后啟動(dòng)編譯進(jìn)程即可。
3. 數(shù)據(jù)倉(cāng)庫(kù)網(wǎng)格
我們要介紹的下一個(gè)例子是把網(wǎng)格用作數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)設(shè)施的一部分。一個(gè)數(shù)據(jù)倉(cāng)庫(kù)有許多組件,從主源數(shù)據(jù)庫(kù)到用戶(hù)查看的最終報(bào)告,不一而足。一個(gè)可以利用網(wǎng)格環(huán)境的部分是數(shù)據(jù)倉(cāng)庫(kù)的提取一轉(zhuǎn)換一加載( ETL )過(guò)程中的轉(zhuǎn)換階段。ETL流程指的是如何從主源數(shù)據(jù)庫(kù)中提取數(shù)據(jù),然后把數(shù)據(jù)轉(zhuǎn)換為不同的形式(通常是非規(guī)范化的星型模式),再把它們加載到數(shù)據(jù)倉(cāng)庫(kù)中。其中,轉(zhuǎn)換的步驟可能需要大量的計(jì)算,因此是利用網(wǎng)格計(jì)算能力的主要候選者。
轉(zhuǎn)換流程可以只是使數(shù)據(jù)非規(guī)范化,也可以是匯總幾個(gè)月來(lái)上千個(gè)交易的銷(xiāo)售數(shù)據(jù)。像匯總幾個(gè)月甚至一年的數(shù)據(jù)這樣需要高強(qiáng)度計(jì)算的處理,通常會(huì)被分解成幾塊,分配給一組計(jì)算機(jī)運(yùn)行。這樣做是非常適合網(wǎng)格環(huán)境的。數(shù)據(jù)量過(guò)大通常是造成不能按照客戶(hù)或內(nèi)部用戶(hù)要求按時(shí)完成作業(yè)(如ETL)處理的原因。當(dāng)然,你應(yīng)該考慮如何限制你要保留和處理的數(shù)據(jù)量,但你所希望得到達(dá)到流量猛增,也可能會(huì)導(dǎo)致大量的數(shù)據(jù)增長(zhǎng)。一個(gè)解決方案就是為ETL實(shí)施一個(gè)網(wǎng)格基礎(chǔ)設(shè)施,以便及時(shí)完成這些工作。
4 .后臺(tái)辦公網(wǎng)格
我們想介紹的最后個(gè)例子是后臺(tái)辦公處理。在大多數(shù)公司中,這樣的后臺(tái)辦公處理的一個(gè)示例發(fā)生在每月財(cái)務(wù)結(jié)算時(shí)。這個(gè)時(shí)候通常有大量的處理、數(shù)據(jù)匯總和計(jì)算。通常這是由企業(yè)資源規(guī)劃(ERP)系統(tǒng)、財(cái)務(wù)軟件包、自主研發(fā)的系統(tǒng)或這些系統(tǒng)的組合來(lái)做的。如果系統(tǒng)不是專(zhuān)門(mén)被設(shè)計(jì)為在網(wǎng)格上運(yùn)行,那么用這些現(xiàn)成的系統(tǒng)在網(wǎng)格計(jì)算基礎(chǔ)設(shè)施上進(jìn)行處理,可能會(huì)非常困難,雖然不是沒(méi)有可能。通常非常大的ERP系統(tǒng)都能夠進(jìn)行很多定制和配置。如果你曾經(jīng)負(fù)責(zé)過(guò)這樣的處理,或者等待這種處理結(jié)束等了幾天,那么你一定會(huì)認(rèn)同我們的觀點(diǎn),即在幾百臺(tái)主機(jī)上運(yùn)行這個(gè)處理,在幾小時(shí)就完成它,這是一種劃時(shí)代的進(jìn)步。有許多后臺(tái)辦公系統(tǒng)都需要高強(qiáng)度的計(jì)算,而且只在每個(gè)月末處理一次。 這些系統(tǒng)包括開(kāi)發(fā)票系統(tǒng)、再訂購(gòu)系統(tǒng)、資源規(guī)劃系統(tǒng)以及質(zhì)量保證測(cè)試系統(tǒng)。你可以以這些為出發(fā)點(diǎn),列出那些潛在的可能改進(jìn)的地方。
在網(wǎng)格上運(yùn)行生產(chǎn)環(huán)境、使用網(wǎng)格進(jìn)行編譯、在網(wǎng)格上實(shí)現(xiàn)部分?jǐn)?shù)據(jù)倉(cāng)庫(kù)環(huán)境以及在網(wǎng)格上進(jìn)行后臺(tái)辦公處理。我們知道還有許多可能的實(shí)現(xiàn),這里只是給你提供一些例子,你可以利用它們提出自己的應(yīng)用使用網(wǎng)格計(jì)算的方法。之后你就可以分析這些網(wǎng)站設(shè)計(jì)方法的優(yōu)缺點(diǎn),并賦予它們權(quán)重。