MerkleTree在資料校驗上的應用

oxoxooxx發表於2011-07-05

Anti-Entropy如何透過對比MerkleTree來發現節點資料的一致?
比較恢復的最細粒度是?

MerkleTree又稱HashTree,因為它的節點儲存的都是hash值,葉子節點儲存的是檔案塊,分片,或者cassandra中row key的hash值等,非葉子節點儲存的是子節點值的hash,即hash的hash。透過比較樹根的hash可以快速的確認當前tree對映的資料有沒有發生變化,並可以在log(N)時間內快速的定位是那部分發生了變化。

這樣看來MerkleTree是很強大的,在cassandra中就是透過MerkleTree對比來進行多個節點上同一個range的多個副本資料的一致性檢查,從而進行readrepair一致性修復操作。

也看到使用MerkleTree來進行大量小檔案的同步,不知道SVN這樣的版本控制工具是怎樣進行檔案版本比較,記錄的,興許底層也是基於MerkleTree來做的,同樣最近非常火的雲端儲存應用也是有此需求的,雲端儲存中在本地和雲端進行資料備份同步,如果能夠快速標識檔案的異同,不僅能夠減少資料同步帶來的網路開銷,同時使用者的感知也是非常好的,這方面dropbox做的就很好。

amazon的這篇論文對此有比較好的解釋:

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23937368/viewspace-1052015/,如需轉載,請註明出處,否則將追究法律責任。

相關文章