DHT(Distributed Hash Table,分布式哈希表)
DHT(Distributed Hash Table,分布式哈希表)類似Tracker的根據(jù)種子特征碼返回種子信息的網(wǎng)絡(luò)。
DHT全稱叫分布式哈希表(Distributed Hash Table),是一種分布式存儲方法。
在不需要服務(wù)器的情況下,每個(gè)客戶端負(fù)責(zé)一個(gè)小范圍的路由,并負(fù)責(zé)存儲一小部分?jǐn)?shù)據(jù),從而實(shí)現(xiàn)整個(gè)DHT網(wǎng)絡(luò)的尋址和存儲。
新版BitComet允許同行連接DHT網(wǎng)絡(luò)和Tracker,也就是說在完全不連上Tracker服務(wù)器的情況下,也可以很好的下載,
因?yàn)樗梢栽贒HT網(wǎng)絡(luò)中尋找下載同一文件的其他用戶。
?
分散式散列表(英語:distributed hash table,縮寫DHT)是分散式計(jì)算系統(tǒng)中的一類,
用來將一個(gè)關(guān)鍵值(key)的集合分散到所有在分散式系統(tǒng)中的節(jié)點(diǎn),并且可以有效地將消息轉(zhuǎn)送到唯一
一個(gè)擁有查詢者提供的關(guān)鍵值的節(jié)點(diǎn)(Peers)。
這里的節(jié)點(diǎn)類似散列表中的存儲位置。
分散式散列表通常是為了擁有極大節(jié)點(diǎn)數(shù)量的系統(tǒng),而且在系統(tǒng)的節(jié)點(diǎn)常常會加入或離開(例如網(wǎng)絡(luò)斷線)而設(shè)計(jì)的。
在一個(gè)結(jié)構(gòu)性的延展網(wǎng)絡(luò)(overlay network)中,參加的節(jié)點(diǎn)需要與系統(tǒng)中一小部分的節(jié)點(diǎn)溝通,這也需要使用分散式散列表。
分散式散列表可以用以創(chuàng)建更復(fù)雜的服務(wù),例如分散式文件系統(tǒng)、點(diǎn)對點(diǎn)技術(shù)文件分享系統(tǒng)、合作的網(wǎng)頁緩存、多播、任播、域名系統(tǒng)以及實(shí)時(shí)通信等。
分散式散列表本質(zhì)上強(qiáng)調(diào)以下特性:
- 離散性:構(gòu)成系統(tǒng)的節(jié)點(diǎn)并沒有任何中央式的協(xié)調(diào)機(jī)制。
- 伸縮性:即使有成千上萬個(gè)節(jié)點(diǎn),系統(tǒng)仍然應(yīng)該十分有效率。
- 容錯(cuò)性:即使節(jié)點(diǎn)不斷地加入、離開或是停止工作,系統(tǒng)仍然必須達(dá)到一定的可靠度。
BitTorrent可以選用DHT作為分散式Tracker。
DHT網(wǎng)絡(luò)爬蟲基于DHT網(wǎng)絡(luò)構(gòu)建了一個(gè)P2P資源搜索引擎。
這個(gè)搜索引擎不但可以用于構(gòu)建DHT網(wǎng)絡(luò)中活躍的資源索引(活躍的資源意味著該網(wǎng)絡(luò)中肯定有人至少持有該資源的部分?jǐn)?shù)據(jù)),
還可以分析出該網(wǎng)絡(luò)中的熱門分享資源。
P2P及DHT網(wǎng)絡(luò)簡單介紹:
P2P在思想上可以說是internet思想/精神/哲學(xué)非常集中的體現(xiàn),共同的參與,透明的開放,平等的分享(讓我想起之前學(xué)習(xí)過的,現(xiàn)在正在瘋狂熱炒的云計(jì)算的“中央集權(quán)”制度)。基于P2P技術(shù)的應(yīng)用有很多,包括文件分享,即時(shí)通信,協(xié)同處理,流媒體通信等等。通過這些應(yīng)用的接觸,分析和理解,P2P其本質(zhì)是一種新的網(wǎng)絡(luò)傳播技術(shù),這種新的傳播技術(shù)打破了傳統(tǒng)的C/S架構(gòu),逐步地去中心化,扁平化,這或許在一定程度上應(yīng)證了”世界是平的”趨勢,呵呵。P2P文件分享的應(yīng)用(BTs/eMules等)是P2P技術(shù)最集中的體現(xiàn),我們這里的研究也是以P2P文件分享網(wǎng)絡(luò)作為入口,P2P文件分享網(wǎng)絡(luò)的發(fā)展大致有以下幾個(gè)階段,包含tracker服務(wù)器的網(wǎng)絡(luò),無任何服務(wù)器的純DHT網(wǎng)絡(luò),?混合型P2P網(wǎng)絡(luò)。DHT網(wǎng)絡(luò)發(fā)展即有“思想/文化”上的“發(fā)展”,也有一定的商業(yè)上的需求(版權(quán)管理)。
DHT全稱叫分布式哈希表(Distributed?Hash?Table),是一種分布式存儲方法,一類可由鍵值來唯一標(biāo)示的信息按照某種約定/協(xié)議被分散地存儲在多個(gè)節(jié)點(diǎn)上,這樣也可以有效地避免“中央集權(quán)式”的服務(wù)器(比如:tracker)的單一故障而帶來的整個(gè)網(wǎng)絡(luò)癱瘓。實(shí)現(xiàn)DHT的技術(shù)/算法有很多種,常用的有:Chord,?Pastry,?Kademlia等。我們這里要研究的是Kademlia算法,因?yàn)锽T及BT的衍生派(Mainline,?Btspilits,?Btcomet,?uTorrent…),eMule及eMule各類Mods(verycd,?easy?emules,?xtreme…)等P2P文件分享軟件都是基于該算法來實(shí)現(xiàn)DHT網(wǎng)絡(luò)的,BT采用Python的Kademlia實(shí)現(xiàn)叫作khashmir(科什米爾,印巴沖突地帶?),有如下官網(wǎng)。eMule采用C++的Kademlia實(shí)現(xiàn)干脆就叫作Kad,當(dāng)然它們之間有些差別,但基礎(chǔ)都是Kademlia。我們這里以BT-DHT為例進(jìn)行分析介紹,下面說到的DHT都可以默認(rèn)是BT-Kademlia-DHT。
Kademlia實(shí)現(xiàn)原理
各種DHT的實(shí)現(xiàn)算法,不論是Chord,?Pastry還是Kademlia,其最直接的目標(biāo)就是以最快的速度來定位到期望的節(jié)點(diǎn),在P2P文件分享應(yīng)用中則是以最快的速度來查找到正在分享某一文件/種子的peers列表信息。因?yàn)槊總€(gè)節(jié)點(diǎn)都是分布式存在于地球的任何角落,如果用地理距離來衡量兩節(jié)點(diǎn)間的距離則可能給計(jì)算帶來極大復(fù)雜性甚至不可能進(jìn)行衡量,因此基本所有的DHT算法都是采用某種邏輯上的距離,在Kademlia則采用簡單的異或計(jì)算來衡量兩節(jié)點(diǎn)間的距離,它和地理上的距離沒有任何關(guān)系,但卻具備幾何公式的絕大特征:
(1)節(jié)點(diǎn)和它本身之間的異或距離是0
(2)異或距離是對稱的:即從A到B的異或距離與從B到A的異或距離是等同的
(3)異或距離符合三角形不等式:給定三個(gè)頂點(diǎn)A?B?C,假如AC之間的異或距離最大,那么AC之間的異或距離必小于或等于AB異或距離和BC異或距離之和.
(4)對于給定的一個(gè)距離,距離A只存在有唯一的一個(gè)節(jié)點(diǎn)B,也即單向性,在查找路徑上也是單向的,這個(gè)和地理距離不同。
?
總結(jié)
以上是生活随笔為你收集整理的DHT(Distributed Hash Table,分布式哈希表)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java知多少(68)面向字符的输出流
- 下一篇: zookeeper注意几点