【IT168 專稿】微軟的Windows Azure云計算平臺自從2月份發(fā)布收費版以來,使用的人數(shù)正在膨脹。就在上周達到了1000個收費用戶;而且,Azure正在不斷改進,目的是成為剛起步的云計算市場的有力競爭者。
盡管Google、Amazon和微軟提供的云計算產(chǎn)品大體上比較相似——他們分別提供各自的“計算(例如應用軟件)”和“存儲”塊——但是這些服務的提供方式確實截然不同的。當然,除了這三家,還有一些其他的廠商,但是這三個家喻戶曉的名字是這個市場上具有很大的代表性的,并且,事實證明,這三家廠商在市場采用和影響方面都是最重要的。
云計算入門
云計算領域的一大重頭產(chǎn)品是Amazon的彈性計算云(Elastic Compute Cloud http://aws.amazon.com/ec2/,EC2),EC2可以讓用戶選擇他們虛擬機上的操作系統(tǒng),并對所選的操作系統(tǒng)進行配置??蛻羯踔量梢詣?chuàng)建并上傳自己的鏡像。軟件可以在任何可以在鏡像上運行的環(huán)境中運行。這些鏡像可以使用SSH,遠程桌面或其他更好的機制進行管理和配置。想在虛擬機上安裝軟件么?只需運行安裝程序就可以了。
云計算領域的另一典型代表是Google的App Engine。App Engine軟件運行在沙盒中,僅僅提供有限的底層操系統(tǒng)的訪問。應用程序的編寫語言只能是java(至少是JVM的目標語言)或者是Python2.5。沙盒阻止了一些基本的操作,如寫磁盤或打開網(wǎng)絡socket。
處于EC2和Google App Engine之間的是微軟的Window Azure。在Azure中,沒有對操作系統(tǒng)的直接訪問,也不能直接訪問運行在OS之上的軟件——它就像是Windows的變種,它優(yōu)化了可擴展性,在.NET的運行時環(huán)境下運行類似IIS的Web服務卻沒有Google環(huán)境下那么多限制,盡管.NET是更好的開發(fā)平臺,它支持PHP、Java、有必要的時候還可以采用本地編碼。唯一的限制是軟件必須是無需安裝就可以部署,即它不支持簡單的復制到目錄然后運行。
存儲系統(tǒng)是十分多變的。Amazon有四個存儲系統(tǒng),第一個是使用最廣泛的簡單存儲服務(Simple Storage Service,S3),S3提供了簡單的名字值匹配,這個值可以是一個大小高達5GB的BLOB(Binary Large Object,二進制大對象)。第二個是彈性塊存儲(Elastic Block Store,EBS),EBS提供的是虛擬的塊設備,這些設備可以像硬盤一樣被格式化,并用來存儲有規(guī)律的文件。Amazon的第三個存儲系統(tǒng)是關系數(shù)據(jù)服務(Relational Database Service ,RDS),RDS提供的是MySQL數(shù)據(jù)庫。最后一個是數(shù)據(jù)庫系統(tǒng)是SimpleDB。
SimpleDB是一個非關系型數(shù)據(jù)庫;它采用一種非關系形的表格存儲數(shù)據(jù)。與常規(guī)的關系型數(shù)據(jù)庫相類似,這些表格所存儲的每一個條目(客戶、訂單、地址等等)都有自己的屬性(因此,一個客戶可能會有一個姓名、地址和一個電話號碼)。與典型的數(shù)據(jù)庫不同的是,SimpleDB可以不刷新表格中現(xiàn)有的記錄就可以添加新的屬性。表與表之間沒有關系,也不支持關系型數(shù)據(jù)庫中的連接。如果應用程序要訪問與另一個表相對應的一個表中的數(shù)據(jù),他們將不得不進行手工的查找。
刪減掉這些特征的原因是通過減少關系型數(shù)據(jù)庫的所有限制,運供應商就可以更靈活地實現(xiàn)查詢優(yōu)化和數(shù)據(jù)存儲。盡管限制這些特征,對一些有過關系數(shù)據(jù)庫開發(fā)背景的人來說很艱難,但是對許多應用來說還是足夠豐富了。
Google提供的主要存儲方案是它的datastore【http://code.google.com/intl/zh-CN/appengine/docs/python/datastore/overview.html】,datastore和SimpleDB一樣廣泛。Google還提供另外一種服務,叫做blobstore,類似于S3的服務。這家公司的標準的App Engine服務不支持SQL數(shù)據(jù)庫的特征,但是,Google打算為商業(yè)版的App Engine平臺的客戶提供關系型數(shù)據(jù)庫服務,現(xiàn)在預覽版已經(jīng)上線。
微軟的存儲產(chǎn)品線與Amazon的大體差不多。Azure Storage既包括類似S3的專用二進制存儲,又有類似SimpleDB的類似表單的存儲。它還提供了特殊的VHD磁盤印象的支持,這些磁盤印象可以像驅動一樣掛載,這類似于Elastic Block Store。最后,微軟還有一個叫做SQL Azure的SQL服務器,SQL Azure為云端應用提供了幾乎所有的SQL Server的特性。
除了常規(guī)的存儲選擇之外,Amazon和Microsoft都提供了隊列服務。隊列服務允許信息以一種可靠地、不同時的方式在應用軟件間被交換。應用軟件編輯者將信息導入列隊,然后應用軟件使用者能這空閑時很快的從列隊中讀出這些信息。
由于設計決策不同,不同的平臺所優(yōu)化的應用也不同。EC2使得在云環(huán)境中部署“常規(guī)”軟件變得簡單:將軟件安裝到鏡像中,使用EBS磁盤存儲數(shù)據(jù),甚至可以對應用一無所知。相反,App Engine平臺上的應用,必須是為該平臺專門創(chuàng)建的。
Azure處于兩者之間。現(xiàn)有的Web應用,特別是使用ASP.NET創(chuàng)建的應用,可以很容易地遷移到Azure上。他們可以使用常規(guī)的SQL 服務器(或類似的其他服務器),有必要的話,他們還可以使用本地遺留的代碼,但是這個平臺去掉了許多傳統(tǒng)的管理任務,如操作服務器、管理數(shù)據(jù)庫等。
Azure似乎也吸引了許多微軟的用戶,盡管可擴展性是人們最常說的云計算的優(yōu)勢,但是大約有一半的Azure設備都是單實例的。這意味著,一個應用程序僅僅部署在一個虛擬機上,Azure被用作一種減少常規(guī)應用的運營成本,而不是用來多機器的快速簡單擴展。
這對我來說當然也很有吸引力。雖然我不能算是一個真正的Web app開發(fā)者,但是Azure使得我能夠使用現(xiàn)有的.NET技術,并且不用管系統(tǒng)管理,確實是很有誘惑力。所以,讓我們一起來體會Azure的開發(fā)細節(jié)吧!