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