dynamo中文_第1頁
已閱讀1頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、DynamoDynamo 簡介四 20TH由道安 道安發(fā)表在 Dynamo8個評論 個評論這個小文打算寫成入門級的介紹,所以很多語言不追求準(zhǔn)確性。本介紹參考 Amazon 的 Dynamo 論文。需要更詳細(xì)更準(zhǔn)確信息的同學(xué)請直接閱讀原文。(原文地址http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) 這篇論文本身沒提出什么新的思想

2、,正如論文中所說,貢獻(xiàn)在于把非常多的技術(shù)結(jié)合到了一起,來完成一個系統(tǒng)。Dynamo 是個什么東東呢?他是 Amazon 公司的一個分布式 key/value 存儲引擎。那么這個什么引擎又是什么?首先,假設(shè)一個場景,你的網(wǎng)站要存儲用戶登陸的 ip。這個問題怎么解決呢?傳統(tǒng)的方法是用數(shù)據(jù)庫。數(shù)據(jù)庫提供了方便的操作接口,復(fù)雜的查詢能力以及事物的保證。多好的解決方案啊。盡管應(yīng)用不需要什么復(fù)雜查詢,也不需要事物。好,現(xiàn)在假設(shè)大家都很喜歡你的網(wǎng)站,

3、訪問的人越來越多。一個數(shù)據(jù)庫已經(jīng)處理不過來了。于是你安裝了3臺數(shù)據(jù)庫主機(jī),把用戶分成了三類(男人,女人,it 人;總是有某種方法把用戶分成數(shù)目大致差不多的幾個部分吧) 。每次訪問的時候,先看用戶屬于哪一類,然后直接訪問存儲那類用戶數(shù)據(jù)的數(shù)據(jù)庫。于是處理能力增加了三倍。這個時候你已經(jīng)實(shí)現(xiàn)了一個分布式的存儲引擎,Dynamo 就是一個類似的東西。只是它的可靠性,可用性等方面更好一點(diǎn)而已。下面我們看看那個簡單的分布式存儲系統(tǒng)有什么不方便的地方

4、,而Dynamo 是如何解決的。先列舉一下簡單的分布式系統(tǒng)可能存在的問題吧:1 很難擴(kuò)容:如果現(xiàn)在業(yè)務(wù)發(fā)展迅速,3臺主機(jī)撐不住了,需要加到5臺主機(jī),那要如何處理呢?首先要更改分類方法,把用戶分成5類,然后重新遷移已經(jīng)存在的數(shù)據(jù)。你要在網(wǎng)站上貼個條子,“系統(tǒng)維護(hù)中”,然后開始偉大的遷移工程,等到終于遷移完成,發(fā)現(xiàn)其實(shí)3臺也不用了,用戶都走光了。2 數(shù)據(jù)可靠性無法保證:有一天,發(fā)現(xiàn)有一臺數(shù)據(jù)庫服務(wù)器的硬盤壞了。麻煩了,本來網(wǎng)站就不賺錢,沒用

5、什么高檔機(jī)器,只有一個定期的增量備份而已。經(jīng)過一天復(fù)雜的恢復(fù)工作,你還要對部分用戶說,麻煩你們把做過的事情再做一遍啊3 單點(diǎn)問題:負(fù)責(zé)把用戶分類,然后決定使用哪個數(shù)據(jù)服務(wù)器的那臺主機(jī)是網(wǎng)站的命根子啊,它如果宕機(jī),所有的數(shù)據(jù)都不能訪問了,它如果滿負(fù)荷了,增加數(shù)據(jù)服務(wù)器也不會對整體性能有幫助。我好像看到一臺貼滿著驅(qū)邪保平安符咒的 pc server。這幾個問題,看似不大,解決起來還真的不容易呢。尤其是想到自己的網(wǎng)站也許有一天也會和 goog

6、le 有一樣多的用戶(可能因?yàn)槟闶翘觳呕蛘?google 快倒閉了) ?,F(xiàn)在我們衡。這要怎么辦呢?我們可以把那個數(shù)據(jù)圓分成 Q 等份(每一個等份就是一個虛節(jié)點(diǎn)) ,這個 Q 要遠(yuǎn)大于我們的資源數(shù)?,F(xiàn)在假設(shè)我們有 S 個資源,那么每個資源就承擔(dān) Q/S 個等份。 當(dāng)一個資源節(jié)點(diǎn)離開系統(tǒng)的時候,它所負(fù)責(zé)的等份要重新均分到其他資源節(jié)點(diǎn)上, 一個新節(jié)點(diǎn)加入的時候,要從其他的節(jié)點(diǎn)”偷”到一定數(shù)額的等份。 這個策略下,當(dāng)一個節(jié)點(diǎn)離開系統(tǒng)的時候,雖

7、然需要影響到很多節(jié)點(diǎn),但是注意,遷移的數(shù)據(jù)總量只是離開那個節(jié)點(diǎn)的數(shù)據(jù)量。同樣,一個新節(jié)點(diǎn)的加入,遷移的數(shù)據(jù)總量也只是一個新節(jié)點(diǎn)的數(shù)據(jù)量。之所以有這個效果是因?yàn)?Q 的存在,使得增加和減少機(jī)器的時候不需要對已有的數(shù)據(jù)做重新哈希。這個策略的要求是 Q>>S(其實(shí)還有存儲備份的問題,現(xiàn)在還沒介紹到,假設(shè)每個數(shù)據(jù)存儲 N 個備份 則要滿足 Q>>S*N)。如果業(yè)務(wù)快速發(fā)展,使得不斷的增加主機(jī),從而導(dǎo)致 Q 不再滿足 Q&

8、gt;>S,那么這個策略將不斷的退化。(Dynamo 論文在 section 6。2 比較了三種策略的狀況 ,本文只是簡單介紹其思想,不是詳細(xì)翻譯)2 數(shù)據(jù)的可靠性:因?yàn)槲覀兪褂玫氖橇畠r的 pc 機(jī),硬盤損毀或者是其他原因?qū)е碌闹鳈C(jī)不可用是很經(jīng)常的事情。做這樣一個估算,假設(shè)一臺 pc 機(jī)平均三年就會有一次失效,不可用。那么當(dāng)一個一千臺機(jī)器的集群,基本上每天都有機(jī)器壞掉,所以某主機(jī)不可用是常態(tài),系統(tǒng)必須可以在這樣的情況下繼續(xù)提供服

9、務(wù)(哦 雖然你的網(wǎng)站現(xiàn)在剛剛只需要4臺主機(jī),可是別忘了,它要成長成為 google 的)。當(dāng)然,廉價 pc 的好處就是便宜。所以我們可以增加系統(tǒng)中數(shù)據(jù)的備份來使得系統(tǒng)在某臺機(jī)器掛掉的時候仍舊可用。大家最先想到的方案可能就是對每個節(jié)點(diǎn),建立一個備份節(jié)點(diǎn),如果主節(jié)點(diǎn)壞掉了,備份節(jié)點(diǎn)可以立刻頂上去(雙機(jī)熱備)。但是仔細(xì)想一下,這個方案是讓人不放心的。因?yàn)楫?dāng)一主一備中的某一臺機(jī)器壞掉,另外一臺就成了一個單點(diǎn)運(yùn)行的節(jié)點(diǎn)。這個時候另外一個節(jié)點(diǎn)一旦

10、發(fā)生錯誤,服務(wù)就變得不可用,數(shù)據(jù)也有可能丟失。在一個要求高可靠性的系統(tǒng)上,這是不可忍受的。我們剛剛估算了一個大的集群每天都有機(jī)器掛掉。而這種錯誤,一定要人工介入才能解決。想想系統(tǒng)管理員每天在機(jī)房里更換主機(jī)的情景以及其他不可預(yù)料情況(系統(tǒng)管理員休假或者新買的主機(jī)沒按時到貨等),再想想系統(tǒng)每天都有節(jié)點(diǎn)在單點(diǎn)運(yùn)行,真的是很可怕的事情。事實(shí)上,一般工業(yè)界認(rèn)為比較安全的備份數(shù)應(yīng)該是3份。好,那么我們看看做這個備份的時候需要注意的問題。首先,如何選

11、擇備份節(jié)點(diǎn)。我們可以簡單的選擇順序上的后兩個節(jié)點(diǎn)為備份節(jié)點(diǎn),比如存在節(jié)點(diǎn) A 的數(shù)據(jù),備份到節(jié)點(diǎn) B 和 C。但是當(dāng)我們前面引入了虛節(jié)點(diǎn)的概念的時候就要注意了,有可能 C 節(jié)點(diǎn)和 A 節(jié)點(diǎn)在同一臺物理機(jī)器上,這個時候就不能選擇 C 做為 A 的備份了。下一個問題,當(dāng)一個節(jié)點(diǎn)離開系統(tǒng)的時候,比如宕機(jī),這個節(jié)點(diǎn)上存儲的信息需要繼續(xù)備份到其它節(jié)點(diǎn)上。雖然節(jié)點(diǎn)離開了系統(tǒng),但是因?yàn)閭浞莸拇嬖?我們通過其他節(jié)點(diǎn)可以恢復(fù)出本節(jié)點(diǎn)的所有信息,因?yàn)樵摴?jié)點(diǎn)

12、的離開,這部分信息的備份數(shù)會比要求的備份數(shù)少一,所以需要把這部分?jǐn)?shù)據(jù)做再備份。同樣,當(dāng)一個節(jié)點(diǎn)加入系統(tǒng),從其他節(jié)點(diǎn)偷了數(shù)據(jù)后,其他節(jié)點(diǎn)也需要相應(yīng)減少備份數(shù)。而一個節(jié)點(diǎn)如果只是暫時性的不可達(dá),也就是失效一個很短的時間(這種情況是最常發(fā)生的) ,那么需要其他節(jié)點(diǎn)暫時接管這個節(jié)點(diǎn)的工作,在其可用的時候,把數(shù)據(jù)增量傳送回該節(jié)點(diǎn)。在設(shè)計上述需求的解決方案的時候,還要考慮一個問題,各個節(jié)點(diǎn)間數(shù)據(jù)備份是同步還是異步。假設(shè)我們要求寫請求總是盡可能的成功

13、,那么我們的策略是寫任何一個節(jié)點(diǎn)成功就認(rèn)為成功。節(jié)點(diǎn)之間的數(shù)據(jù)通過異步形式達(dá)成一致。這個時候讀請求可能讀不到最新寫進(jìn)去的信息,比如我們一個數(shù)據(jù)在 A B C 三個節(jié)點(diǎn)各存一份(系統(tǒng)中有三個備份的時候,下面的討論都是基于這個假設(shè)的) ,那么當(dāng)寫 A 成功后,另外一個進(jìn)程從節(jié)點(diǎn) C 讀數(shù)據(jù),這個時候 C 還沒收到最新的數(shù)據(jù),只能給讀請求一個較老的版本。這個可能會帶來大問題;同樣,如果我們希望讀請求總能讀到正確的數(shù)據(jù),那我們的策略是寫的時候要

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論