UUUMエンジニアブログ

UUUMのエンジニアによる技術ブログです

P2Pネットワークについて

エンジニアのspin13です. 今回はP2Pネットワークについて(主にファイル共有ですが)

P2Pネットワークとは

サーバとクライアントがそれぞれデータのやり取りを行なうクライアントサーバモデルと違って,ピア(ノード)同士でデータのやり取りを行なうネットワークです.
言葉で説明してもわかりづらいと思うのでスライドの図を見ていただけるとわかりやすいはず...

特徴

高い耐障害性

(基本的には)サーバを持たないので,あるノードが死んでも他のノード同士でネットワークを維持できるので耐障害性が高い.

高いスケーラビリティ

ノード同士は対等なので,どれかのノードに負荷が集中することが起こりづらく,処理が分散されるので高いスケーラビリティを持つ.

ネットワークの管理がしづらい

どのノードがどのノードとどんな通信をしているのかが把握し辛いので管理することが難しい.
どのノードがどのコンテンツを持っているかの所在(インデックス情報)の検索が難しい.


ファイル共有

P2Pネットワークというと一般的にはファイル共有がよく知られている.
インデックス情報をどう持つかで,大まかに以下の3つのモデルに分類される.
・ピュア型
・ハイブリッド型
・スーパノード型

ピュア型以外はインデックス情報をサーバやアクテイブ率の高いノードに集中して持たせるモデルとなっている.

DHT

P2Pネットワークにおいて,コンテンツの所在(どのノードが持っているか)を示すインデックス情報の検索は大きな課題と言える.
これを解決する手段としてDistributed Hash Table(分散ハッシュテーブル)がある.

DHTは,ノードたちが分散してそれぞれが担当するインデックス情報(のグループ)を持つという考え方で,各ノードは自分の持っているインデックス情報の他に,次のインデックス情報(のグループ)を持っているノードの所在地を知っている.
次のノードの次のノードの次のノード.... というように又聞きしてもらうことによって目的のコンテンツの所在地を知ることができるという方式である.




ファイル共有ソフトの著作権違反やトラフィックの増加等の問題により,悪名が轟いているイメージがあるが,技術としては可能性のあるものだと思っている.

www.wantedly.com