[Windows Azure][IT鐵人賽系列] Day 13 - Windows Azure Storage Services

作為應用程式以及其他類型線上服務的核心平台,Windows Azure Platform除了針對雲端運算的基礎建設、營運與管理部份特別設計並支援外,它也必須要具有應用程式以它為基礎開發服務的相關支援,以一個作業系統來說,除了硬體與運算資源的分配與控管外,對軟體最直接最基本的支援,非儲存功能莫屬。如果沒有儲存功能的話,作業系統只能執行運算,而不能利用近端的媒體來儲存資訊,因此作業系統必須要有儲存的能力,才能夠達到開放給應用程式發展的最低限度服務。

作為應用程式以及其他類型線上服務的核心平台,Windows Azure Platform除了針對雲端運算的基礎建設、營運與管理部份特別設計並支援外,它也必須要具有應用程式以它為基礎開發服務的相關支援,以一個作業系統來說,除了硬體與運算資源的分配與控管外,對軟體最直接最基本的支援,非儲存功能莫屬。如果沒有儲存功能的話,作業系統只能執行運算,而不能利用近端的媒體來儲存資訊,因此作業系統必須要有儲存的能力,才能夠達到開放給應用程式發展的最低限度服務。

Windows Azure Storages即為Windows Azure Platform上管理資料儲存的服務,是雲端運算中典型的分散式海量儲存(Distributed Mass Storages),所有的Windows Azure雲端應用程式都需要它來儲存資料,而通常只要是在雲端上運行的應用程式,資料都不能存在本機上(除了部署時就有的資料以外),原因很簡單,當應用程式所在的虛擬機器當機時,雲端供應商的監管系統(如Windows Azure Fabric Controller)會自動找尋新的伺服器並重新部署與啟動已當機的虛擬機器,由於不是虛擬機器的Live Migration,存在本機上的資料都會不見,而要避免這個問題的最佳辦法,就是把資料移存到集中的儲存服務區,然後透過公定的URL去撈取,這樣不但可以確實保存資料,也可以讓其他的服務或應用程式共享資料。

Windows Azure Storages目前支援三種類型的儲存格式,分別是給一般檔案的二進位格式(BLOB),給結構化資料的表格格式(Table)以及讓應用程式資訊有緩衝並允許以先進先出方式處理的佇列格式(Queue)。不論是哪一類型的儲存服務,都是透過一個API窗口來控制,真正的資料都分散儲存在資料中心的某台儲存伺服器中的某個磁碟機內,並且為保持SLA的服務水準,因此資料被分散很多份儲存在不同的磁碟機內,每台儲存伺服器均管理一組磁碟陣列(Disk Array),核心內使用了REST API介面控制磁碟的存取,而許多儲存伺服器用P2P協定串接在一起並且將資料分散儲存。這樣的分散儲存方式代表了當其中一個或數個儲存區故障或磁碟損毀時,可以馬上由其他儲存相同資料的儲存區取得應用程式的資料。它也代表了可以分散流量以及存取負載,以提升儲存服務的擴充性(scalability)以及可用性(availability)。

image

除了原有的三種儲存格式外,為了要便利.NET的開發人員,微軟特別在Windows Azure SDK的組件中,加入了一個可以將BLOB模擬成磁碟機的工具,稱為Windows Azure Drive,透過Drive的模擬,開發人員可以將BLOB的其中一段資料區模擬成NTFS檔案系統的磁碟機,這代表著應用程式可以透過NTFS的檔案I/O API存取BLOB格式的資料,.NET Framework的應用程式也可以利用System.IO內的檔案與資料夾APIs來存取資料,有助於應用程式的移轉以及開發應用程式的便利性。

除了儲存的功能外,Windows Azure Platform也特別為了BLOB格式的儲存服務開發了內容傳遞網路(Content Delivery Network)的功能,只要啟用了這個服務,就可以利用全球20個以上的CDN節點來散布資料,台灣的台北也有CDN的節點,對於有大量二進位資料(如一般檔案或影音資料等)需要全球傳遞的應用程式來說,CDN可以幫忙省下很多傳輸的時間。最新版本的CDN已經可以支援SSL加密等級的CDN,對需要傳輸加密資料的應用程式來說有相當的幫助。

最後要介紹的是Windows Azure v1.5宣布的新功能,Storage服務將會採行區域資料中心異地備援(Geo-replication)的服務,Geo-replication會在資料進入儲存時,動態於資料中心內部與區域內鄰近的資料中心間複製相同資料的副本,而當原本的資料中心突然因為某些因素中斷服務時,Windows Azure的DNS服務會自動將URL要求導向到鄰近的資料中心,而由鄰近的資料中心提供服務,同時複製的作業是非同步進行的,不會影響到原本應用程式的運作,而透過Geo-replication產生的儲存體交易數以及網路頻寬使用均不需由使用者支付費用。目前Windows Azure Platform的資料中心是每區兩座,故每區的資料中心會採相互備援的方式處理資料服務的異地備援服務。

image

Reference:

http://msdn.microsoft.com/zh-tw/library/gg433040.aspx

http://blogs.msdn.com/b/windowsazurestorage/archive/2011/09/16/windows-azure-storage-at-build-2011-geo-replication-and-new-blob-table-and-queue-features.aspx