分布式雜湊表(DHT)與Chord協議

2021-09-28 17:09:54 字數 1247 閱讀 6373

分布式雜湊表(dht)

通常是直接拿業務資料的雜湊值作為 key,業務資料本身作為 value。可以簡單而快速地進行put、get。

chord協議

原理:chord通過把node和key對映到相同的空間而保證一致性雜湊,為了保證雜湊的非重複性,chord選擇sha-1作為雜湊函式,sha-1會產生乙個2^160的空間,每項為乙個16位元組的大整數。這些整數首尾相連形成乙個環,稱之為chord環。整數在chord環上按大小順時針排列,node(機器的ip位址和port)與key(資源標識)都被雜湊到chord環上,這樣就假定了整個p2p網路的狀態為乙個虛擬的環。

1 覆蓋網路

在乙個含有n個節點的網路中,將整個網路看做乙個圓環,節點按識別符號從小到大順時針組成乙個環。物件分配在節點n上,n是從節點識別符號大於等於物件標識的節點開始順時針方向遇到的第乙個活著的節點。

2 資料查詢

每個節點都維護乙個finger表,該錶長度為m(m就是位數,在chord中為160),該錶的第i項存放節點n的第(n+2^i-1) mod 2^m個successor(1<=i<=m)。

每個節點都維護乙個predecessor和successor列表,該列表的作用是能快速定位前繼和後繼,並能週期性檢測前繼和後繼的健康狀態。就是說存放的successor是按2的倍數等比遞增,之所以取模是因為最後的節點的successor是開始的幾個節點,比如最大的乙個節點的下乙個節點定義為第乙個節點

資源key儲存在下面的node上:沿chord環,hash(node)>=hash(key)的第乙個node,我們稱這個node為這個key的successor。

給定乙個key,按下面的步驟查詢其對應的資源位於哪個節點,也就是查詢該key的successor:(假如查詢是在節點n上進行)

1 檢視key的雜湊是否落在節點n和其直接successor之間,若是結束查詢,n的successor即為所找。

2 在n的finger表中,找出與hash(key)距離最近且小於hash(key)的n的successor,該節點也是finger表中最接近key的predecessor,把查詢請求**到該節點。

3 繼續上述過程,直至找到key對應的節點。

查詢過程實際上就是折半查詢的過程。雖然chord中的每個節點維護了o(log(n))個資訊,但是chord協議提高了資料路由和定位的效率,從o(n)提高到了o(log(n)),查詢時資訊的**也減少到了o(log(n))。

分布式雜湊演算法DHT

我們從淺入深一步一步介紹什麼是分布式雜湊表。雜湊函式 雜湊函式是一種計算方法,它可以把乙個值a對映到乙個特定的範圍 begin,end 之內。對於乙個值的集合,雜湊函式把他們均勻的對映到某個範圍之中。這樣,通過這些值就可以很快的找到與之對應的對映位址。對於同乙個值,雜湊函式要能保證對這個值的運算結果...

IPFS系列 分布式雜湊表 DHT

dht的全稱是distributed hash table,即分布式雜湊表技術,是一種分布式的儲存方法。這種分布式網路不需要中心節點伺服器,而是每個客戶端負責乙個小範圍的路由,並負責儲存一小部分資料,從而實現整個dht網路的定址和儲存。dht網路還在於關鍵字最接近的節點上覆製備份冗餘資訊,避免了單一...

分布式雜湊表

我們從淺入深一步一步介紹什麼是分布式雜湊表。1 雜湊函式 雜湊函式是一種計算方法,它可以把乙個值a對映到乙個特定的範圍 begin,end 之內。對於乙個值的集合,雜湊函式把他們均勻的對映到某個範圍之中。這樣,通過這些值就可以很快的找到與之對應的對映位址。對於同乙個值,雜湊函式要能保證對這個值的運算...