基於Azure雲端運算平台的格線運算(1)

來源:互聯網
上載者:User

在這個由3部分組成的系列文章中,我們將看一下利用Azure雲端運算平台的格線運算。在第1部分中,我們將看到所涉及的設計模式以及一些有益的觀點。在第2和第3部分,我們將看到一個用來展示專門為Azure而開發的格線運算架構的代碼例子。

並不是所有人都清楚,格線運算和雲端運算之間的區別,所以我們先來簡短解釋一下兩者。雖然格線運算和雲端運算不是同一個東西,但是它們之間有很多可協同的地方,並且共同使用它們是非常有意義的。

格線運算

格線運算就是利用工作於並行模式而非單機模式的一大批次計算機來處理計算問題。這種方式有很多優點:

  • 節省時間:對於單機要處理一個月的工作,在有30台專註於這個問題的電腦的情況下,有可能一天就完成了。曆史上最大的格線運算項目,就是SETI@home項目,通過利用數十萬台志願電腦的能力,在10年的時間裡就獲得了2百萬年的合計電腦處理時間。
  • 節省成本:你能使用成本更低的資源來完成工作,而不是購買具有最進階別處理器和記憶體的大量伺服器。就算,你必須購買那麼多的計算資源——卻可以買那些更小、更便宜的機器,它們也更容易用於其它用途。
  • 可靠:格線運算系統必須預先考慮到故障,或個別電腦可用性的改變不會妨礙工作的成功完成。

並不是所有類型的工作都適合於格線運算。只有那些可以被分解為多個小任務的工作才適合,而且處理這些任務的電腦所構成的鬆散耦合網路可以並行運行。為了分發任務、收集結果並管理系統,有必要建立一個智能基礎結構。無需感到驚訝,格線運算的早期採用者都需要去解決一些巨大的計算問題。因此,你會看到格線運算如今用於遺傳學,保險統計計算,天文分析以及電影動畫渲染。不過,現在有所改變:格線運算越來越關注普通的業務問題,且雲端運算帶來的競爭也加速這方面的發展。計算任務並非要無比龐大才能從格線運算方式中獲益,也不一定要計算密集的任務才適合進行格線運算。任何具有反覆執行特點的任務都適於格線運算。不管你是那種需要每月處理4百萬訂單的財富500強企業,還是那種只需批准1千個信用申請的中型企業,格線運算都能為你所用。格線運算早於雲端運算10年出現,所以如今的格線運算自然而然不會使用雲的方式。最通常的方式是:

  • 專用機器:購買大量的電腦,專用於網格處理。
  • 網路周期挪用(Cycle Stealing):當你機構中的其他機器閒置時候(如晚上),把它們暫用於網格處理。一台白天使用的業務工作站,晚上就可變為網格處理電腦。
  • 全球周期挪用:在全世界的互連網範圍內,應用周期挪用概念。SETI@home 項目就是這樣工作的,其利用了超過300000台的活躍電腦。

雲端運算可以成為格線運算的另外一種實現方式,其具有很多迷人的特點,可以根據你的業務模型提供靈活的伸縮,並已經準備好很多傳統方式必須定製開發的支撐基礎結構。

用於格線運算的商務應用程式

為了把格線運算帶入主流,需要出現一些令人信服的商務應用程式。讓我們來看一下3類適合於格線運算方式的商務應用程式,以及獲得的巨大商業價值。第一類例子是資料採礦。資料採礦和其他形式的資料分析,都能識別來自業務資料中有趣的關係和模式。

  • 食品店可以使用資料採礦來研究購買模式,及在對某些商品是否進行打折上作出戰略決定。
  • 錄影出租連鎖店可以使用資料採礦,基於顧客之前的租借記錄來決定向他們推薦哪個新的錄影。
  • 電子商務網站可以使用資料採礦,來即時地研究使用者的導航模式,並調整要展示的商品和廣告顯示。

第二類例子是決策分析,就是為了作出業務決策需要執行一組向前連動的商務規則。在某些情境中,涉及複雜計算的決策需要非常快速地作出。網格的並行性可用來獲得很快的回應時間,在工作量增加的時候也不會出現延誤。

  • 信貸機構可以使用決策引擎來計算信用評級。
  • 金融機構可以使用決策引擎來快速審批貸款。
  • 保險公司可以使用決策引擎來計算申請者的風險,並核定其保單費率。

第三類例子是批處理,在你偶爾需要處理突發的大量工作負載,而內部又沒有這麼多的能力來處理的時候,就可藉助於格線運算。

  • 傳真服務需要產生和遞送電子傳真文檔。在進行傳真的時候,工作負載很巨大,而在其他時候又比較低。使用網格的方式來處理文檔的產生和遞送,可以避免購買那些大部分時間無用的龐大內部計算能力。
  • 營銷活動可能需要自動向大量的地址寄送電子郵件、傳真、信件或語音訊息。網格的並行性讓這樣的發送活動在很短的時間內就同時完成,無論工作量有多少。
  • 電子商務網站,需要為每個訂單啟動一個業務過程工作流程,而在繁忙季節有可能要處理巨量的工作流程執行個體。把網格用於訂單處理工作流程可以避免,用有限的本地資源來處理這些訂單而出現的瓶頸和處理時間延後的情況。

這些例子描述了格線運算走出應用程式類型的限制,變為一種所有業務類型都可考慮使用的常見形式。

雲端運算和微軟的Azure平台

雲端運算就是利用具有智能基礎結構的大規模資料中心來為你提供所需的計算資源。雲端運算橫跨應用程式託管和儲存,並且提供用於通訊、工作流程、安全和同步的服務。雲端運算的優勢包括如下幾點:

  • 按需伸縮:你需要多少容量就可以擁有多少容量,事實上沒有限制。
  • 根據用量收費:現用現付的商業模式就是你只需根據使用量來支付。這也不是一個長期的約定,在你用量層級改變的時候,並不會限制你。
  • 無需前期投入:不用購買硬體,或維護它們,或為作業系統打補丁。基建費用被轉化為運營費用。
  • 更小的IT團隊及更少的IT事故:諸如高可用性、延展性、冗餘儲存和容錯移轉等功能都已經內建於這個平台中。

微軟的雲端運算平台也叫Azure,當前由4個主要服務領域組成:

  • Windows Azure提供了應用程式託管和儲存服務。應用程式託管意味著可以“在雲中”(也即在雲端運算資料中心中)運行類似Web應用程式、Web服務或背景背景工作處理序這樣的軟體。應用程式可被負載平衡,可運行你所需任意數目的執行個體,也可隨時更改執行個體的數目。雲端儲存可提供類似檔案系統的Blob儲存、隊列和資料表。
  • SQL Data Services在雲中提供了完整的關聯式資料庫,具有和SQL Server企業產品一樣的功能。
  • .NET Services提供了企業業務處理所需的功能。服務匯流排(Service Bus)把多個位置或組織用發布-訂閱訊息的方式在互連網之上相互串連在一起。存取控制服務(Access Control Service)為應用程式提供了企業及聯合安全性。工作流程服務(Workflow Service)能在雲中執行工作流程。
  • Live Services提供了一個虛擬桌面,跨電腦和裝置的資料與Web應用程式的同步能力,以及實現社交網路的各種通訊和協作功能。

Azure是一個全新的平台;在本文編寫的時候,它還處於預覽的階段,有望在今年年底投入商用。

把格線運算和Azure雲端運算放到一起

Azure被設計來支援多種應用程式類型,但沒有為格線運算提供特定的特性。然而,Azure提供了格線運算系統所需的很多功能。為了讓Azure成為一個優秀的格線運算平台,只需運用正確的設計模式和架構來提供網格特定的功能。我們現在先來看一下設計模式,在第二部分我們將研究支援這個模式的架構。

對於這個模式,你需要注意的第一件事情是,在Azure雲中和企業端分別存在一些軟體/資料,以及一些基礎功能。它們分別完成什麼事情,以及為什麼要這樣安排?

  • 雲用來完成格線運算本身的工作。雲資源的使用主要面向臨時的工作,可以最小化成本。在你不運行格線運算解決方案的時候,你就不會產生費用。
  • 企業作為資料的固定儲存位置。它是網格運行所需的輸入資料的來源,也是工作結果的最終儲存位置。

在這個模式中的軟體角色是:

  • 網格執行器(Grid Worker):網格執行器是一個雲中的軟體,能執行網格應用程式所需的任務。這個軟體作為Worker Role以多個執行個體運行於雲中。架構使用了交換指令安排方式,以便任何網格執行器都可執行任何被其請求的任務。網格執行器運行在一個迴圈中,從任務隊列中讀取下一個要執行的任務,接著執行任務,並把結果寫入到結果隊列中。當網格執行器沒有隊列任務要啟動並執行時候,就發出一個關閉的請求。
  • 網格管理器(Grid Manager):網格管理器是一個企業端的軟體,管理著格線運算執行的工作運行。網格管理器有3個組件:
    • 載入器(Loader):載入器的工作就是,為網格執行器產生要執行的任務,來啟動網格應用程式工作。載入器運行在企業端,是為了訪問一些基礎資源,比如為每個任務提供所需輸入資料的資料庫。在載入器啟動並執行時候,產生的任務被寫入到雲中的任務隊列(Task Queue)裡。
    • 彙總器(Aggregator):彙總器從結果隊列中讀取結果,把結果儲存到固定位置的基礎功能中。彙總器也能知曉,網格應用程式的執行是否完成。
    • 控制台(Console):控制台是一系列管理功能,用於設定項目、啟動工作運行,並在網格執行的過程中查看其狀態。它也能提供一個類似在機場裡顯示飛行狀態的視圖,來顯示待處理的任務和已完成的任務。

在這個模式中的資料角色是:

  • 任務隊列(Task Queue):這是一個雲端儲存中的隊列,儲存著任務。在企業端的載入器把它產生的任務寫入到這個隊列中。在雲中的網格執行器從這個隊列中讀取任務,並執行它們。
  • 結果隊列(Results Queue):這是一個雲端儲存中的隊列,儲存著結果。網格執行器把每個任務的結果輸出到這個隊列。運行在企業端的彙總器從這個隊列中讀取結果,並在企業端中持久地儲存它們。
  • 跟蹤表(Tracking Table):這是一個企業端資料庫表,跟蹤著任務和它們的狀態。載入器把相關記錄寫入到這個跟蹤表中,而彙總器在收到結果的時候對其進行更新。跟蹤表讓控制台可以顯示網格的狀態,並讓系統知曉網格應用程式何時完成。
  • 企業資料(Enterprise Data):企業提供了資料存放區或服務,為任務提供輸入資料,或接收任務的結果。這要根據各自組織和項目來特別設定;編寫載入器和彙總器的代碼要同這些資料存放區整合在一起。
演練:建立並執行Azure上的格線運算應用程式

讓我們來把上面講到的東西混合到一起,並演練一下使用這個模式和適合的架構,如何從頭至尾地開發並運行格線運算應用程式:

1. 格線運算應用程式需求的確立。就是要確認需要完成的任務、輸入資料和結果目的。

2. 使用架構,開發人員添加自訂內容到他們的項目中:

  • 網格執行器(Azure Worker Role)由一個模板來建立,並為每個任務添加實現代碼。
  • 載入器由一個模板來建立,並添加一些代碼來實現從本地資源讀取輸入資料、產生任務並把它們排到任務隊列中。
  • 彙總器由一個模板來建立,並添加一些代碼來從結果隊列中接收結果,在底層資料庫中儲存它們。

3. 此應用程式的Azure項目通過Azure門戶網站來進行託管和儲存的配置。網格執行器打包並部署到雲宿主中,測試後,升級為產品版本(Production)。

4. 使用網格管理器控制台,網格的工作運行在此定義和啟動。載入器的運行也在此啟動。

5. 載入器讀取本地企業資料,產生任務,並把每個任務寫入到任務隊列。

6. 網格執行器項目在Azure門戶網站中啟動,其會產生網格執行器的多個執行個體。

7. 每個網格執行器都持續地從任務隊列中接收新任務,確定任務類型,執行適當的代碼,並把任務結果發送到結果隊列中。Azure隊列工作的方式在此非常有用:如果執行器出錯,在完成任務的過程中失敗,那麼任務在逾時之後將重新出現在隊列中,並會被其他網格執行器獲得。

8. 彙總器從結果隊列中讀取結果,並把它們寫入到本地企業儲存區庫中。

9. 在網格執行的時候,管理員能夠使用網格管理器控制台幾乎即時地觀察網格執行器執行任務的狀態。

10. 在彙總器獲知所有計劃中的任務已經完成時候,它通過控制台發出一個關於這個狀態的提醒。到此,網格就完成了它所有的工作,它的結果也安全地儲存到企業端。

11. 通過Azure門戶網站可以暫停網格執行器,以避免帶來額外的計算時費用。雲端儲存在所有隊列被完全地讀取後,已經是空的了,因而沒有額外的儲存費用產生。

把Azure用於格線運算的附加值

從技術和經濟兩方面來說,Azure平台用於格線運算再好不過:

  • 具有很好的成本效益:使用雲託管的應用程式避免了購買用於格線運算的電腦的需要。相反,你是為網格執行器的計算時間和所用的佇列儲存體按月支付費用。這樣的設計,一旦在網格應用程式完成了處理後,就不會在計算時間和儲存時間上帶來進一步費用。
  • 延展性和靈活性:不管你希望獲得很多還是很少的容量,都可滿足。你的格線運算應用程式可以做到,只需要一個單獨網格執行器執行個體這樣少的資源。
  • 可靠性:內建於Azure隊列中的可靠性機制確保了所有任務都得以執行,就算網格執行器意外關閉也是如此。如果網格執行器意外關閉,那麼Azure Fabric將會啟動一個替代執行個體。
  • 可獲得協調功能:Worker Role+隊列的機制是簡單的、具有負載平衡的,也是工作很好的。使用它就避免了編寫複雜協調軟體的需要。
  • 簡單:在Azure上進行格線運算的模式,其核心是很簡單的。角色也都是明確定義的,沒有非常複雜的軟體元素,需要遷移部分的數目也可盡量保持最少。

下次,我們將來看看使用Azure的格線運算架構,如何在代碼中實現這個模式。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.