分布式原理:P2P系統(tǒng)
時間:2023-04-30 00:39:01 | 來源:網(wǎng)站運營
時間:2023-04-30 00:39:01 來源:網(wǎng)站運營
分布式原理:P2P系統(tǒng):什么是P2P系統(tǒng)呢?就是由用戶自發(fā)組成的系統(tǒng),摒棄到了中央服務(wù)器。(self organized)
下面介紹幾種不同的p2p系統(tǒng),也算是這種模式的發(fā)展歷史了。
Napster:
簡單來說,就是有一個中央服務(wù)器存儲了所有file的信息,你想下載一個文件,先去找中央服務(wù)器去問從哪里下載,中央服務(wù)器會告訴你具體的位置,你去下載就可以。(類似于圖書館找書,需要一個系統(tǒng))
這是一個非常初級的p2p系統(tǒng),甚至都沒有去除中央服務(wù)器。也會有很多問題,比如用戶有防火墻而無法訪問,中央服務(wù)器崩了咋辦,里面混入fake msg或者是黑客咋辦
Gnutella:
這是一個完全的分布式的系統(tǒng),由用戶相互連接形成了overlay 的網(wǎng)絡(luò),這個系統(tǒng)的思想取自于‘世界上任何兩個人之間最多隔6層關(guān)系’。也就是說,我想要找一個資源,我就問我附近的人,然后我附近的人再問附近的人,以此類推,一直到我找到想要的資源。
看看問的時候的格式:
再看看回復(fù)的時候的格式:
那么就有一個問題,大家同時都在問,這個網(wǎng)絡(luò)必然會一直很繁忙,這是不可取的,所以我們需要avoid excessive traffic。
- 每個peer存著最近收到的消息,下次問的時候如果是一樣的直接給他
- 消息轉(zhuǎn)發(fā)給所有的鄰居,但別傳回自己這就行
- 每個query只轉(zhuǎn)發(fā)一次,根據(jù)descriptor ID
我們還是看出來了,其實這種系統(tǒng)會出現(xiàn)很多問題,
- 大部分的traffic都在搞ping pong
- 如果有一個node 的帶寬低,就會拉垮整條鏈路的帶寬,類似于我轉(zhuǎn)機去了個三線機場
- 有大部分摸魚的node (freeloader)
- 如果有人惡意搞這個系統(tǒng),就會出現(xiàn)大量惡意的信息
FaskTrack:
Hybrid between Gnutella and Napster選中healthy的node作為supernode,就像轉(zhuǎn)機時候的一線機場
supernode是帶寬高,性能好的node,把大部分的信息都保存在supernode上,這樣只需要咨詢它就可以拿到想要的信息。
BitTorrent:
就是我們常見的BT下載,它鼓勵peer互相分享自己的file,首先有一個人作為tracker,類似于napster,一個中央服務(wù)器,它保存了file blocks都在哪里,給你一個地址,你只需要找這些peer下載即可