• 沒有找到結果。

現有雲端系統

第二章、 背景

2.3 現有雲端系統

雲端運算系統,最早是由昇陽電腦於 1983 年所提出雲端系統的概念,之後到 2006 年由亞馬遜提出第一個雲端服務,而在同年才由 Google 首次提出「雲端運算」的概念。

雲端運算系統英文稱做 Could Computing System,它是利用大量的實體機器組成叢集電 腦,叢集中各實體機器之間利用網路來溝通、傳輸資料。另外也是透過網路來提供一般 合率,將一個大量的工作指定一個 Map(映射)函數與 Reduce(化簡)函數。Map 函 數主要目的是將許多小的工作分別帄行執行,通常會散布到不同的實體機器上來加速運 段,然後在 Reduce 函數時會收集各個小工作的運算結果再進行處理,之後得到整個工 作運算的結果。

以下小節將介紹幾個著名的雲端運算系統。

2.3.1 GridGain

GridGain[4]是 2005 年開始的公開原始碼專案。GridGain 是以 Java 開發的雲端帄台,

並僅支援使用 Java 的程式開發雲端運算系統。我們使用的版本是 2.1.1 版。

GridGain 中各機器主要利用點對點(Peer-to-peer)方式形成叢集電腦,每個 Grid 節點

(Node)都稱為 Grid instance,主要利用 IP Multicast 的方式來找到其他 Grid instance,當 有一台電腦啟動 GridGain 後,GridGain 會自動去做 IP Multicast 找到其他有開啟 GridGain 之電腦,並自動連線形成叢集,不需要使用者自己設定。我們所使用的這個 GridGain 版本沒有特定的檔案系統,除了可以與現有一些分散式檔案系統合併使用外,主要專注 於工作的分散運算。

以下將說明如何利用 GridGain 開發雲端程式。開發的主要方式是為每個工作實作工 作內容以及兩個特殊的方法:Split(Map)與 Reduce。

 Split(Map) 333331 整除的數則 333331 為質數。所以若是這個數字相當大則非常耗費運算的時間,

我們利用 GridGain 將工作帄行化,散布到不同的實體機器幫忙運算,減少運算時間。如 果我們有四個可以運算的 Grid Instance,則在 Split 方法內就必須要實作如何將大工作切 分成四個小工作。這邊的做法是讓不同的 Grid Instance 去負責運算不同的數字區間。讓 第一個 Grid Instance 負責檢查 2-83332 之間是否有數字能將 333331 給整除,第二個 Grid Instance 則是負責 83333-166664 區間的數字,第三個則是 166665-249996 區間,最後第 四個則是 249997-333330 區間,這樣就分別檢查完了所有 2-333330 之間的數字。各工作

的內容就是各 Grid Instance 將自己負責區段的數字去除 333331 看是否整除,若是則回 傳 False,代表不為質數。若都沒有數字可將 333331 整除則回傳 True。而在 Reduce 方 法就是去收集各區段的運算結果回傳。若是所有區段的結果都是 True 則代表 333331 是 一個值數。但若運算過程中有其中一台機器回傳 False 則代表 33331 已經被整除了,也 就不是值數,此時還會另外通知其他還沒運算完的 Grid Instance 不需要在運算下去了。

2.3.2 Windows Azure

在 2008 年的微軟專業開發人員大會所首次發表,Windows Azure[11]是由微軟所開 發的雲端系統。可以分為公有雲或私有雲。在公有雲中,Windows Azure 所提供的雲端 帄台服務是將所有 Windows Azure 開發的應用程式運行在微軟機房所配置的虛擬機器裡 面,若是該虛擬機器配置到的實體機器發生問題,則 Windows Azure 會自動將該虛擬機 器轉移到其他台實體機器上面來運行,藉以省去使用者對於機器管理的成本,專注於應 用程式的開發。

Windows Azure 主要提供兩個主要的雲端服務資源,一個是計算的資源,一個是儲 存的資源,在運算資源中又分為 Web role instance 與 Worker role instance 兩種程式角色,

其中的 Web role instance 主要是執行網頁應用程式(如:ASP.net, PHP),使用者開發好網頁 應用程式後將之上傳到 Windows Azure 上,Windows Azure 會給予一個網址,可以由此 網址透過瀏覽器連線到該網頁應用程式。使用者也可以選擇開啟多個 Web role instance 來運行相同的網頁應用程式,並且使用相同的網址來連,來達到分流的效果。而 Worker role instance 則是執行一般的應用程式,可用 C#或其他語言撰寫,與一般應用程式開發 並無太大差異,僅是將程式運行在 Windows Azure 上面。然而 Windows Azure 也提供 Web role instance 與 Worker role instance 之間的溝通,可同時使用兩者開發大型專案。只 是本篇論文的系統實作僅使用到 Worker role instance。

另外一個 Windows Azure 提供的服務資源就是儲存的資源,由於前面提到提供運算 資源的虛擬機器不提供資料儲存的能力,該虛擬機器的儲存空間會在程式結束之後移除。

所以為了永久性的保留資料。Windows Azure 提供了資料儲存的資源,分別為 Blobs、資 料表、以及佇列,首先 Blobs 就是提供一般二進位表示的檔案例如圖檔,影音檔都可以 用這種儲存方式保存。第二個是資料表,它提供簡易的 Key-Value 的資料存取方詴,彈 是不像真正資料庫提供這麼多功能。第三個則是佇列,它並非提供真正的資料儲存能力,

而是提供 Web role instance 與 Worker role instance 之間的溝通方式。但由於本系統在實 作上沒有使用到 Windows Azure 提供的資料儲存資源,所以不再詳細介紹。

最後介紹的是 SQL Azure,他是以 Microsoft SQL server 為基礎設計的雲端關聯式資 料庫,它的特色是將資料庫設置及資料儲存都放在雲端,也就是跟前面 Windows Azure 相同的機房之中,所以使用者不需要自行安裝資料庫,只需設定好連線即可使用。而且 SQL Azure 會自動提供異地備援資料的能力,省去許多資料庫使用的管理成本。

相關文件