百科解釋
網(wǎng)格(Grid)這個(gè)詞來自于電力網(wǎng)格(PowerGrid)!熬W(wǎng)格”與“電力網(wǎng)格”形神相似。一方面,計(jì)算機(jī)網(wǎng)縱橫交錯(cuò),很像電力網(wǎng);另一方面,電力網(wǎng)格用高壓線路把分散在各地的發(fā)電站連接在一起,向用戶提供源源不斷的電力。用戶只需插上插頭、打開開關(guān)就能用電,一點(diǎn)都不需要關(guān)心電能是從哪個(gè)電站送來的,也不需要知道是水力電、火力電還是核能電。建設(shè)網(wǎng)格的目的也是一樣,其最終目的是希望它能夠把分布在因特網(wǎng)上數(shù)以億計(jì)的計(jì)算機(jī)、存儲(chǔ)器、貴重設(shè)備、數(shù)據(jù)庫(kù)等結(jié)合起來,形成一個(gè)虛擬的、空前強(qiáng)大的超級(jí)計(jì)算機(jī),滿足不斷增長(zhǎng)的計(jì)算、存儲(chǔ)需求,并使信息世界成為一個(gè)有機(jī)的整體。
電網(wǎng)和網(wǎng)格對(duì)照表
電網(wǎng):當(dāng)你用洗衣機(jī)洗衣服時(shí),你只關(guān)心衣服什么時(shí)候洗好。而不在乎洗衣機(jī)用的電是來源于水力發(fā)電,火電廠還是核電。你只需要把插頭插入插座就行了。
網(wǎng)格:當(dāng)你在電腦前工作時(shí),你唯一關(guān)心的是要做的事(比如一項(xiàng)計(jì)算,設(shè)計(jì)等等)無(wú)論電腦連上什么網(wǎng)路,你都可以得到所需的計(jì)算能力出儲(chǔ)存容量。
電網(wǎng):我們現(xiàn)在用電的基礎(chǔ)建設(shè)是“電網(wǎng)“。就是利用輸電站,電力站,變電所和電線等等,把許多不同種類的發(fā)電廠和你家聯(lián)系起來。
網(wǎng)格:對(duì)于上述的基礎(chǔ)建設(shè)就叫“網(wǎng)格“。就是把電腦,工作站,服務(wù)器等計(jì)算資源連起來,而且提供必要的使用機(jī)制。
電網(wǎng):電網(wǎng)是顯而易見的:你不必?fù)?dān)心你所用的電力是從哪里或者如何產(chǎn)生的。
網(wǎng)格:網(wǎng)格也將成為顯而易見:你不必?fù)?dān)心你所使用的電腦程序和資料在那里,網(wǎng)格中間服務(wù)器都會(huì)把最適合的計(jì)算資源分配給你的工作。
電網(wǎng):電網(wǎng)很普遍:電力到處都有。只要插上插座就能獲得電力資源。
網(wǎng)格:網(wǎng)格也將很普遍:電腦,筆記本,或者是掌上電腦,手機(jī),甚至是一般的家用電器都可以通過網(wǎng)格插口連 上網(wǎng)格。
電網(wǎng):電網(wǎng)是公共設(shè)施:你只要付錢就可以用電。
網(wǎng)格:網(wǎng)格也試圖想為廣大民眾服務(wù):只要付錢,都可以享用網(wǎng)格無(wú)窮無(wú)盡的計(jì)算資源和儲(chǔ)存能力
注:另一種說法是網(wǎng)格就像一個(gè)巨大的網(wǎng),里面有很多格子.每個(gè)格子就是一個(gè)局域網(wǎng)格,每個(gè)節(jié)點(diǎn)就是一臺(tái)計(jì)算機(jī).這種說法可能起源于中國(guó)。
二.究竟什么是網(wǎng)格
網(wǎng)格是一種新興的技術(shù),正處在不斷發(fā)展和變化當(dāng)中。目前學(xué)術(shù)界和商業(yè)界圍繞網(wǎng)格開展的研究有很多,其研究的內(nèi)容和名稱也不盡相同因而網(wǎng)格尚未有精確的定義和內(nèi)容定位。比如國(guó)外媒體常用“下一代互聯(lián)網(wǎng)”、“Internet2”、“下一代Web”等來稱呼網(wǎng)格相關(guān)技術(shù)。但“下一代互聯(lián)網(wǎng)(NGI)”和“Internet2”又是美國(guó)的兩個(gè)具體科研項(xiàng)目的名字,它們與網(wǎng)格研究目標(biāo)相交叉,研究?jī)?nèi)容和重點(diǎn)有很大不同。企業(yè)界用的名稱也很多,有內(nèi)容分發(fā)(Contents Delivery)、服務(wù)分發(fā)(Service Delivery)、電子服務(wù)(e-service)、實(shí)時(shí)企業(yè)計(jì)算(Real-Time Enterprise Computing,簡(jiǎn)稱RTEC)、分布式計(jì)算Peer-to-Peer Computing(簡(jiǎn)稱P2P)、Web服務(wù)(Web Services)等。中國(guó)科學(xué)院計(jì)算所所長(zhǎng)李國(guó)杰院士認(rèn)為,網(wǎng)格實(shí)際上是繼傳統(tǒng)互聯(lián)網(wǎng)、Web之后的第三次浪潮,可以稱之為第三代互聯(lián)網(wǎng)應(yīng)用。
網(wǎng)格是利用互聯(lián)網(wǎng)把地理上廣泛分布的各種資源(包括計(jì)算資源、存儲(chǔ)資源、帶寬資源、軟件資源、數(shù)據(jù)資源、信息資源、知識(shí)資源等)連成一個(gè)邏輯整體,就像一臺(tái)超級(jí)計(jì)算機(jī)一樣,為用戶提供一體化信息和應(yīng)用服務(wù)(計(jì)算、存儲(chǔ)、訪問等),虛擬組織最終實(shí)現(xiàn)在這個(gè)虛擬環(huán)境下進(jìn)行資源共享和協(xié)同工作,徹底消除資源“孤島”,最充分的實(shí)現(xiàn)信息共享。
網(wǎng)格必須同時(shí)滿足三個(gè)條件:在非集中控制的環(huán)境中協(xié)同使用資源;使用標(biāo)準(zhǔn)的、開放的和通用的協(xié)議和接口;提供非平凡的服務(wù)。
三.網(wǎng)格技術(shù)的特征及其體系結(jié)構(gòu)
1.網(wǎng)格技術(shù)的特征
在介紹網(wǎng)格的特征之前,我們首先要解決一個(gè)重要的問題:網(wǎng)格是不是分布式系統(tǒng)?這個(gè)問題之所以必須回答,因?yàn)槿藗兂3?huì)問另一個(gè)相關(guān)的問題:"為什么我們需要網(wǎng)格?現(xiàn)在已經(jīng)有很多系統(tǒng)(比如海關(guān)報(bào)關(guān)系統(tǒng)、飛機(jī)訂票系統(tǒng))實(shí)現(xiàn)了資源共享與協(xié)同工作。這些系統(tǒng)與網(wǎng)格有什么區(qū)別?"
對(duì)這個(gè)問題的簡(jiǎn)要回答是:網(wǎng)格是一種分布式系統(tǒng),但網(wǎng)格不同于傳統(tǒng)的分布式系統(tǒng)。IBM Global Service與EDS是在這個(gè)分布式領(lǐng)域最著名的公司。構(gòu)建分布式系統(tǒng)有三種方法:即傳統(tǒng)方法(我們稱之為EDS方法)、分布自律系統(tǒng)(Autonomous Decentralized Systems, ADS)方法,網(wǎng)格(grid)方法。ADS通常用于工業(yè)控制系統(tǒng)中。網(wǎng)格方法與傳統(tǒng)方法的區(qū)別見下表:
特征 傳統(tǒng)分布式系統(tǒng) 網(wǎng)格
開放性 需求和技術(shù)有一定確定性、封閉性 開放技術(shù)、開放系統(tǒng)
通用性 專門領(lǐng)域、專有技術(shù) 通用技術(shù)
集中性 很可能是統(tǒng)一規(guī)劃、集中控制 一般而言是自然進(jìn)化、非集中控制
使用模式 常常是終端模式或C/S模式 服務(wù)模式為主
標(biāo)準(zhǔn)化 領(lǐng)域標(biāo)準(zhǔn)或行業(yè)標(biāo)準(zhǔn) 通用標(biāo)準(zhǔn)(+行業(yè)標(biāo)準(zhǔn))
平臺(tái)性 應(yīng)用解決方案 平臺(tái)或基礎(chǔ)設(shè)施
通過以上對(duì)比,網(wǎng)格具有以下四點(diǎn)優(yōu)勢(shì):
。1)資源共享,消除資源孤島:網(wǎng)格能夠提供資源共享,它能消除信息孤島、實(shí)現(xiàn)應(yīng)用程序的互連互通。網(wǎng)格與計(jì)算機(jī)網(wǎng)絡(luò)不同,計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)的是一種硬件的連通,而網(wǎng)格能實(shí)現(xiàn)應(yīng)用層面的連通。
。2)協(xié)同工作:網(wǎng)格第二個(gè)特點(diǎn)是協(xié)同工作,很多網(wǎng)格結(jié)點(diǎn)可以共同處理一個(gè)項(xiàng)目。
(3)通用開放標(biāo)準(zhǔn),非集中控制,非平凡服務(wù)質(zhì)量:這是Ian Foster最近提出的網(wǎng)格檢驗(yàn)標(biāo)準(zhǔn)。網(wǎng)格是基于國(guó)際的開放技術(shù)標(biāo)準(zhǔn),這跟以前很多行業(yè)、部門或者公司推出的軟件產(chǎn)品不一樣。
。4)動(dòng)態(tài)功能,高度可擴(kuò)展性:網(wǎng)格可以提供動(dòng)態(tài)的服務(wù),能夠適應(yīng)變化。同時(shí)網(wǎng)格并非限制性的,它實(shí)現(xiàn)了高度的可擴(kuò)展性。
2.網(wǎng)格的體系特征
網(wǎng)格之所以能有以上所說的種種優(yōu)勢(shì)特征,是由網(wǎng)格的體系結(jié)構(gòu)賦予它的。網(wǎng)格體系結(jié)構(gòu)的主要功能是劃分系統(tǒng)基本組件,指定組件的目的與功能,刻畫組件之間的相互作用,整合各部分組件?蒲泄ぷ髡咭呀(jīng)提出并實(shí)現(xiàn)了若干種合理的網(wǎng)格體系結(jié)構(gòu)。下面介紹目前影響比較廣泛的兩個(gè)網(wǎng)格體系結(jié)構(gòu):網(wǎng)格計(jì)算協(xié)議體系結(jié)構(gòu)(Grid Protocol Architecture,GPA)和計(jì)算經(jīng)濟(jì)網(wǎng)格體系結(jié)構(gòu)(GRACE)模型。
OGSA(Open Grid Services Architecture)被稱為是下一代的網(wǎng)格體系結(jié)構(gòu),它是在原來“五層沙漏結(jié)構(gòu)”的基礎(chǔ)上,結(jié)合最新的Web Service 技術(shù)提出來的。OGSA包括兩大關(guān)鍵技術(shù)即網(wǎng)格技術(shù)和Web Service 技術(shù)。
隨著網(wǎng)格計(jì)算研究的深入,人們?cè)絹碓桨l(fā)現(xiàn)網(wǎng)格體系結(jié)構(gòu)的重要。網(wǎng)格體系結(jié)構(gòu)是關(guān)于如何建造網(wǎng)格的技術(shù),包括對(duì)網(wǎng)格基本組成部分和各部分功能的定義和描述,網(wǎng)格各部分相互關(guān)系與集成方法的規(guī)定,網(wǎng)格有效運(yùn)行機(jī)制的刻畫。顯然,網(wǎng)格體系結(jié)構(gòu)是網(wǎng)格的骨架和靈魂,是網(wǎng)格最核心的技術(shù),只有建立合理的網(wǎng)格體系結(jié)構(gòu),才能夠設(shè)計(jì)和建造好網(wǎng)格,才能夠使網(wǎng)格有效地發(fā)揮作用。
OGSA最突出的思想就是以“服務(wù)”為中心。在OGSA框架中,將一切都抽象為服務(wù),包括計(jì)算機(jī)、程序、數(shù)據(jù)、儀器設(shè)備等。這種觀念,有利于通過統(tǒng)一的標(biāo)準(zhǔn)接口來管理和使用網(wǎng)格。Web Service提供了一種基于服務(wù)的框架結(jié)構(gòu),但是,Web Service 面對(duì)的一般都是永久服務(wù),而在網(wǎng)格應(yīng)用環(huán)境中,大量的是臨時(shí)性的短暫服務(wù),比如一個(gè)計(jì)算任務(wù)的執(zhí)行等?紤]到網(wǎng)格環(huán)境的具體特點(diǎn),OGSA 在原來Web Service 服務(wù)概念的基礎(chǔ)上,提出了“網(wǎng)格服務(wù)(Grid Service)”的概念,用于解決服務(wù)發(fā)現(xiàn)、動(dòng)態(tài)服務(wù)創(chuàng)建、服務(wù)生命周期管理等與臨時(shí)服務(wù)有關(guān)的問題。
基于網(wǎng)格服務(wù)的概念,OGSA 將整個(gè)網(wǎng)格看作是“網(wǎng)格服務(wù)”的集合,但是這個(gè)集合不是一成不變的,是可以擴(kuò)展的,這反映了網(wǎng)格的動(dòng)態(tài)特性。網(wǎng)格服務(wù)通過定義接口來完成不同的功能,服務(wù)數(shù)據(jù)是關(guān)于網(wǎng)格服務(wù)實(shí)例的信息,因此網(wǎng)格服務(wù)可以簡(jiǎn)單地表示為“網(wǎng)格服務(wù)=接口/行為+服務(wù)數(shù)據(jù)”。
在目前,網(wǎng)格服務(wù)提供的接口還比較有限,OGSA 還在不斷的完善過程之中,下一步將考慮擴(kuò)充管理、安全等等方面的內(nèi)容。
3.網(wǎng)格協(xié)議體系結(jié)構(gòu)
Ian Foster于2001年提出了網(wǎng)格計(jì)算協(xié)議體系結(jié)構(gòu),認(rèn)為網(wǎng)格建設(shè)的核心是標(biāo)準(zhǔn)化的協(xié)議與服務(wù),并與Internet網(wǎng)絡(luò)協(xié)議進(jìn)行類比(如圖1)。該結(jié)構(gòu)主要包括以下五個(gè)層次:
構(gòu)造層(Fabric):控制局部的資源。由物理或邏輯實(shí)體組成,目的是為上層提供共享的資源。常用的物理資源包括計(jì)算資源、存儲(chǔ)系統(tǒng)、目錄、網(wǎng)絡(luò)資源等;邏輯資源包括分布式文件系統(tǒng)、分布計(jì)算池、計(jì)算機(jī)群等。構(gòu)造層組件的功能受高層需求影響,基本功能包括資源查詢和資源管理的QoS保證。
連接層(Connectivity):支持便利安全的通信。該層定義了網(wǎng)格中安全通信與認(rèn)證授權(quán)控制的核心協(xié)議。資源間的數(shù)據(jù)交換和授權(quán)認(rèn)證、安全控制都在這一層控制實(shí)現(xiàn)。該層組件提供單點(diǎn)登錄、代理委托、同本地安全策略的整合和基于用戶的信任策略等功能。
資源層(Resource):共享單一資源。該層建立在連接層的通信和認(rèn)證協(xié)議之上,滿足安全會(huì)話、資源初始化、資源運(yùn)行狀況監(jiān)測(cè)、資源使用狀況統(tǒng)計(jì)等需求,通過調(diào)用構(gòu)造層函數(shù)來訪問和控制局部資源。
匯集層(Collective):協(xié)調(diào)各種資源。該層將資源層提交的受控資源匯集在一起,供虛擬組織的應(yīng)用程序共享和調(diào)用。該層組件可以實(shí)現(xiàn)各種共享行為,包括目錄服務(wù)、資源協(xié)同、資源監(jiān)測(cè)診斷、數(shù)據(jù)復(fù)制、負(fù)荷控制、賬戶管理等功能。
應(yīng)用層(Application):為網(wǎng)格上用戶的應(yīng)用程序?qū)印?yīng)用層是在虛擬組織環(huán)境中存在的。應(yīng)用程序通過各層的應(yīng)用程序編程接口(API)調(diào)用相應(yīng)的服務(wù),再通過服務(wù)調(diào)動(dòng)網(wǎng)格上的資源來完成任務(wù)。為便于網(wǎng)格應(yīng)用程序的開發(fā),需要構(gòu)建支持網(wǎng)格計(jì)算的大型函數(shù)庫(kù)。
4. 當(dāng)今網(wǎng)格的運(yùn)用
現(xiàn)在國(guó)內(nèi)國(guó)外運(yùn)用得最多的可能是在一些大型院校的計(jì)算網(wǎng)格(實(shí)現(xiàn)計(jì)算資源的共享。 什么是計(jì)算資源: 簡(jiǎn)單來說就是計(jì)算能力,CPU。 計(jì)算資源共享就是CPU計(jì)算的共享)。人們把一個(gè)集群(cluster, 也就是常說的機(jī)房,通常有幾十臺(tái)操作系統(tǒng)為L(zhǎng)inux的計(jì)算機(jī))的計(jì)算機(jī)連成一個(gè)局域型網(wǎng)格。這樣就好像把這幾十臺(tái)電腦連成了一臺(tái)超級(jí)計(jì)算機(jī),計(jì)算能力當(dāng)然大大提高了。這種局域計(jì)算網(wǎng)格主要運(yùn)用于一些科研的研究。比如說生物科學(xué)。當(dāng)生物科學(xué)的研究員需要高性能的計(jì)算資源來幫助他們分析試驗(yàn)的結(jié)果時(shí),他們就把這些分析試驗(yàn)的程序提交(submit)給網(wǎng)格,網(wǎng)格通過計(jì)算再把結(jié)果返回給這些研究員。計(jì)算結(jié)果可能是一些圖像(rendering)也可能是一些數(shù)據(jù)。這些計(jì)算如果在單一PC(Personal computer, 個(gè)人計(jì)算機(jī))上運(yùn)行的話,往往會(huì)花費(fèi)幾個(gè)月的時(shí)間,然而在網(wǎng)格中運(yùn)行一,兩天也就完成了。這就是網(wǎng)格技術(shù)最直觀的優(yōu)點(diǎn)之一。當(dāng)然現(xiàn)在有一些大型主機(jī)(super-mainframe)也有很強(qiáng)的計(jì)算能力(比如常說的IBM deepblue,打敗人類圍棋大師Kasparov那位),但是這種主機(jī)太昂貴,而且配置(deploy)往往不方便,是名副其實(shí)的重量級(jí)(heavyweight)計(jì)算。SETI@Home (SETI@Home's,一個(gè)分布式計(jì)算的項(xiàng)目,通過互聯(lián)網(wǎng)絡(luò)上的計(jì)算機(jī)搜索地球外智慧訊息,網(wǎng)格在分布式計(jì)算的成功運(yùn)用。 參見:http://www.equn.com/info/n-18.html )的網(wǎng)站指出,世界上最強(qiáng)大的計(jì)算機(jī)IBM 的 ASCI White,可以實(shí)現(xiàn)12萬(wàn)億次的浮點(diǎn)運(yùn)算,但是花費(fèi)了1億千萬(wàn)美元;然而SETI@HOME 只用了50萬(wàn)美元卻實(shí)現(xiàn)了15萬(wàn)億次浮點(diǎn)運(yùn)算。
網(wǎng)格另外一個(gè)顯著的運(yùn)用可能就是虛擬組織(Virtual Organisations)。這種虛擬組織往往是針對(duì)與某一個(gè)特定的項(xiàng)目,或者是某一類特定研究人員。在這里面可以實(shí)現(xiàn)計(jì)算資源、存儲(chǔ)資源、數(shù)據(jù)資源、信息資源、知識(shí)資源、專家資源的全面共享。比如說中國(guó)2008年奧運(yùn)會(huì)開幕式研究組就可以運(yùn)用網(wǎng)格組成一個(gè)虛擬組織。在這個(gè)虛擬組織里,任何成員不管在哪個(gè)地方都可以有權(quán)訪問組織的共享資源(如 開幕式場(chǎng)地圖紙,開幕式資金,開幕式節(jié)目單);而且可以和另一地方的虛擬組織成員進(jìn)行交流。這個(gè)虛擬組織就像把所有奧運(yùn)會(huì)開幕式的資源,信息,以及人員集中到了一個(gè)虛擬的空間,讓人們集中精力研討開幕式項(xiàng)目的問題,而不必考慮其他的問題。據(jù)個(gè)實(shí)例,由英國(guó)利茲大學(xué),牛津大學(xué),約克大學(xué)和謝菲爾德大學(xué)合作的DAME項(xiàng)目就是致力于研究和運(yùn)用虛擬組織。DAME架構(gòu)在這四個(gè)大學(xué)合建的白玫瑰網(wǎng)格White Rose Computational Grid (WRCG)上,運(yùn)用于對(duì)飛機(jī)故障的快速檢測(cè)和維修。
5.網(wǎng)格基礎(chǔ)設(shè)施組件
首先,我們來看看有哪些典型的網(wǎng)格基礎(chǔ)設(shè)施組件,每一種組件如何對(duì)應(yīng)用程序的架構(gòu)、設(shè)計(jì)和部署產(chǎn)生影響。下面是網(wǎng)格基礎(chǔ)設(shè)施中的一些主要組件:
安全性。安全性是網(wǎng)格計(jì)算中的重要問題。每一種網(wǎng)格資源都可能需要遵從多種不同的安全策略。單點(diǎn)登錄認(rèn)證是一種必不可少的方法。得到普遍遵守的協(xié)商授權(quán)機(jī)制也是很必要的。
資源管理。當(dāng)提交一項(xiàng)任務(wù)的時(shí)候,網(wǎng)格資源管理器需要考慮如何為該任務(wù)指派資源、如何監(jiān)視其狀態(tài)以及如何返回它的執(zhí)行結(jié)果。
信息服務(wù)。由于網(wǎng)格資源管理器在指派資源之前要經(jīng)過綜合全面的考慮,因此它需要知道哪些網(wǎng)格資源是可用的,以及這些資源的容量與當(dāng)前使用的情況。這些有關(guān)網(wǎng)格資源的知識(shí)是通過網(wǎng)格信息服務(wù)(Grid Information Service,GIS)維護(hù)和提供的,又稱為監(jiān)視與發(fā)現(xiàn)服務(wù)(Monitoring and Discovery Service,MDS)。
數(shù)據(jù)管理。數(shù)據(jù)管理主要解決任務(wù)如何傳輸數(shù)據(jù)以及如何訪問共享存儲(chǔ)的問題。
下面讓我們以Globus Toolkit為例分別詳細(xì)討論一下每一種組件。
安全性
如果您是一名用戶,要在遠(yuǎn)程系統(tǒng)上運(yùn)行一項(xiàng)任務(wù),您會(huì)關(guān)心遠(yuǎn)程系統(tǒng)是否安全,是否能保證其他人不能訪問到您的數(shù)據(jù)。如果您是提供資源的一方,用戶可以在您的系統(tǒng)中執(zhí)行任務(wù),那么您必須確信所有的任務(wù)都不會(huì)遭到破壞和干擾,也不能訪問您系統(tǒng)中的其他私有數(shù)據(jù)。除了這兩方面的內(nèi)容之外,網(wǎng)格環(huán)境也面臨著一般分布式計(jì)算環(huán)境中存在的其他所有安全問題。
網(wǎng)格安全基礎(chǔ)設(shè)施(Grid Security Infrastructure,GSI)是 Globus Toolkit 的基礎(chǔ),它提供了很多工具,可以幫助我們對(duì)網(wǎng)格環(huán)境中的安全問題進(jìn)行管理。在您開發(fā)面向網(wǎng)格環(huán)境的應(yīng)用程序時(shí),您的腦子里必須時(shí)刻考慮到安全問題,并用 GSI 提供的工具來解決這些問題。網(wǎng)格架構(gòu)中與安全性有關(guān)的功能主要負(fù)責(zé)完成認(rèn)證、授權(quán)以及實(shí)現(xiàn)網(wǎng)格資源之間的安全通信。
在應(yīng)用程序中啟用網(wǎng)格時(shí)的考慮:安全性。當(dāng)我們?cè)O(shè)計(jì)一個(gè)能夠使用網(wǎng)格的應(yīng)用程序時(shí),安全性問題必須考慮在內(nèi)。下面的列表總結(jié)了需要考慮的一些問題:
單點(diǎn)登錄?缦到y(tǒng)的 ID 映射。如上所述,GSI 提供了認(rèn)證、授權(quán)以及安全的通信。然而,您需要對(duì)安全性管理及其含義有深刻完整的理解。比如說:您是否可以將多個(gè)用戶映射到目標(biāo)系統(tǒng)中的同一個(gè)用戶 ID 上?是否需要特定的審計(jì)機(jī)制來確定實(shí)際發(fā)起應(yīng)用程序的是哪一個(gè)用戶?應(yīng)用程序不應(yīng)該要求在使用網(wǎng)格上的不同資源時(shí)使用不同的用戶 ID 映射機(jī)制。
多種平臺(tái)。盡管 GSI 基于開放的標(biāo)準(zhǔn)化軟件,可以在多種平臺(tái)上運(yùn)行,然而各種不同的平臺(tái)其底層的安全機(jī)制并不總是一致。比如說,在傳統(tǒng)的 UNIX 或基于 Linux 的系統(tǒng)上,讀、寫、執(zhí)行等操作的安全機(jī)制就與微軟的 Windows 環(huán)境不同。您應(yīng)該考慮應(yīng)用程序可能運(yùn)行的平臺(tái)。
使用 GSI。對(duì)于任何應(yīng)用程序特有的、且可能需要進(jìn)行認(rèn)證或特殊授權(quán)的功能而言,應(yīng)用程序的設(shè)計(jì)應(yīng)該使用 GSI,這樣能夠簡(jiǎn)化開發(fā),并通過維護(hù)單一的登錄機(jī)制,使用戶的體驗(yàn)也得到簡(jiǎn)化。
數(shù)據(jù)加密。盡管 GSI 與后文將要討論到的數(shù)據(jù)管理工具一起,提供了跨網(wǎng)絡(luò)的安全通信與數(shù)據(jù)加密,但是您也應(yīng)該考慮到,當(dāng)數(shù)據(jù)到達(dá)目的地的時(shí)候會(huì)發(fā)生什么事情。比如說,如果一些敏感的數(shù)據(jù)傳遞到某項(xiàng)資源上供任務(wù)使用,隨后又以非加密的格式保存到本地磁盤上,那么其他的用戶或應(yīng)用程序也就能訪問這些數(shù)據(jù)了。
資源管理
網(wǎng)格資源管理器致力于在任務(wù)提交時(shí)進(jìn)行資源指派。它的角色就像是異質(zhì)網(wǎng)格資源的抽象接口。資源管理組件提供的工具可以將任務(wù)分配給特定的資源,可以提供一種手段,在任務(wù)運(yùn)行過程中獲取任務(wù)狀態(tài)信息,并獲取任務(wù)完成的信息,還可以提供終止任務(wù)或?qū)ζ溥M(jìn)行管理的能力。在 Globus 中,遠(yuǎn)程任務(wù)提交是由 Globus Resource Allocation Manager(GRAM)負(fù)責(zé)處理的。
在應(yīng)用程序中啟用網(wǎng)格時(shí)的考慮:資源管理。在與資源管理相關(guān)的應(yīng)用程序架構(gòu)、設(shè)計(jì)和部署方面,有一些問題需要考慮。GRAM 最簡(jiǎn)單的形式是用于發(fā)出 globusrun 命令,在特定系統(tǒng)上發(fā)起一項(xiàng)任務(wù)。然而,應(yīng)用程序必須與 MDS 一起(通常是通過一個(gè)代理函數(shù))保證使用了適當(dāng)?shù)哪繕?biāo)資源。下面列出一些需要考慮的內(nèi)容:
選擇適當(dāng)?shù)馁Y源。通過與代理聯(lián)合工作,來保證選擇適當(dāng)?shù)哪繕?biāo)資源。這就要求應(yīng)用程序能夠正確地指定所需的環(huán)境(操作系統(tǒng)、處理器、速度、內(nèi)存,等等)。您為排除特定的依賴關(guān)系付出的努力越多,找到可用資源完成任務(wù)的機(jī)率也就越高。
多子任務(wù)。如果應(yīng)用程序中包含多個(gè)任務(wù),您必須理解(并降低)它們之間的相互依賴關(guān)系。否則,您就不得不構(gòu)建一段邏輯來處理下面這些問題:
進(jìn)程間通信
數(shù)據(jù)共享
并行任務(wù)提交
訪問任務(wù)的執(zhí)行結(jié)果。
如果一項(xiàng)任務(wù)返回的是一個(gè)簡(jiǎn)單的狀態(tài)值,或是輸出數(shù)據(jù)量很少,那么應(yīng)用程序可以僅僅通過 stdout 和 stderr 來獲取這些數(shù)據(jù)。要是必須獲取相當(dāng)復(fù)雜的結(jié)果,這時(shí)就可能需要將結(jié)果寫入一個(gè)文件,并通過適當(dāng)?shù)墓ぞ撸┠繕?biāo)機(jī)獲取/傳輸這個(gè)文件。
任務(wù)管理。GRAM 提供了查詢?nèi)蝿?wù)狀態(tài)的機(jī)制,還可以執(zhí)行諸如終止任務(wù)之類的操作。應(yīng)用程序可能會(huì)在必要的時(shí)候使用這些功能為用戶提供反饋、清除或釋放資源的操作。比如說,如果應(yīng)用程序內(nèi)有一項(xiàng)任務(wù)失敗了,其他依賴于這項(xiàng)任務(wù)的結(jié)果的任務(wù)可能就需要終止,以免無(wú)端消耗過多資源。
信息服務(wù)
信息服務(wù)是網(wǎng)格基礎(chǔ)設(shè)施中至關(guān)重要的組件。它們維護(hù)了關(guān)于資源可用性、處理能力、當(dāng)前使用情況的知識(shí)。不論在哪個(gè)網(wǎng)格中,CPU 和數(shù)據(jù)資源的情況都是不斷變動(dòng)的,這種變動(dòng)與其處理任務(wù)與共享數(shù)據(jù)的能力有關(guān)。隨著網(wǎng)格中的資源不斷被釋放,資源的狀態(tài)可以在網(wǎng)格信息服務(wù)中得到更新。客戶機(jī)、代理、網(wǎng)格資源管理器等等綜合這部分信息來進(jìn)行資源的指派。信息服務(wù)提供方是指那些為目錄提供資源狀態(tài)信息的程序。下面列出一些如何收集信息的實(shí)例:
靜態(tài)主機(jī)信息。
操作系統(tǒng)名稱、版本號(hào)、處理器提供商/類型/版本/速率/緩存大小、處理器數(shù)量、物理內(nèi)存總量、虛存總量、設(shè)備、服務(wù)類型/協(xié)議/端口號(hào)等。
動(dòng)態(tài)主機(jī)信息。
負(fù)載水平、隊(duì)列入口等。
存儲(chǔ)系統(tǒng)信息。
磁盤空間總量、可用磁盤容量等。 網(wǎng)絡(luò)信息。
網(wǎng)絡(luò)帶寬、延遲、是否可測(cè)量與可預(yù)報(bào)。
高度動(dòng)態(tài)的信息。
空閑物理內(nèi)存,空閑虛擬內(nèi)存、空閑處理器數(shù)量等。
網(wǎng)格信息服務(wù),又稱為監(jiān)視與發(fā)現(xiàn)服務(wù),在 Globus 中負(fù)責(zé)提供信息服務(wù)。MDS 使用輕量級(jí)目錄訪問協(xié)議(Lightweight Directory Access Protocol,LDAP)作為訪問資源信息的接口。
在應(yīng)用程序中啟用網(wǎng)格時(shí)的考慮:信息服務(wù)。對(duì)信息服務(wù)來說,需要考慮下面這些問題:
必須完全理解特定任務(wù)的需求,這樣才能對(duì)查詢進(jìn)行正確地格式化,以返回適當(dāng)?shù)馁Y源。這一點(diǎn)非常重要。 必須保證 MDS 中保存有適當(dāng)?shù)男畔。?MDS 中,缺省情況下包含大量關(guān)于網(wǎng)格中所含資源的數(shù)據(jù)。不過,如果您的應(yīng)用程序要求使用特定的資源或信息,而缺省情況下沒有提供,您就需要編寫您自己的信息提供方,并把適當(dāng)?shù)馁Y源加入模式中。這樣,您的應(yīng)用程序或代理就可以進(jìn)行查詢,看特定的資源或請(qǐng)求是否已經(jīng)存在。
MDS 可以用匿名帳號(hào)訪問,或是經(jīng)由一臺(tái)已經(jīng)通過 GSI 認(rèn)證的代理來訪問。應(yīng)用程序開發(fā)人員需要保證,能夠在必要的時(shí)候通過一臺(tái)經(jīng)過認(rèn)證的代理。您的網(wǎng)格環(huán)境可能具有多級(jí)別的目錄結(jié)構(gòu)。根據(jù)環(huán)境及其拓?fù)涞膹?fù)雜程度不同,您應(yīng)該保證能夠訪問適當(dāng)?shù)哪夸,在其中搜索您所要求的資源。
數(shù)據(jù)管理
當(dāng)您在構(gòu)建網(wǎng)格的時(shí)候,網(wǎng)格中最重要的資產(chǎn)就是您的數(shù)據(jù)。在您的設(shè)計(jì)當(dāng)中,您將必須確定您對(duì)數(shù)據(jù)的需求,以及如何在整個(gè)基礎(chǔ)設(shè)施中移動(dòng)數(shù)據(jù),要么就是如何用一種安全有效的方式訪問所需的數(shù)據(jù)。您可以通過一組標(biāo)準(zhǔn)化的網(wǎng)格協(xié)議與您設(shè)計(jì)的任何數(shù)據(jù)資源進(jìn)行通信。您也可以選擇構(gòu)建一個(gè)聯(lián)邦數(shù)據(jù)庫(kù),創(chuàng)建一個(gè)虛擬的數(shù)據(jù)存儲(chǔ)。還有其他一些選擇,如存儲(chǔ)區(qū)域網(wǎng)(Srorage Area Network)、網(wǎng)絡(luò)文件系統(tǒng),以及專用的存儲(chǔ)服務(wù)器等。
Globus 為網(wǎng)格環(huán)境提供了 GridFTP 和 Global Access to Secondary Storage(GASS)兩種數(shù)據(jù)傳輸機(jī)制。此外,它還提供了一種復(fù)制管理機(jī)制,可以幫助您管理和訪問數(shù)據(jù)集的副本。在應(yīng)用程序中啟用網(wǎng)格時(shí)的考慮:數(shù)據(jù)管理。數(shù)據(jù)管理問題源自如何最大化地使用有限的存儲(chǔ)空間、網(wǎng)絡(luò)帶寬、計(jì)算資源等。下面列出一些在應(yīng)用程序設(shè)計(jì)和實(shí)現(xiàn)中需要考慮的數(shù)據(jù)管理問題:
數(shù)據(jù)集的大小。對(duì)于大的數(shù)據(jù)集來說,要想將它移動(dòng)到實(shí)際運(yùn)行任務(wù)的系統(tǒng)上是不現(xiàn)實(shí),甚至是不可能的。可能的解決方案是使用數(shù)據(jù)復(fù)制、或?qū)⑼暾麛?shù)據(jù)集的一個(gè)子集拷貝到目標(biāo)系統(tǒng)中。地理上分散的用戶、數(shù)據(jù)、計(jì)算以及存儲(chǔ)資源。如果您的目標(biāo)網(wǎng)格在地理上是分散的,網(wǎng)絡(luò)連接的速度也有限,那么您在設(shè)計(jì)的時(shí)候就必須考慮到如何進(jìn)行慢速和受限的數(shù)據(jù)訪問。
在廣域網(wǎng)上進(jìn)行數(shù)據(jù)傳輸。當(dāng)您要在 Internet 或者其他的 WAN 上移動(dòng)數(shù)據(jù)時(shí),必須考慮安全性、可靠性以及性能等問題。您必須構(gòu)建一些必要的邏輯來處理數(shù)據(jù)訪問速度慢,甚至被阻斷的情況。數(shù)據(jù)傳輸?shù)恼{(diào)度。下面兩種情況至少要考慮一種:第一個(gè)是數(shù)據(jù)傳輸?shù)恼{(diào)度,這樣當(dāng)需要某項(xiàng)數(shù)據(jù)的時(shí)候數(shù)據(jù)就在它適當(dāng)?shù)奈恢蒙狭。比如說,如果數(shù)據(jù)傳輸需要進(jìn)行一個(gè)小時(shí),而使用這項(xiàng)數(shù)據(jù)的任務(wù)必須在凌晨?jī)牲c(diǎn)鐘開始運(yùn)行,那么您就應(yīng)該提前對(duì)數(shù)據(jù)傳輸進(jìn)行調(diào)度,這樣,當(dāng)需要它的任務(wù)運(yùn)行的時(shí)候,數(shù)據(jù)就是可用的了。第二個(gè)是了解進(jìn)出任何一項(xiàng)資源的任何并發(fā)文件傳輸?shù)臄?shù)量與規(guī)模。
選擇數(shù)據(jù)副本。如果您使用 Globus Data Replication 服務(wù),也許想向應(yīng)用程序中增加一段選擇適當(dāng)副本的邏輯,也就是說,您想要選擇一個(gè)包含所需數(shù)據(jù)的副本,同時(shí)還要滿足您對(duì)性能的要求。
調(diào)度器
Globus Toolkit 沒有提供任務(wù)調(diào)度器,也沒有提供元任務(wù)調(diào)度器(meta-scheduler)。不過,有一些任務(wù)調(diào)度器已經(jīng)和 Globus 集成起來了,還有一些也可以集成進(jìn)來。
在網(wǎng)格中,任務(wù)調(diào)度與負(fù)載平衡是十分重要的功能。大多數(shù)網(wǎng)格系統(tǒng)中都包括某種任務(wù)調(diào)度軟件。這種軟件可以查找到某臺(tái)機(jī)器的位置,并在上面執(zhí)行用戶提交的網(wǎng)格任務(wù)。有些調(diào)度器實(shí)現(xiàn)了按照任務(wù)優(yōu)先級(jí)進(jìn)行調(diào)度的系統(tǒng)。優(yōu)先級(jí)的實(shí)現(xiàn)方式有時(shí)是使用多個(gè)任務(wù)隊(duì)列,其中每一個(gè)隊(duì)列都代表不同的優(yōu)先級(jí)。當(dāng)網(wǎng)格計(jì)算機(jī)可以執(zhí)行任務(wù)的時(shí)候,就從優(yōu)先級(jí)最高的隊(duì)列中取出第一個(gè)任務(wù)。通過調(diào)度器還可以實(shí)現(xiàn)各種不同類型的策略。策略中可以包含多種對(duì)任務(wù)、用戶、以及資源的約束。比如說,可能有一種策略限制在一天的某些特定時(shí)間執(zhí)行網(wǎng)格任務(wù)。
調(diào)度器通常會(huì)對(duì)實(shí)時(shí)網(wǎng)格負(fù)載做出反應(yīng)。它們?cè)谔峤蝗蝿?wù)之前,會(huì)用反映當(dāng)前機(jī)器使用情況的量測(cè)信息來確定哪些機(jī)器不忙。調(diào)度器可以組織成層次結(jié)構(gòu)。比如說,元調(diào)度器將任務(wù)提交給群集調(diào)度器,或其他低層調(diào)度器,而不直接提交給獨(dú)立的計(jì)算機(jī)。更高級(jí)些的調(diào)度器可以對(duì)所調(diào)度的任務(wù)的執(zhí)行過程進(jìn)行監(jiān)視,從而對(duì)整體工作流實(shí)施管理。如果由于系統(tǒng)或網(wǎng)絡(luò)的原因而導(dǎo)致一些任務(wù)丟失,好的調(diào)度器會(huì)自動(dòng)在別的地方重新提交任務(wù)。然而,如果某個(gè)任務(wù)進(jìn)入死循環(huán),運(yùn)行的時(shí)間超過了某個(gè)最大時(shí)間,那么這樣的任務(wù)就不應(yīng)該再重新調(diào)度了。典型情況下,各種任務(wù)具有不同類型的結(jié)束代碼,其中一些結(jié)束代碼適合于用于重新提交任務(wù),而另一些則不適合。
我們通過一個(gè)預(yù)約系統(tǒng)可以實(shí)現(xiàn)在網(wǎng)格中提前保留資源。這種機(jī)制不僅僅是調(diào)度器。它首先是一種基于日歷的系統(tǒng),可以在特定的時(shí)間段內(nèi)保留資源,防止其他任務(wù)在同一時(shí)間內(nèi)使用該資源。它還必須能在預(yù)約的時(shí)間到達(dá)的時(shí)候?qū)⑷我鈾C(jī)器或資源上正在執(zhí)行的任務(wù)刪除或掛起。
在應(yīng)用程序中啟用網(wǎng)格時(shí)的考慮:調(diào)度器。當(dāng)您為網(wǎng)格環(huán)境啟用應(yīng)用程序的時(shí)候,需要考慮一些與調(diào)度有關(guān)的問題。下面列出其中一些:
數(shù)據(jù)管理。意思是保證當(dāng)所調(diào)度的任務(wù)運(yùn)行時(shí)具備可用的數(shù)據(jù)。如果需要將數(shù)據(jù)移動(dòng)到待執(zhí)行的節(jié)點(diǎn)上,那么我們還需要對(duì)數(shù)據(jù)的移動(dòng)操作也進(jìn)行調(diào)度。
通信。任何相關(guān)任務(wù)的進(jìn)程間通信都要求對(duì)任務(wù)進(jìn)行并行調(diào)度。
調(diào)度器的作用域。在具有多個(gè)調(diào)度器(如具備元調(diào)度器)的環(huán)境中,要協(xié)調(diào)并發(fā)任務(wù),或保證特定的任務(wù)在指定的時(shí)間執(zhí)行,這些工作的復(fù)雜程度很高,當(dāng)不同的調(diào)度器具有不同的作用域時(shí),情況就更加復(fù)雜。
調(diào)度策略。調(diào)度可以有不同的實(shí)現(xiàn)目標(biāo)。
面向應(yīng)用程序——調(diào)度的優(yōu)化目標(biāo)是實(shí)現(xiàn)最佳運(yùn)行時(shí)間。
面向系統(tǒng)——調(diào)度的優(yōu)化目標(biāo)是實(shí)現(xiàn)最大吞吐量。任務(wù)可能不會(huì)立即開始。在執(zhí)行的過程中也可能被終端或搶占。也可以將任務(wù)調(diào)度為通宵執(zhí)行。
網(wǎng)格信息服務(wù)。調(diào)度器和信息服務(wù)之間的交互可能十分復(fù)雜。比如說,如果在任務(wù)實(shí)際運(yùn)行之前通過 MDS 找到了某項(xiàng)資源,然后,我們可以假設(shè)在任務(wù)實(shí)際運(yùn)行之前該資源的狀態(tài)不會(huì)發(fā)生變化;蛘呶覀兛梢越⒁环N預(yù)測(cè)能力更強(qiáng)的機(jī)制,提前預(yù)測(cè)資源狀態(tài)可能發(fā)生的變化,從而提前做出調(diào)度決定。
資源代理。通常情況下,資源代理必須與調(diào)度器接口。
負(fù)載平衡。負(fù)載平衡問題是由于工作負(fù)載在網(wǎng)格系統(tǒng)資源中的分散特性所引起的。盡管 Globus Toolkit 沒有提供負(fù)載平衡的功能,而在某些特定環(huán)境中,負(fù)載平衡服務(wù)卻是必需的特性。當(dāng)作業(yè)被提交到網(wǎng)格任務(wù)管理器中時(shí),工作負(fù)載可以通過推模式(push model)、拉模式(pull model)或組合模式(combined model)進(jìn)行分布。推模式的簡(jiǎn)單實(shí)現(xiàn)是通過循環(huán)的方式將任務(wù)發(fā)送到網(wǎng)格資源上。然而,這個(gè)模型沒有考慮到任務(wù)隊(duì)列的長(zhǎng)度。如果每一個(gè)網(wǎng)格資源上都發(fā)送到相同數(shù)目的任務(wù),那么在速度較慢的機(jī)器上會(huì)形成較長(zhǎng)的任務(wù)隊(duì)列,而一個(gè)長(zhǎng)時(shí)間運(yùn)行的任務(wù)在不受到細(xì)心監(jiān)視的情況下可能阻塞其他的任務(wù),使之根本無(wú)法啟動(dòng)。對(duì)于這個(gè)問題,一種解決方案是使用加權(quán)循環(huán)的方案。
在拉模式中,網(wǎng)格資源從任務(wù)隊(duì)列中獲取任務(wù)。在這樣的模式下,任務(wù)隊(duì)列的同步化與串行化就成為協(xié)調(diào)多個(gè)網(wǎng)格資源的任務(wù)獲取的必要手段。本地及全局任務(wù)隊(duì)列的策略也是可行的。在本地拉模式策略中,每一組網(wǎng)格資源都指派為從一個(gè)本地任務(wù)隊(duì)列獲取任務(wù)。在全局拉模式策略中,所有的網(wǎng)格資源都被指派使用同一個(gè)任務(wù)隊(duì)列。本地拉模式的優(yōu)勢(shì)在于能夠?qū)W(wǎng)格資源進(jìn)行分片。比如說,離數(shù)據(jù)比較接近的,或相互有關(guān)的,或要求使用相似資源的某些任務(wù),都可以用這種方法進(jìn)行控制。
推模式和拉模式的組合模式可以解決前面提到的一些問題。每一個(gè)網(wǎng)格資源可以決定何時(shí)能接收更多的工作,并向網(wǎng)格任務(wù)服務(wù)器發(fā)送工作請(qǐng)求。然后,任務(wù)服務(wù)器就向其發(fā)送新的工作。
在這兩種負(fù)載平衡模式下,都需要考慮故障恢復(fù)的條件。我們需要檢測(cè)出哪些網(wǎng)格資源已經(jīng)無(wú)法繼續(xù)操作了,在推模式中,不能把新的工作發(fā)送給已經(jīng)失效的資源。此外,無(wú)論是在推模式還是在拉模式中,我們必須細(xì)心控制所有已經(jīng)提交的但尚未完成的任務(wù)。失效主機(jī)上的所有未完成任務(wù)都需要進(jìn)行重新分配,或者由同一組中的其他可運(yùn)行主機(jī)接管過來。
在應(yīng)用程序中啟用網(wǎng)格時(shí)的考慮:負(fù)載平衡。當(dāng)您為網(wǎng)格環(huán)境啟用應(yīng)用程序的時(shí)候,還需要考慮與負(fù)載平衡有關(guān)的設(shè)計(jì)問題。應(yīng)用程序設(shè)計(jì)和開發(fā)人員需要理解目前的負(fù)載平衡機(jī)制是什么樣子(手工、推、拉、或是某種混合模式),這會(huì)對(duì)應(yīng)用程序,特別是它的性能和運(yùn)行時(shí)間產(chǎn)生影響。如果應(yīng)用程序中具有大量獨(dú)立的任務(wù),每一個(gè)都可能受到負(fù)載平衡系統(tǒng)的影響或控制,那么這樣的應(yīng)用程序就可以從網(wǎng)格整體性能和吞吐量的提高當(dāng)中獲益,不過這個(gè)應(yīng)用程序也可能需要建立更加復(fù)雜的機(jī)制,以便處理將任務(wù)延遲、或在整個(gè)網(wǎng)格內(nèi)移動(dòng)任務(wù)所帶來的復(fù)雜性問題。
代理。在網(wǎng)格環(huán)境中,代理的職責(zé)非常重要。在很多網(wǎng)格環(huán)境中都可能需要實(shí)現(xiàn)這個(gè)組件,而實(shí)現(xiàn)它的方法可以相對(duì)簡(jiǎn)單,也可能十分復(fù)雜。代理的基本職責(zé)是在服務(wù)請(qǐng)求者和服務(wù)提供者之間提供匹配服務(wù)。在網(wǎng)格環(huán)境中,服務(wù)請(qǐng)求者可能是應(yīng)用程序,也可能是被提交執(zhí)行的任務(wù)。服務(wù)提供者就是網(wǎng)格資源。
Globus 工具箱并沒有提供代理的功能。不過它通過監(jiān)視與發(fā)現(xiàn)服務(wù)(MDS)提供了網(wǎng)格信息服務(wù)。您可以對(duì) MDS 進(jìn)行查詢,從而發(fā)現(xiàn)主機(jī)、計(jì)算機(jī)和網(wǎng)絡(luò)的屬性,如當(dāng)前可用處理器個(gè)數(shù)、所提供的帶寬以及可用的存儲(chǔ)類型等等。
在應(yīng)用程序中啟用網(wǎng)格時(shí)的考慮:代理。當(dāng)您設(shè)計(jì)在網(wǎng)格環(huán)境中運(yùn)行的應(yīng)用程序時(shí),很重要的一點(diǎn)是理解資源是如何被發(fā)現(xiàn)和分配的?赡苄枰獞(yīng)用程序告訴代理它的資源要求是什么,這樣代理就可以保證給這個(gè)應(yīng)用程序分配適當(dāng)?shù)馁Y源。
進(jìn)程間通信(IPC)網(wǎng)格系統(tǒng)中可能包含幫助任務(wù)之間相互通信的軟件。比如說,應(yīng)用程序可能會(huì)將自身劃分為大量的子任務(wù)。這些子任務(wù)當(dāng)中的每一個(gè)都是網(wǎng)格中的一個(gè)獨(dú)立的任務(wù)。不過,應(yīng)用程序的算法可能要求子任務(wù)之間相互通信,傳遞一些信息。這些子任務(wù)要能夠定位其他特定的子任務(wù),與之建立通信連接,并發(fā)送適當(dāng)?shù)臄?shù)據(jù)。消息傳遞接口(Message Passing Interface,MPI)是一項(xiàng)開放標(biāo)準(zhǔn),它及其若干變種經(jīng)常作為網(wǎng)格系統(tǒng)的一部分來解決諸如此類的問題。
在應(yīng)用程序中啟用網(wǎng)格時(shí)的考慮:IPC。在任務(wù)之間進(jìn)行進(jìn)程間通信的需求總是會(huì)增加應(yīng)用程序的復(fù)雜程度,因此只要有可能,您就應(yīng)該將這種通信減到最少。然而,在大規(guī)模的復(fù)雜應(yīng)用程序中,進(jìn)程間通信通常是不可避免的。在這種情況下,您應(yīng)該充分理解可用的 IPC 機(jī)制,并將失敗或通信速度變慢帶來的影響降到最低,這樣有助于保證整個(gè)應(yīng)用程序的成功。
非功能性需求
下面我們將討論一些與基礎(chǔ)設(shè)施有關(guān)的其他問題。這些問題被稱為非功能性需求,是因?yàn)樗鼈兣c網(wǎng)格中某項(xiàng)特定的功能單元沒有關(guān)系,如任務(wù)管理、代理等。
性能
當(dāng)您考慮在網(wǎng)格環(huán)境中啟用應(yīng)用程序時(shí),網(wǎng)格的性能以及應(yīng)用程序?qū)π阅艿囊蟊仨毐豢紤]在內(nèi)。服務(wù)請(qǐng)求者對(duì)服務(wù)的質(zhì)量比較感興趣,如可接受的運(yùn)行時(shí)間等。當(dāng)然了,如果您要構(gòu)建一個(gè)網(wǎng)格及一個(gè)或多個(gè)應(yīng)用程序,用來在網(wǎng)格中提供服務(wù),那么服務(wù)提供者也希望能最大程度地利用網(wǎng)格中的功能和吞吐量。
可靠性
可靠性是計(jì)算領(lǐng)域內(nèi)永恒的話題,網(wǎng)格環(huán)境也不例外。實(shí)現(xiàn)這一難題最好的方法是預(yù)見所有可能出現(xiàn)的失敗情況,并提供解決這些情況的手段。最可靠的方法能夠“容納異常情況的出現(xiàn)”(surprise tolerant)。網(wǎng)格計(jì)算的基礎(chǔ)設(shè)施必須處理主機(jī)中斷和網(wǎng)絡(luò)中斷等情況。下面列出一些需要考慮的方法:
使用檢查點(diǎn)-重啟機(jī)制。
用持久性存儲(chǔ)保存中間結(jié)果。
用心跳監(jiān)視機(jī)制跟蹤系統(tǒng)狀態(tài)。
用健壯的系統(tǒng)管理解決方案最大程度地提高網(wǎng)格及其組件的可用性。
拓?fù)鋯栴}
網(wǎng)格計(jì)算的分布式本質(zhì)使地理上和組織機(jī)構(gòu)上的大跨度變得不可避免。隨著內(nèi)部網(wǎng)格的拓?fù)鋽U(kuò)展為外部網(wǎng)格拓?fù)洌瑥?fù)雜程度也逐漸提高。比如說,非功能性操作需求,安全性、目錄服務(wù)、可靠性、性能等都變得更加復(fù)雜。讓我們來研究一下拓?fù)涞膯栴}。
網(wǎng)絡(luò)拓?fù)。網(wǎng)格架構(gòu)內(nèi)的網(wǎng)絡(luò)拓?fù)淇赡茉诤芏嗖煌矫嫔铣尸F(xiàn)出來。網(wǎng)絡(luò)組件可以表示 LAN 或校園網(wǎng)的連通性,甚至還能表示網(wǎng)格網(wǎng)絡(luò)之間 WAN 的通信情況。網(wǎng)絡(luò)的職責(zé)是為所有的網(wǎng)格系統(tǒng)提供充足的帶寬。像基礎(chǔ)設(shè)施中其他的組件一樣,我們可以通過定制網(wǎng)絡(luò)來提供更高級(jí)別的可用性、性能以及安全性。
出于安全性以及其他一些架構(gòu)性的限制,網(wǎng)格系統(tǒng)從很大程度上來說是網(wǎng)絡(luò)密集型的。尤其是數(shù)據(jù)網(wǎng)格,它可能在整個(gè)企業(yè)的網(wǎng)絡(luò)內(nèi)散布著一些存儲(chǔ)資源,因此在基礎(chǔ)設(shè)施的設(shè)計(jì)中,為了保證足夠的性能,關(guān)鍵因素就在于處理數(shù)量巨大的網(wǎng)絡(luò)負(fù)載。
啟用應(yīng)用程序時(shí)應(yīng)該考慮的問題包括如何使網(wǎng)絡(luò)通信量最小,如何使網(wǎng)絡(luò)延遲最短。假設(shè)應(yīng)用程序的設(shè)計(jì)已經(jīng)能夠保證最小的網(wǎng)絡(luò)通信量,那么就有幾種方法可以使網(wǎng)絡(luò)延遲最短。比如說,千兆以太局域網(wǎng)可以用來支持高速群集,或?qū)崿F(xiàn)遠(yuǎn)程網(wǎng)絡(luò)之間的高速 Internet 骨干網(wǎng)。
數(shù)據(jù)拓?fù)。我們最希望把任?wù)指派到距離它所使用的數(shù)據(jù)最近的機(jī)器上執(zhí)行。這樣可以降低網(wǎng)絡(luò)的通信量,還可能降低可測(cè)量性方面的限制。
數(shù)據(jù)需要存儲(chǔ)空間。在一個(gè)網(wǎng)格的設(shè)計(jì)中,存儲(chǔ)的可能性問題是沒有止境的。存儲(chǔ)要求一定的安全性、要可以進(jìn)行備份、要可管理,還/或要進(jìn)行復(fù)制。在網(wǎng)格的設(shè)計(jì)中,您需要確定您的數(shù)據(jù)對(duì)于需要它的資源來說一直是可用的。除了可用性之外,您還需要保證數(shù)據(jù)得到適當(dāng)?shù)谋Wo(hù),因?yàn)槟荒茏屛唇?jīng)授權(quán)的人訪問到敏感的數(shù)據(jù)。最后,您需要最佳的數(shù)據(jù)訪問性能。顯然,帶寬和訪問數(shù)據(jù)的距離兩者是相互有關(guān)的,但是您不會(huì)希望讓 I/O 問題阻礙網(wǎng)格應(yīng)用程序的運(yùn)行速度。對(duì)于那些磁盤密集型的應(yīng)用程序,或是數(shù)據(jù)網(wǎng)格而言,您可以將工作重點(diǎn)更多地放在存儲(chǔ)資源上,比如您可以使用那些能夠提供更高容量、冗余程度或容錯(cuò)機(jī)制的存儲(chǔ)。
混合平臺(tái)環(huán)境
網(wǎng)格環(huán)境是一組異質(zhì)的主機(jī),它們具有不同的操作系統(tǒng)和軟件棧。為了執(zhí)行應(yīng)用程序,網(wǎng)格基礎(chǔ)架構(gòu)需要知道應(yīng)用程序能夠找到所匹配的網(wǎng)格主機(jī)環(huán)境的先決條件。您必須考慮多種不同的因素,然后才能使應(yīng)用程序在類型與數(shù)量都盡可能多的環(huán)境中執(zhí)行,這一點(diǎn)十分重要。
運(yùn)行時(shí)需要考慮的問題。應(yīng)用程序的運(yùn)行時(shí)需求及網(wǎng)格主機(jī)的運(yùn)行時(shí)環(huán)境必須相匹配。例如,下面列出 Java 應(yīng)用程序在這方面的一些要求。用其他編程語(yǔ)言開發(fā)的應(yīng)用程序也可能存在類似的要求。
Java 虛擬機(jī)(JVM)。用 Java 編程語(yǔ)言編寫的應(yīng)用程序要求具備 Java 虛擬機(jī)(JVM)。Java 應(yīng)用程序可能對(duì) JVM 的版本變化很敏感。為了解決這種敏感性,應(yīng)用程序需要對(duì) JVM 版本號(hào)進(jìn)行識(shí)別,這是匹配的先決條件。這項(xiàng)先決條件的內(nèi)容可能是要求某種 JVM 版本號(hào),或是某個(gè)最小 JVM 版本號(hào)。Java 應(yīng)用程序也可能對(duì) Java 堆的大小敏感。Java 應(yīng)用程序需要把最小堆容量作為先決條件。Java 包的類型,如 J2SE、或 J2EE 等,也可能是先決條件的一部分。
應(yīng)用程序的跨平臺(tái)可用性(可移植性)。應(yīng)用程序的可執(zhí)行性是與特定的平臺(tái)有關(guān)的。比如說,用 C 或 C++ 語(yǔ)言編寫的應(yīng)用程序需要在目標(biāo)平臺(tái)上進(jìn)行重新編譯,然后才能運(yùn)行。您可以為每一種平臺(tái)重新編譯一次應(yīng)用程序,得到的可執(zhí)行程序就標(biāo)記為目標(biāo)平臺(tái)上的。這種做法能夠增加應(yīng)用程序能夠運(yùn)行的網(wǎng)格主機(jī)數(shù)目。它的局限性在于將應(yīng)用程序移植到其他平臺(tái)上時(shí)所花費(fèi)的成本。
了解 OS 環(huán)境。網(wǎng)格是一組異質(zhì)計(jì)算資源。如果應(yīng)用程序依賴于某種特定的操作系統(tǒng)。那么該應(yīng)用程序就需要驗(yàn)證網(wǎng)格中是否具有正確的環(huán)境,并處理環(huán)境不同所帶來的問題。
輸出文件格式。當(dāng)一臺(tái)網(wǎng)格主機(jī)上運(yùn)行的應(yīng)用程序的輸出信息被另一臺(tái)網(wǎng)格主機(jī)上運(yùn)行的應(yīng)用程序所訪問的時(shí)候,了解輸出文件的格式就顯得十分必要了。這兩臺(tái)網(wǎng)格主機(jī)可能具有不同的平臺(tái)環(huán)境。您可以考慮用 XML 作為數(shù)據(jù)交換的格式。XML 現(xiàn)在已經(jīng)十分流行,它不僅僅是一種用于數(shù)據(jù)交換的標(biāo)記語(yǔ)言,還是一種用于存儲(chǔ)半結(jié)構(gòu)化的數(shù)據(jù)格式。
當(dāng)您要在網(wǎng)格環(huán)境中啟用某個(gè)應(yīng)用程序時(shí),必須充分理解網(wǎng)格環(huán)境中的功能性組件和非功能性因素,如性能要求或操作系統(tǒng)要求等。