Windows Azure雲端運算學習筆記2–Windows Azure深入觀察

來源:互聯網
上載者:User

上節 Windows Azure雲端運算學習筆記1--Windows Azure簡介中是對Azure的一個總體概覽,這篇將第Windows Azure雲端運算做深入探討。

 

建立Windows Azure應用

-----------------------------------------------------------------------

對於開發人員來說,建立Windows Azure應用和開發一個傳統的windows應用很相似,而且Visual Studio提供了做雲應用程式開發的模版。為了能在開發機器上模型雲環境,微軟提供了development fabric,可以在本機電腦上類比包括web role, worker role,VM role和三種Azure雲端儲存方式等。開發人員可以在本地建立好Azure應用然後在運行在本地的development fabric上測試,就像在真實的雲環境中一樣。

在本地測試好了之後就發行就緒到windows Azure上去了。發布一般會有兩個過程,先是發布到綵排區(Staging Area),沒問題再發布到生產環境(production),如果發現問題,也可以從生產環境在切換到綵排環境上去。

綵排狀態的應用有類似<GUID>.cloudapp.net的網域名稱,使用者可以用來做自我裝載;發布到生產環境後就可以用自己的網域名稱yourapp.cloudapp.net,或者全部是自己的網域名稱比如 www.newmgdn.com

 

計算服務(Compute)

-----------------------------------------------------------------------

以前Web Role和Worker Role都只能運行在使用者模式下,有些功能就有限制,現在這兩個角色都可以運行在admin模式下,你可以幹你想乾的事,比如裝個COM組件啥的。

不過這些都是從一個乾淨的鏡像開始的,所以每次啟動一個執行個體你的COM組件啥的都得重裝一遍,少的話還好說,如果很多的話,效率就成問題了。對於這個問題的解決辦法就是VM role。你可以弄好一個虛擬機器鏡像VHD,以後新開執行個體直接從這個配置好的VHD開始就快多了。而且這種方式(VM Role)還支援在安裝過程中可以有使用者互動。

還有就是現在的Azure可以讓使用者指定他的資料放在哪個資料中心上,目前有美國、歐洲和亞洲三個資料中心。

 

儲存服務(Storage)

-----------------------------------------------------------------------

使用Azure 儲存服務,需要建立一個儲存帳號。

Blob--二進位大對象一般就能滿足大多數應用程式的需要,視頻啊、音頻,或者其他什麼資料。使用Blob,開發人員需要建立一個容器,每個容器可以保護一個或者多個blob。

要指定特定的blog可以用下面方式的URI:

http://<StorageAccount>.blob.core.windows.net/<Container>/<BlobName>

有兩種形式的blob:

       塊Blob:每個最大200G。為提高傳輸效率,塊blob會分成塊,如果傳輸失敗只需再傳一遍失敗的塊就可以了,而不用重新傳輸整個blob

       頁blob:最大到1T(1024G),整個頁blob被分成512位元組大小的頁,應用程式可以隨機的訪問blob中的任意頁。

 

blob相對好理解,表(Table)就複雜些。是Table的結構。

 

每個table包含一系列的entity,entity可以包含屬性(或者不包含),屬性由名字、類型和值組成。Azure支援的類型有二進位Binary,Bool,Datetime,Double,GUID,int,int64和string。根據值的情況,同一個屬性可以在不同時間具有不能的類型,一個實體entity裡也可以包含任意類型的entity。

不管包含什麼屬性,實體entity都作為一個讀寫單位,最大可以到1M。

可以看出,Azure儲存的Table和RDBMS的Table是不一樣的,這種結構比RDBMS有更大的延展性,且更簡單。

和Azure中的其他對象一樣,Table也可以以REST的方式來存取,.net應用可以用WCF Data Services來存取。其他類型的應用,包括.net也可以用REST的方式倆直接存取,比如用類似下面的URI:

http://<StorageAccount>.table.core.windows.net/<TableName>?$filter=<Query>

如果<query>返回結果多於一個,程式員可以得到一個後續的token用來繼續做重複查詢直到找到唯一的為止。遞迴的查就是了。

 

隊列(Queue)

隊列Queue主要是設計用來做資料交換用的。他也可以以REST的方式來存取,看下面形式的URI:

http://<StorageAccount>.queue.core.windows.net/<QueueName>

不過Azure中的隊列有點意思,和我們普通理解的先進先出隊列略有區別,看下面的工作流程:

 

一般來講,普通的隊列包含兩個操作就夠了,一個queue一個dequeue,一進一出。但Azure中的queue還有一個刪除訊息的操作,這是為啥呢?

上面的流程中,首先web role接到使用者的請求,然後把計算密集型的任務插入到隊列中讓worker role來處理。worker role先從隊列中取出一個來,並把這個訊息在一段時間內標記為hidden,然後就開始處理他。處理完成的話皆大歡喜,到隊列中把那個訊息刪除然後去下一個繼續處理。不過萬一要是worker role在處理過程中出錯了,失敗了,那咋辦?如果用普通的隊列,這個訊息估計就會被漏掉了。Azure 隊列中的機制是,worker role在Dequeue訊息時並不刪除訊息,只是在一定時間內(5分鐘)把他標記為hidden,然後去處理,如果處理失敗,5分鐘過去後,其他的worker role執行個體又可以看到這個訊息,從而使這個訊息能被別的worker role執行個體來處理。這樣的機制保證了每個訊息都能被正確的處理一次,從而保證系統的可靠性。

 

fabric controler

----------------------------------------------------------------------

對於雲應用來說,技術服務和儲存服務當然最重要,然而沒有fabric controler的統一調度管理,他們也幹不了啥活。fabric controler擁有資料中心的所有資源,也負責把使用者的應用程式指派到實體電腦上去執行。

 

比如一個使用者有5個web role執行個體和4個worker role執行個體,如果把任務指定到特定的執行個體上,當執行個體出錯時,你的應用也就掛了。 fabric controler把這些資源混搭一下組成容錯網域(fault domain),每個容錯網域裡有一下計算執行個體和儲存執行個體,並把雲應用分布到不同的容錯網域上。當某一個執行個體出問題時,並不會導致整個應用出錯。

 

此外還有更新網域(Update Domian)用來關閉系統進行更新操作,並把雲應用遷移到更新版本的系統上。

 

今天結束之前,有些連結:

-----------------------------------------------------------------------

Windows Azure Platform Home Page
http://www.microsoft.com/windowsazure
Introducing the Windows Azure Platform, David Chappell
http://go.microsoft.com/fwlink/?LinkId=158011
Windows Azure Blobs: Programming Blob Storage
http://go.microsoft.com/fwlink/?LinkId=153400
Windows Azure Tables: Programming Table Storage
http://go.microsoft.com/fwlink/?LinkId=153401
Windows Azure Queues: Programming Queue Storage
http://go.microsoft.com/fwlink/?LinkId=153402

 

 

今天到此為止,下節課繼續學習。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.