P2P路由演算法

2021-06-08 19:30:51 字數 1553 閱讀 7806

p2p路由演算法

資源定位方法:

dht(distributed hash table)演算法

思想:

每乙份資源都由一組關鍵字標示,系統對其中的每乙個關鍵字進行hash,根據hash的結果確定該關鍵字由哪個使用者負責儲存,使用者搜尋的同時,用同樣的演算法計算每乙個字的hash,再根據hash知道該關鍵字對應的儲存位置,從而迅速的定位資源的位置。

舉例:

某份檔案名稱為」雪狼湖.***」 當使用者共享此檔案時,客戶端將」雪狼湖.***」字串程序分詞,結果可能是雪狼湖*** 4個詞,假設4個詞的hash結果分別為15,26,37,48 dht一般規定系統中第乙個id號比hash值大的使用者(記作newid = success(hash),下同)負責儲存這些關鍵字所對應的資訊,假設存在id分別為1,9,11,19,21,29,31,39,41等幾個使用者,責分別有id = 16,29,39 等幾個使用者儲存相關資訊。

缺點:使用者加入退出時相關的使用者要進行處理,開銷較大,使用者頻繁加入退出時,可能導致系統效能的下降使用者上下線對系統的影響以o(logn)方式遞增

無法精確查詢,頻寬浪費大,單獨查詢乙個關鍵字的結果可能非常多,對於熱門字,可能99.99%的工作是無用的。

改進dht演算法

思想:使用者儲存的不是檔案的資訊,而是其他使用者的資訊,前面的dht演算法中,一般每個關鍵字所指向的值都是檔案的hash,實際上將關鍵字修改為使用者的id與位址即可

與上面相同的過程查詢到關鍵字儲存位置後,向這個位置查詢,得到一組使用者,客戶端然後逐個向使用者傳送查詢請求,目標使用者進行精確匹配後將結果返回,搜尋完成

先根據關鍵字組得到使用者列表,然後對使用者列表逐個進行精確查詢。

優點:無頻寬浪費,只搜尋到使用者列表資料量較小

儲存表的節省改進前每個使用者要儲存的資料= 平均每個使用者共享檔案數* 平均沒檔案關鍵字書。改進後每個使用者要儲存的資料= 平均每個使用者有關聯的關聯字數

系統結構的改進:每個使用者直接控制對它自己內容的搜尋

路由演算法

**位址伺服器方式:僅僅記錄每個使用者的位址並提供查詢,一台pc可以輕易支援百萬級別的使用者量(位址資料量太小),**位址伺服器的一部分工作可以交給關鍵字儲存者完成,每次開始搜尋時,先向位址伺服器查表一次,以便於關鍵字儲存者聯絡,執行搜尋第二步時,目標使用者的位址在搜尋中一併返回(可能導致關鍵字儲存者工作輛偏大)

使用者上線下線對系統的影響 1.

正常下線:自己應屬的搜尋任務妥善轉移,自己的關鍵字資訊從系統中擦去 2.

突然掉線:下家儲存關鍵字備份,使用者與下家保持握手,一旦握手中斷,上家斷,下家應對提供服務,下家斷,上家立刻遷移資料備份位置 3.

上下家同時斷線:關鍵字發布者定時查詢自己發布的關鍵字是否海存在子啊系統中,如果不存在,重新發布,同時更新自己的對映位址,避免對映位址失效 4.

關鍵字擦除:下家負責擦除,搜尋者負責擦除(某個目標使用者不存在後向關鍵字儲存者報告資訊,讓關鍵字儲存者擦除)

系統規模估計 1.

2.熱門關鍵字導致系統中部分使用者過於繁忙,需要負載均衡 3.

不同使用者的計算能力與上下行頻寬差異巨大 4.

提供stun服務的**伺服器需要與客戶端保持握手關係負載能力會小很多

認識P2P,利用P2P

是peer to peer的縮寫 好象還看到過文章說是point to point,我也不清楚,網上的資料也不清楚,鬱悶 peer在英語裡有 地位 能力等 同等者 同事 和 夥伴 等意義。這樣一來,p2p也就可以理解為 夥伴對夥伴 的意思,或稱為對等聯網。目前人們認為其在加強網路上人的交流 檔案交換...

p2p之Tcp穿透路由Nat

終於解決了關於基於tcp的p2p的內網穿透問題 其實本該在去年就解決這個問題的,寫出來了,只是一直沒時間去驗證。這幾天重寫了一下。中國的網路基本是全是內網,通過路由的nat轉換 udp的p2p實現起來非常簡單。只是udp太不穩定了,如果網路快的情況下丟包太嚴重。所以一直想是否能通過tcp來代替udp...

P2P網路模型

1 靜態配置模型 靜態配置模型是一種相對靜態而簡單的對等點定位模型。在該模型中,每個對等點都確切地知道存在於其p2p 網路中其它對等點的位置以及它們所提供的共享資源內容。缺點 網路無法應付不能預知的隨機事件和臨時變更,比如對等點隨機進入和退出網路。優點 整個網路在外部攻擊面前表現得很穩固。2 動態配...