[P2P]TwitterのP2P化を考えてみる
□はじめに
自分の状態や短いコメントを表示させるTwitterが非常に人気である。国内でも「もぐもぐ」等のサービスが出現し、SNSのように多くの人に広がるのも時間の問題のように思える。しかしながら急激な参加人数の増加のためにTwitterが度々メンテナンスをしているのも事実である。
今、Twitterのようなサービスを「プレゼンス系サービス」と呼ぶ事にしよう。本エントリーではプレゼンス系サービスの技術的課題を考えるとともに、P2P化した場合のモデルについて提案してみたい。
□プレゼンス系サービスの技術
Twitterをはじめてみると、おや?と思う事がある。自分がブラウザをリロードせずとも友人の新しいプレゼンス情報が随時表示されるからである。
この手のサービスを実現するには以下の2つの技術を使う事が考えられる。
-Javascript等を使って定期的にプレゼンス情報をサーバから取得する。
-Comet等を使ってサーバがプッシュ的にプレゼンス情報を送信する。
両者ともに、サイト側にトラフィックと処理が継続的に発生することがわかる。ゆえにある程度参加者数が存在し且つプレゼンス情報の更新が頻繁な場合、高価なランニングコストが必要と考えられる。
□プレゼンス系サービスのP2P化を考える
トラフィックと処理の分散が得意なのがP2Pであるので、P2P化すると先ほどの課題が解決されることが期待される。そこでプレゼンス系サービスのP2P化を考えてみよう。
ここではDHTを使ってプレゼンス系サービスをP2P化してみる。
準備:
ノードIDをNode_ID、ハッシュ関数をHash()とする。またプレゼンス系サービスのユーザIDをTwitter_IDとし、Twitter_IDの友人のIDをTwitter_Friend_IDとする。
システム構築方法:
Twitter_IDのプレゼンス情報及び端末のIPアドレスはNode_ID=Hash(Twitter_ID)に格納する。またTwitter_IDの友達リスト、すなわちTwitter_Friend_IDもNode_IDに格納する。
シーケンス
[1]Twitter_IDの端末はDHTネットワークを使って新しいプレゼンス情報をNode_ID=Hash(Twitter_ID)に格納する。
[2]Node_ID=Hash(Twitter_ID)は自ノードに格納しているTwitter_Friend_IDを用いてNode_ID=Hash(Twitter_Friend_ID)にTwitter_IDのプレゼンス情報が更新されたことを知らせる。
[3]Node_IDHash(Twitter_Friend_ID)は自ノードに格納しているTwitter_Friend_IDのIPアドレスを使って、Twitter_Friend_IDの端末にTwitter_IDのプレゼンス情報を通知する。
以外に簡単に実現できそうである。ただし実際にはNAT越え、認証、データの改ざん防止等の処理が必要である。
プレゼンス系サービスをDHTで実現した場合の課題は情報取得の効率化である。lookupするノードや情報をgetするノードはほとんど変わらないので、特定ノードに対するIPアドレスを一定期間保有する等の仕組みが必要だろう。
□終わりに
プレゼンス系サービスにおけるP2P化の有効性とP2P化するためのモデルを考えてみた。個人的にはFireFoxのアドオン機能にこのP2P化したシステムが搭載すると、とてもスマートだと思っている。是非とも実装にチャレンジしてみて下さい。
| 固定リンク
「P2P」カテゴリの記事
- WebRTCを実現するためにSTUNだけでなくTURNも必要な理由(2015.01.08)
- [P2P]P2Pストリーミングのサーベイ文書について(2014.11.09)
- Winnyの開発者、金子 勇氏の急逝を悼んで(2013.07.07)
- 「分散ハッシュシステムでのNAT超えの考察」に対する質問について(2012.12.16)
- [P2P]Websocketでブラウザ間P2P通信は実現できるか?(その2)(2011.11.20)
この記事へのコメントは終了しました。
コメント