Peer-To-Peer Networks
P2P network
介紹

- 對等式網路,又稱對等技術,依靠使用者群(peers)交換資訊的網際網路體系
- 目標就是讓所有的客戶端都能提供資源,包括頻寬,儲存空間和計算能力。因此,當有節點加入且對系統請求增多,整個系統的容量也增大。這是具有一組固定伺服器的Client-Server結構不能實現的,因為在上述這種結構中,客戶端的增加意味著所有使用者更慢的資料傳輸。
- 根據中央化程度,可以區分為一般型P2P、特殊型P2P與混合型P2P,使用一般型P2P技術的網路系統有比特幣、Gnutella或自由網等。
好處
- 不會因為單點故障就導致整體服務無法運作
- 不會讓單點遇到效能瓶頸
Gossip Protocol
簡介
- 又稱作 epidemic protocol,是 P2P network 的核心技術
- Gossip protocol 的實際應用如 Cassandra / Redis Cluster / Consul 等集群架構
- consul 用於管理 membership 與傳播消息,有興趣可點這邊
- 廣度優先遍歷(Breadth-First Search, BFS)
- 假設 A 得到某些資訊,更新了自身的資訊,A 需要將資訊告訴 B、C 等,然後 B、C 告訴其他的 D、E、F、G,一直遍歷。如果節點 B 收到 A 的消息,發現自己早就知道這個消息就直接忽略,從而可以防止圖重複遍歷。
執行過程
- Gossip 過程是異步的,也就是說發消息的節點不會關注對方是否收到,即不等待響應;不管對方有沒有收到,它都會每隔1 秒向周圍節點發消息

通信模式
- Push:
- 節點 A 將數據 (key,value,version) 及對應的版本號推送給節點 B,節點 B 更新 A 中比自己新的數據
- Pull:
- A 僅將數據 key, version 推送給 B,B 將本地比 A 新的數據(Key, value, version)推送給 A,A 更新本地
- 對 A 來說是 pull
- Push/Pull:
- 與 Pull 類似,步驟上多一步,A 再將本地比 B 新的數據推送給 B,B 則更新本地
- 收斂速度最快,收斂速度是指所有節點的資訊達到一致的速度
優點
- 擴展性 (scalability)
- 允許任意節點的增加和減少
- 容錯 (Fault tolerance)
- 任何節點的故障和重啟都不會影響 Gossip 消息的傳播
- 去中心化 (decentralization)
- 所有節點都可以是對等的,任何一個節點無需知道整個狀況,只要網路相通,任意一個節點就可以把消息散播到全網
- 一致性收斂
- 消息會以一傳十、十傳百一樣的指數級速度在網路中快速傳播,因此系統狀態的不一致可以在很快的時間內收斂到一致
- 簡易實現
缺點
- latency
- 節點只會隨機向少數幾個節點發送消息,消息最終是通過多個輪次的散播而到達全網
- 消息冗餘
- 節點會定期隨機選擇周圍節點發送消息,而收到消息的節點也會重複該步驟,因此就不可避免的存在消息重複發送給同一節點的情況,造成了消息的冗餘,同時也增加了收到消息的節點的處理壓力。
- 由於是定期發送,即使收到了消息的節點還會反複收到重複消息,加重了消息的冗餘。
參考資料 👐
- 對等網路 - 维基百科,自由的百科全书
- Day20|P2P網路(1):P2P網路基礎知識 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天
- Gossip Protocol 介紹 (上) - 從 Cassandra 內部實作認識 Gossip Protocol 的使用
- P2P 网络核心技术:Gossip 协议
🍀 若喜歡我的分享,可以幫我拍拍手👏,是對我最大的鼓勵