Dynamo的核心技術(shù)是什么
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要
亞馬遜平臺(tái),基于成百上千萬(wàn),分布于世界各地的服務(wù)器和網(wǎng)絡(luò)組件,為眾多網(wǎng)站提供服務(wù)。
本文呈現(xiàn)了Dynamo的設(shè)計(jì)與實(shí)現(xiàn),亞馬遜部分核心業(yè)務(wù)所使用的高度可用的實(shí)時(shí)在線鍵值存儲(chǔ)系統(tǒng)。在特定的場(chǎng)景下?tīng)奚艘欢ǖ囊恢滦詠?lái)維護(hù)可用性,對(duì)對(duì)象版本,沖突解決做了拓展,為開(kāi)發(fā)者提供了新式的接口。
引言
Amazon:
高度去中心化,松散耦合(聯(lián)系緊密卻獨(dú)立),面向服務(wù)的架構(gòu)。
Dynamo:
1.綜合多種知名技術(shù)來(lái)實(shí)現(xiàn)可拓展性和可用性;
2.保證最終一致性。
背景
現(xiàn)有的復(fù)制架構(gòu)技術(shù),過(guò)于局限,且太重視一致性,而導(dǎo)致可用性不高。
滿足ACID性質(zhì)的,可用性都不高。Dynamo不提供任何分離保證,且只允許單鍵更新。?
Dynamo:
1.增量式拓展性
單次可以加入一臺(tái)主機(jī)(節(jié)點(diǎn))。
2.對(duì)稱性
每個(gè)節(jié)點(diǎn)上的職責(zé)是一致的。
3.去中心化的
更偏向于點(diǎn)對(duì)點(diǎn)的去中心化技術(shù)。
4.異質(zhì)性
可以根據(jù)機(jī)器的能力,分配相應(yīng)比例的工作負(fù)載。
相關(guān)工作
P2P系統(tǒng)
- Freenet,Gnutella,P2P文件分享系統(tǒng)。
- Pastry,Chord,使用特定的路由機(jī)制,確保查詢可以在一定的條數(shù)內(nèi)得到回應(yīng)。
- Oceanstore,提供在分布式數(shù)據(jù)上支持序列化更新,全局事務(wù)持久性存儲(chǔ)服務(wù)。
分布式文件系統(tǒng)/數(shù)據(jù)庫(kù)
- Ficus,Coda,犧牲了一致性來(lái)提高可用性。
- Farsite,通過(guò)復(fù)制架構(gòu)來(lái)完成高度可用性和可拓展性。
- Google File System(GFS),單一中心服務(wù)器,多分支服務(wù)器分割存儲(chǔ)。
- Bayou,分布式關(guān)系型數(shù)據(jù)庫(kù),支持無(wú)網(wǎng)操作,保證最終一致。
Dynamo:
支持無(wú)網(wǎng)狀態(tài)下讀寫(xiě)操作,高速讀寫(xiě),使用多種沖突解決機(jī)制,維護(hù)最終一致性,基于可靠網(wǎng)絡(luò)環(huán)境設(shè)計(jì)。
架構(gòu)
分布式架構(gòu)要處理的問(wèn)題:
負(fù)載均衡
錯(cuò)誤檢測(cè)
錯(cuò)誤恢復(fù)
架構(gòu)同步
過(guò)載處理
狀態(tài)轉(zhuǎn)換
并發(fā)控制
工作計(jì)劃
請(qǐng)求編組
請(qǐng)求路由
系統(tǒng)監(jiān)測(cè)與警報(bào)
配置管理
身份信息
本文專注于Dynamo的核心技術(shù),如下表所示Partioning
?Consistent Hashing
?Incremental Scalability
?High Availability for writes
?Vector clocks with reconciliation during reads
?Version size is decoupled from update rates
?Handling temporary failures
?Sloppy Quorum and hinted handoff
?Provides high availability and durability guarantee when some of the replicas are not available.
?Recovering from permanent failures
?Anti-entropy using Merkle trees
?Synchronizes divergent replicas in the background.
?Membership and failure detection
?Gossip-based membership protocol and failure detection.
?Preserves symmetry and avoids having a centralized registry for storing membership and node liveness information.
系統(tǒng)接口
get(key),返回內(nèi)容,及與內(nèi)容沖突矛盾的對(duì)象。
put(key,context,object),根據(jù)key確定確認(rèn)對(duì)象寫(xiě)入位置,再將副本寫(xiě)到磁盤(pán)上。
分配算法
一致性哈希,分配到一個(gè)首尾相接的環(huán)空間上。一個(gè)節(jié)點(diǎn)對(duì)應(yīng)環(huán)上多個(gè)位置節(jié)點(diǎn)。
一對(duì)多好處:
1.如果節(jié)點(diǎn)故障,可以將工作均派給相同節(jié)點(diǎn)。
2.新加入節(jié)點(diǎn),可以從其他節(jié)點(diǎn)中獲取工作內(nèi)容。
3.滿足了異質(zhì)性。
復(fù)制架構(gòu)
每個(gè)數(shù)據(jù)對(duì)象在多個(gè)站點(diǎn)上備份。
數(shù)據(jù)版本
Dynamo保證最終一致性,故而更新操作可以同時(shí)傳播到全部站點(diǎn)。