1. 程式人生 > >Windows Azure Platform (九) Windows Azure Storage Service儲存服務

Windows Azure Platform (九) Windows Azure Storage Service儲存服務

Windows Azure本質上來說就是將你本地的應用程式打包,然後上傳到Windows Azure VM進行託管執行。

注意:任何儲存在Windows Azure VM碟符的內容都是臨時的、非持久化的。比如,我通過Windows Azure
VM在D盤新建了一個txt檔案,這個檔案不會一直被儲存。因為某些特殊情況,VM節點會宕機(系統升級、物理損壞)等,後臺Fabric Controller會把該VM下的Web Role和Worker Role的內容遷移到同一資料中心的另外一臺機器上,但是不會自動遷移D盤新建的txt檔案!如果需要儲存持久化的內容,一定要使用Windows Azure Storage,切記切記!

Windows Azure提供了三種不同型別的儲存服務(這裡的儲存是非關係型資料,比如圖片、文件等檔案),用來提供給Windows Azure上執行的應用程式儲存資料使用。依據不同的儲存格式會有不同的限制,因為這些儲存服務都是以分散式巨量儲存(Distributed Mass Storage)為核心概念所設計出來的,為了要達成快速在分散式儲存空間中儲存與管理資料(還包含高可用度的贅餘存儲管理),微軟有在資料的儲存上做一些限制。

微軟還提供了REST API來方便使用者操作Storage Service。

1.BLOB

BLOB(大型二進位制物件)資料是用來儲存檔案、圖片、文件等二進位制格式的檔案。

BLOB分為2種:

  -Block BLOB(區塊型BLOB儲存),這類的儲存以4M為一個區塊單位,單一檔案最大可以儲存200GB,且區塊不會連續儲存,可能會在不同的儲存伺服器分塊存放。為了適應檔案的上傳和下載而專門進行了優化。當應用程式要求時,會一招檔案的KEY以及區塊儲存區提供資料。

  -Page BLOB,是優化的隨機訪問。它會在儲存區中劃分一個連續的區域供應用程式存放資料,它本身可以視為一個大型的VHD(虛擬機器軟盤)。如果我們拿我們的應用程式遷移到Windows Azure平臺上,對於檔案的讀寫操作可能需要進行一些修改,但是通過Page Blob就可以方便我們遷移:微軟特別在Page BLOB上提供了一組將Page BLOB虛擬成軟盤的功能,稱為Windows Azure Drive

(研發代號為XDrive),它能夠支援NTFS API,也就是說應用程式可以利用現有的檔案管理API(包含System.IO的型別)來訪問Windows Azure Drive中的資料夾與檔案資料,並且這些資料會儲存在Windows Azure資料中心內。

BLOB服務由BLOB本身以及其收納容器(Container)構成,容器可視為一般本機上的資料夾。

你可以通過REST API來訪問,如下:

http://accountName.blob.core.windows.net/<containerName>/<blobName>

accountName表示哪個Azure帳號(Account)下的資源。

blob.core.windows.net表示我訪問的是blob的資源。

containerName表示容器的名字,可以認為是訪問某一資料夾下的資源

blobName表示我要訪問的資源的名字。

注意:ContainerName的命名規則

1.必須以英文或數字開頭,且名稱內只能有英文、數字及dash(-)

2.不能以dash(-)開頭或結尾,dash(-)不能連續出現

3.所有英文的字元都必須是小寫

4.長度為3-63之間

Blob的命名規則:

1.除了URL的保留字元以外,其他的字元組合都可以使用

2.長度為1-1024個字元

3.儘量避免以dot(.)或者是forward slash(/)結尾。否則會造成Blob Service誤判。

 2.Table

這裡的Azure Table是非關係型資料庫的表,不能與SQL Server中的Table混淆。

Azure Table中表最大容量是100T,每個Azure Table 都必須有Partition Key和Row Key。

Partition Key的值可以設定記錄的物理位置。在Azure Table中的2條資料,如果Partition Key值相同,則表示這2條資料儲存的物理位置是相同的;如果Partition Kay不同,則表示這2條資料可能儲存在同一臺物理介質上,或者不同的2臺物理介質之上。

Row Key表示一行資料的唯一值。使用PartitionKey和RowKey可以定位一個唯一的實體。

Azure Table也提供REST API來訪問,如下:

http://accountName.table.core.windows.net/<TableName>

3.Queue

Queue(佇列)是一種先到先服務(First-Come, First-Serve),或稱為FIFO(先入先出)的儲存服務,它可以允許應用程式將訊息儲存到佇列中排隊,然後由負責處理的應用程式(通常是Worker)由佇列提取訊息並處理以後,將訊息由佇列中移除。訊息可以是字串或是最長8KB的二進位制資料,佇列經常會作為跨執行個體通訊以及工作切割通知的訊息傳遞之用。

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