DHTアプリケーション

http://d.hatena.ne.jp/syuu1228/20090425/1240621227

ニコニコ動画のキャッシュをP2Pで共有するソフト。
そういや前にもあったなぁ、とか思ってたけど、
localhostにプロキシ立てるっていうのはいいアイデアだなぁ。
まだ使ってない(大学的に無理かも)な上に
OpenChordも使ったことがないので的外れかもしれませんが、
一応、コメントを残させていただきます。

Load balancing

DHTは負荷分散します。綺麗に。
で、それがゆえに問題があって、例えば人気動画のkey-value
Churn頻度の高いノードが持ってしまう可能性があります。
もしくは貧弱なリソースによって運用されているノード。
そうなると、人気動画なのでキャッシュを使いたいのに使えないという状況に。
これはあんまりうれしくない。全体のChurn率が上がれば上がるほどこれはダイレクトに効いてきます。
# 全体の50%がChurn状態なら、URLの半分は使えない
逆に言うと、一日中PCを付けっぱなしにしている超優良ユーザに、全然keyが集まらない可能性とかもある。非常にもったいない。

Chord

Chordは何もしないと結構Churnに弱いはずです。
Kademliaの方がいいと思う。
まぁ、どちらにしろ首藤さんのOverlayWeaverという素晴らしい実装があるのでそちらを使ってみてわ?
で、それに絡んでkey-valueのキャッシュとかはどうやってるのかなぁ?と。
例えばノードAとノードBが動画Xのキャッシュを持っている場合って、
DHTにAがputした後にBがputすると上書きされるとか?
それともリストで持っている?
どちらにしろ、元の実装のOpenChordが何もしていないのなら、前述の問題によってキャッシュ丸ごとアクセスできなくなる可能性が。
ニコ動のキャッシュの数に比例してkey-valueのキャッシュも増やしていく方がいいと思うので、keyをURL&cacheNum=1とかしてみるのがいいのかも。

評価項目

実は一番重要だと思うのは、利用しているユーザの傾向を評価することじゃないかな、と思ってます。
ノードの総数の変化、生存時間分布、CPU・メモリ・ストレージなどの情報、利用傾向などなど。
そのあたりの実データは超重要なので、是非収集して公開(論文なりなんなり)してほしいです。

最後に

実はDHTによって実現できるアプリケーションって、DNSとそれに付随する何かぐらいだと思っていたので、今回の取り組みは非常におもしろいです。
是非頑張ってください。