本章詳細(xì)介紹Amazon平臺基礎(chǔ)存儲架構(gòu)Dynamo及Amazon的主要云計算服務(wù),重點(diǎn)剖析這些云計算服務(wù)背后涉及的重要技術(shù)、服務(wù)的基本架構(gòu)和核心的概念。除了一些常用的API之外,本章將不介紹各個Amazon云計算服務(wù)的具體使用方法,感興趣的讀者可以參考Amazon的相關(guān)技術(shù)文檔。
Amazon平臺基礎(chǔ)存儲架構(gòu):Dynamo
在Web服務(wù)剛興起時,各種平臺大多釆用的是關(guān)系型數(shù)據(jù)庫。由于大量的Web數(shù)據(jù)是半結(jié)構(gòu)化數(shù)據(jù),隨著數(shù)據(jù)量的急劇增加,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫已經(jīng)無法滿足這種存儲要求,為此不少服務(wù)商都設(shè)計開發(fā)了自己的存儲系統(tǒng)。Amazon的Dynamo就是其中非常具有代表性的一種存儲架構(gòu),作為狀態(tài)管理組件被用于Amazon很多系統(tǒng)中。2007年,Amazon將其以論文形式發(fā)表,很快Dynamo就被應(yīng)用于其他云存儲架構(gòu),如Twitter和 Facebook的Cassandra架構(gòu)和NoSQL數(shù)據(jù)庫等。本節(jié)詳細(xì)介紹具有高可用特性的Dynamo存儲架構(gòu)。
Dynamo在Amazon服務(wù)平臺的地位
Amazon作為目前世界上最主要的電子商務(wù)提供商之一,它的系統(tǒng)每天要接受全球數(shù)以百萬計的服務(wù)請求,髙效的平臺架構(gòu)是保證其系統(tǒng)穩(wěn)定性的根本。圖3-1是面向服務(wù)的Amazon平臺基本架構(gòu)。
從圖中可以看出整個Amazon平臺的架構(gòu)是完全的分布式、去中心化的,在Amazon的平臺中處于底層位置的存儲架構(gòu)Dynamo也是如此。Amazon平臺中有很多服務(wù)對存儲的需求只是讀取、寫入,即滿足簡單的鍵/值(key/value)式存儲即可,例如:常用的購物車、信息會話管理和推薦商品列表等,如果采取傳統(tǒng)的關(guān)系數(shù)據(jù)庫方式,則效率低下。針對這種需求,Dynamo應(yīng)運(yùn)而生,雖然Dynamo目前并不直接向公眾提供服務(wù),但是大量的用戶服務(wù)數(shù)據(jù)被存儲在Dynamo中。可以說它為Amazon的電子商務(wù)平臺及其云計算服務(wù)提供了最基礎(chǔ)的支持。

Dynamo以很簡單的鍵/值方式存儲數(shù)據(jù),不支持復(fù)雜的査詢。但是這并不影響客戶的使用,因?yàn)橥ǔG闆r下用戶只需要根據(jù)鍵讀取值就足夠了。Dynamo中存儲的是數(shù)據(jù)值的原始形式,也就是以位(bit)的形式存儲,不解析數(shù)據(jù)的具體內(nèi)容。Dynamo不識別任何數(shù)據(jù)結(jié)構(gòu),這使得它幾乎可以處理所有的數(shù)據(jù)類型。
目前,關(guān)于Amazon云服務(wù)的技術(shù)細(xì)節(jié)尚未公開,Dynamo作為底層存儲架構(gòu)是如何支持這些服務(wù)的尚不清楚,但是,可以通過現(xiàn)有資料來分析其與各個云服務(wù)的關(guān)系。我們認(rèn)為,從功能角度,Dynamo存儲使用各種云服務(wù)的用戶數(shù)據(jù);從實(shí)現(xiàn)角度,和存儲有關(guān)的云服務(wù)與Dynamo關(guān)系密切,其中S3就是構(gòu)建在Dynamo之上,SimpleDB也極有可能使用或借鑒了Dynamo的技術(shù)。