広大なファイル共有P2P空間(WinMX,Winny,Freenet,Gnutella,etc…)をWebスペースにできないか?
実現方法のアイデア
1.apacheのモジュールとしてlibp2p を作成
2.*.p2p という拡張子を libp2pに処理させる
3.*.p2p は、ファイルの入手方法を記述しておく
記述内容は、 p2pネットワークの種類、ファイルの特定手段、p2pクライアントの動いているマシン等
4.libp2pは、*.p2pの内容にしたがってファイルを入手しリクエストに対し返答
このように作っておけば、Webスペースとして公開する固定ページ用容量は
最小限に抑えられて、しかもページを見る側には特別なクライアントも要らない。
Webサーバ上で、P2Pクライアントを動かすのは負荷が高いので実際は
P2Pネット毎に別マシンを立ててやるのがいいだろう。
実現のための技術的考察
・マシンAでWebサーバ、マシンBでP2Pクライアントを動かす
・マシンAからマシンBのディレクトリを見えるようにしておく(samba,nfs,etc…)
・マシンAから見えるBのディレクトリは、P2Pクライアントのダウンロード先
・マシンBでP2Pのファイルダウンロードをリクエストするクライアントを走らせる(自作の必要あり)
このクライアントは、リクエストされたファイルをファイル識別子名に変更する働きもする
・同時にダウンロードファイルでマシンBが溢れないように適時ファイルを消すクライアントも動かす
・マシンAでリクエストを受けたlibp2pは*.p2p内のファイル識別子を読み取りマシンBで
ダウンロードするようリクエスト。ただし既にファイルが存在していた場合はリクエスト無
(ファイル名はファイル識別子と一致する必要あり?)
・ダウンロードされたファイルをHTTPの返答として返す
・一定時間内に落ちてこなかった場合は、タイムアウトとして処理
無作為にP2Pネットワーク上のファイルをダウンロードできる仕組み
だと、ダウンロード済みファイルが溢れる頻度が高くなり結局リクエストが
タイムアウトになる率が高いかもしれないが、*.p2pファイル内で指定された
ファイルのみに限定すれば、よく使われるファイルのみキャッシュされる形になり
うまく回るんではないだろうか?
ということを考えてみる今日このごろ。
コメントを残す