正确使用Windows Azure 中的VM Role
公告 ???:本博客為微軟云計算中文博客 ?的鏡像博客。 ? 部分文章因為博客兼容性問題 ?,會影響閱讀體驗 ?。如遇此情況,請訪問 ?原博客 ?? 。
在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是一模一樣的。
?
本文翻譯自:http://sqlblog.com/blogs/buck_woody/archive/2010/12/28/the-proper-use-of-the-vm-role-in-windows-azure.aspx
轉載于:https://www.cnblogs.com/new0801/archive/2011/01/06/6176681.html
總結
以上是生活随笔為你收集整理的正确使用Windows Azure 中的VM Role的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企鹅帝国的疯狂反扑!
- 下一篇: jquery easyUI分页dataG