正確使用Windows Azure 中的VM Role

來源:互聯網
上載者:User
正確使用Windows Azure 中的VM Role作者: 微軟,  出處:部落格, 責任編輯: valen, 

2011-01-10 10:11  在2010 PDC大會上,我們介紹了Windows Azure中一個新增的Computational Role- VM Role。這一特性極大的提高了我們對於應用的掌控性,但是可能會和我們Windows Hyper-V中的全基礎設施方案有所混淆。它們都有專屬的架構模式。

  在2010 PDC大會上,我們介紹了Windows Azure中一個新增的Computational Role- VM Role。這一特性極大的提高了我們對於應用的掌控性,但是可能會和我們Windows Hyper-V中的全基礎設施方案有所混淆。它們都有專屬的架構模式。

  虛擬化

  虛擬化是一個接管物理電腦的所有硬體並以軟體呈現硬體功能的過程。這意味著單台電腦可以"託管"或者運行多個"虛擬"電腦。這些虛擬電腦可以位於任何地方-包括運行在供應商處。因為在別處管理和維護這些硬體,所以一些公司將其稱為雲端運算。

  基礎設施即服務

  對上文更具體的定義應該稱為基礎設施即服務 (Iaas) ,因為它移除了在自己公司中管理維護硬體的需求。作業系統,驅動,或者運行應用所需的所有軟體都仍在你的掌控中,你只需購買授權,升級,以及拓展。微軟在這方面的方案稱為Hyper-V,它運行在Windows作業系統之上。結合硬體託管供應商以及 System Center 軟體來建立和部署虛擬機器(可以稱其為一個提供服務的過程),你對於這些機器仍然擁有完全的控制權,如果願意,甚至包括運行多作業系統。在自己公司內託管機器,並提供服務,我們稱其為私人雲端。而在別處託管這些機器,則稱之為公用雲端。

  有狀態和無狀態編程

  該模式並不是建立新的可拓展的計算方式。它只是簡單的移除了硬體的需求。理由便是當你將雲端運算限定於虛擬機器時,你便限制了單個系統所能提供的計算資源。這是因為在此環境下開發的許多軟體都會維護 "狀態" - 我會對此進一步的解釋。

  "有狀態編程" 意味著計算環境的所有部分在計算周期內始終相互保持串連。 系統會期望記憶體,CPU,儲存和網路在整個過程中都保持始終一致。您可以想象我們日常打電話-你希望對方接起電話、聽你說話,之後他開始回話,這些都發生在同個時間單元內。

  在 "無狀態" 計算模式內,系統可以允許代碼的不同部分的相互獨立的運行。你可以將其想象為電子郵件,你寫了了一封郵件 (當然,你在寫郵件時是有狀態的。) ,之後你可能走開去喝了一杯咖啡。幾分鐘之後,你回來點擊了"發送"按鈕, (網路是有狀態的) ,之後你便去開會了。伺服器收到郵件,將其儲存在郵件資料庫內。(郵件伺服器有狀態) ,之後繼續接受其他的郵件。 最後,另一使用者登陸郵件用戶端,讀取郵件 (使用者是有狀態的) ,回複郵件等等。這些時間可能相隔幾毫秒到幾天,但是系統仍然可以繼續運行。整個過程都沒有維護狀態,每一個組件也是。這便是Windows Azure代碼背後的概念。

  無狀態編程模式使得驚人的拓展能力稱為可能。因為訊息(參考上述的郵件例子),可以被多個程式獨立開來,且並行運行。 (郵件發送給數百使用者),唯一需要考慮的便是工作重新組織的順序。基於相同的理由,如果系統像Windows Azure那樣運行這些程式,你便會擁有內建的冗餘和恢複功能。這些都是放置於設計之內的。

  基礎設施設計和平台設計的區別

  當你只是簡單以私人或者公有的方式虛擬化物理伺服器,你並不能讓代碼擁有拓展或者恢複的能力。必須通過增加更多的代碼以及更多的虛擬機器來處理,這會在運行或維護有狀態系統內引入輕微的延遲。增加更多機器會引入更多的延遲,所以並不能無限的拓展。這便是IaaS最主要的限制。同樣部署這些虛擬機器並不容易,更為重要的是移除它們更加繁瑣。IaaS的敏捷性就會受到限制。

Windows Azure 是一個平台 - 這意味著你可以通過代碼來進行控制操作。代碼會以多個拷貝運行在多個節點上,因為神器的無狀態編程模式,它們都會運行。你不必關心底下到底啟動並執行是什麼。它可能是Windows (實際上是某種Windows Server),Linux,或者其他任何系統- 但是這些都不是你需要管理,監控維護或者購買授權的。你不會希望部署一個作業系統,而是部署一個應用。你希望代碼能夠正常運行,而不關心是如何啟動並執行。

  PaaS的另一個優勢你可以請求成千上萬的計算節點。你也可以隨時的停止使用這些節點,且你應用中無需編寫這些控制碼。

  Windows Azure Roles 以及它們的用途

  如果希望應用有一個使用者介面,那麼想項目中添加一個 Web Role ,如果代碼無需包括使用者介面則添加一個Worker Role。它們僅僅是具有特定行為的容器。

  我們回來討論VM Role,使用者可能因為其名稱而誤以為它是一個虛擬機器,例如運行著Linux系統,可以部署至Windows Azure。很遺憾,事實並非如此。如果你確實需要此類部署,考慮Hyper-V 和 System Center來建立私人或公有 IaaS 。VM Role 允許使用者對其代碼所啟動並執行系統擁有相當高的控制權。

  如果你聽說過Windows Azure 以及 平台編程,你一定堅信它是一個絕佳的編程範式。但是在公司中,你已經是以其他方式編寫了大量代碼。如果為了利用Windows Azure的優勢,而重寫代碼會需要很長的時間周期。又或者你的代碼依賴於一個特定版本的Apache Web 服務器。這些情況下,你應該考慮將這些軟體改寫為 "無狀態"的,那麼你只需在代碼運行之處擁有更多的控制便可以。那麼這些情況下, VM Role 便能發揮其作用了。

  回顧

  僅僅虛擬伺服器會有拓展,可用性和恢複能力的限制。微軟在這方面的方案是Hyper-V 和 System Center,並不是 VM Role。 VM Role 還只是用於運行無狀態代碼,除了它允許您對環境擁有更多的控制權之外,它們和Web Role和 Worker Role是一模一樣的。

相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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