DHT(Distributed Hash Table,分佈式哈希表)

DHT(Distributed Hash Table,分佈式哈希表)相似Tracker的根據種子特徵碼返回種子信息的網絡。算法

DHT全稱叫分佈式哈希表(Distributed Hash Table),是一種分佈式存儲方法。緩存

在不須要服務器的狀況下,每一個客戶端負責一個小範圍的路由,並負責存儲一小部分數據,從而實現整個DHT網絡的尋址和存儲。服務器

新版BitComet容許同行鏈接DHT網絡和Tracker,也就是說在徹底不連上Tracker服務器的狀況下,也能夠很好的下載,網絡

由於它能夠在DHT網絡中尋找下載同一文件的其餘用戶。架構

 

分散式散列表英語:distributed hash table,縮寫DHT)是分散式計算系統中的一類,分佈式

用來將一個關鍵值(key)的集合分散到全部在分散式系統中的節點,而且能夠有效地將消息轉送到惟一學習

一個擁有查詢者提供的關鍵值的節點(Peers)。搜索引擎

這裏的節點相似散列表中的存儲位置。雲計算

分散式散列表一般是爲了擁有極大節點數量的系統,並且在系統的節點經常會加入或離開(例如網絡斷線)而設計的。spa

在一個結構性的延展網絡(overlay network)中,參加的節點須要與系統中一小部分的節點溝通,這也須要使用分散式散列表。

分散式散列表能夠用以建立更復雜的服務,例如分散式文件系統、點對點技術文件分享系統、合做的網頁緩存、多播、任播、域名系統以及實時通訊等。

分散式散列表本質上強調如下特性:

  • 離散性:構成系統的節點並無任何中央式的協調機制。
  • 伸縮性:即便有成千上萬個節點,系統仍然應該十分有效率。
  • 容錯性:即便節點不斷地加入、離開或是中止工做,系統仍然必須達到必定的可靠度。

BitTorrent能夠選用DHT做爲分散式Tracker。

DHT網絡爬蟲基於DHT網絡構建了一個P2P資源搜索引擎。

這個搜索引擎不但能夠用於構建DHT網絡中活躍的資源索引(活躍的資源意味着該網絡中確定有人至少持有該資源的部分數據),

還能夠分析出該網絡中的熱門分享資源。

P2P及DHT網絡簡單介紹:

P2P在思想上能夠說是internet思想/精神/哲學很是集中的體現,共同的參與,透明的開放,平等的分享(讓我想起以前學習過的,如今正在瘋狂熱炒的雲計算的「中央集權」制度)。基於P2P技術的應用有不少,包括文件分享,即時通訊,協同處理,流媒體通訊等等。經過這些應用的接觸,分析和理解,P2P其本質是一種新的網絡傳播技術,這種新的傳播技術打破了傳統的C/S架構,逐步地去中心化,扁平化,這或許在必定程度上應證了」世界是平的」趨勢,呵呵。P2P文件分享的應用(BTs/eMules等)是P2P技術最集中的體現,咱們這裏的研究也是以P2P文件分享網絡做爲入口,P2P文件分享網絡的發展大體有如下幾個階段,包含tracker服務器的網絡,無任何服務器的純DHT網絡, 混合型P2P網絡。DHT網絡發展即有「思想/文化」上的「發展」,也有必定的商業上的需求(版權管理)。

DHT全稱叫分佈式哈希表(Distributed Hash Table),是一種分佈式存儲方法,一類可由鍵值來惟一標示的信息按照某種約定/協議被分散地存儲在多個節點上,這樣也能夠有效地避免「中央集權式」的服務器(好比:tracker)的單一故障而帶來的整個網絡癱瘓。實現DHT的技術/算法有不少種,經常使用的有:Chord, Pastry, Kademlia等。咱們這裏要研究的是Kademlia算法,由於BT及BT的衍生派(Mainline, Btspilits, Btcomet, uTorrent…),eMule及eMule各種Mods(verycd, easy emules, xtreme…)等P2P文件分享軟件都是基於該算法來實現DHT網絡的,BT採用Python的Kademlia實現叫做khashmir(科什米爾,印巴衝突地帶?),有以下官網。eMule採用C++的Kademlia實現乾脆就叫做Kad,固然它們之間有些差異,但基礎都是Kademlia。咱們這裏以BT-DHT爲例進行分析介紹,下面說到的DHT均可以默認是BT-Kademlia-DHT。

Kademlia實現原理

各類DHT的實現算法,不管是Chord, Pastry仍是Kademlia,其最直接的目標就是以最快的速度來定位到指望的節點,在P2P文件分享應用中則是以最快的速度來查找到正在分享某一文件/種子的peers列表信息。由於每一個節點都是分佈式存在於地球的任何角落,若是用地理距離來衡量兩節點間的距離則可能給計算帶來極大複雜性甚至不可能進行衡量,所以基本全部的DHT算法都是採用某種邏輯上的距離,在Kademlia則採用簡單的異或計算來衡量兩節點間的距離,它和地理上的距離沒有任何關係,但卻具有幾何公式的絕大特徵:

(1)節點和它自己之間的異或距離是0

(2)異或距離是對稱的:即從A到B的異或距離與從B到A的異或距離是等同的

(3)異或距離符合三角形不等式:給定三個頂點A B C,假如AC之間的異或距離最大,那麼AC之間的異或距離必小於或等於AB異或距離和BC異或距離之和.

(4)對於給定的一個距離,距離A只存在有惟一的一個節點B,也即單向性,在查找路徑上也是單向的,這個和地理距離不一樣。

相關文章
相關標籤/搜索