P2P設計入門(1)

まず願うことは、
これから続けていきたいと願う一連のエントリ群が、この(1)で終わらない事。


それだけが、僕の、望みです。


いまのとこのね!

やりたいこと

出来るかどうかは知らん。

P2Pネットワークを利用したpaintchat
  • ∞×∞の描画領域に∞ノードが参加できるようなものが欲しい!みんなで無限に絵を描こう
    • ログインサーバーは何かうざいから、起動したらどっかにつながるような感じにしたいな
      • 初期ノードが必要なのと近傍のノードのIP貰ったりしてネットワークを保持しないとまずい・・・
    • トポロジーの作り方と描画領域中のノードの位置の関係性が必要だと思う
      • ここら辺うまくやらないと、巨大なスター型ネットワークになってトラフィックがアホ
      • トラフィックがアホになる理由で局所的に∞のノードを集めることは不可能そう
      • そこらへんのバランスを考えて局所ネットワーク(島)を渡り歩くような感じにしたいが・・・
      • 問題は「現在の自分の描画領域中の位置とその近くに居るノードがネットワーク的に接続する」必要があるから、描画領域中で近くに居る、ってことが分かるような仕組みにしないといけないけど、P2Pのみでは難しいかな<<これが仕組みのキモっぽい
      • mmoの分散サーバー(エリア分割)方式思い出したけど、それは目的から離れてるよ!
      • ログインサーバーがクラスタ名で初期位置を与えてやれれば配置はうまくできそうかも?でも描画位置接続問題は解決しない
      • ノードから切断は簡単にできるけど、ノードへの接続をどうするのかだな・・・
      • あと動的にトポロジー変化しちゃうけど大丈夫かな・・・すぐlogoutされたら破壊されるかもしれん
      • 多分メインノードとサブノードと他、みたいな上流中流下流で分散して領域データ保持するトポロジーをくむ
    • 見えてる範囲の領域データ(範囲内のストロークデータ)を責任もって保持する?
      • 初期位置にみんな集まって分散されなそう?<これは困るが、描く人は空き領域に絶対いく必要があるので自然に分散して何とかなる?
      • 領域の多重化が必要。描けないnull領域とかは困る(見えてる範囲保持なら保証されているのでおk?)
      • 人の領域見てまた自分のところに戻ってきたいので、視界だけ保持だと絵ログが保存されない?
      • 領域に賞味期限と、鮮度の設定?だれもその領域更新しないと自分が責任を持つ
      • 責任領域が莫大に増えてしまうかもしれない(ストロークデータが全くない領域は保持しないとか領域ロック機能とか)
      • ネットワーク内に誰も領域を保持していない領域が出たら完全に初期化されてしまう・・・
      • ノードが居なくなったら即初期化は寂しいので少しの間残るようなものが欲しいが・・・(領域キャッシュ機能)
      • 嵐対策はしらん。
    • クラスタワード検索で絵ネタの近い集団に飛んでいきたい
  • データに関して
    • ストロークデータを扱うだけなので比較的データ量は少ない?
      • と思ったけど、領域を保存するなら表示分のストロークデータ保持しないといけない(過去からさかのぼって)のでデータ量爆発
      • データ量を少なくするような方式にしないといけない
      • 差分送信のパターンと過去からの全データ送信パターンが必要(一度受け取れば差分だけのストロークで良い)
      • とすると、自分の保持している領域の鮮度レベル(キャッシュの最終更新に知事)によって、最新の領域までの差分を受け取れば良い
      • 大量に新規参入者居る場合同期がきついかも(トポロジー次第だけど)
    • リアルタイム性はそれほど大きくなくてよい?
      • 近傍のノードに領域更新ストロークデータをブロードキャストするか、各ノードが一定時間したら周りに問い合わせるか・・・
    • 同期は厳密に
      • 描いてあるところに(白紙化と勘違いして)描いてしまうとかいうアホなことはだめ。
      • 受信完了前の「一時的に描けない領域」が必要になってくる。
  • nodeのランク分けも必要かも
    • rom,新しい人,やや古い人(サブノード),古い人(メインノード)<<上流とかの考え

うーん

結局(ピュア)P2Pってサーバーを介さないで保持されるネットワークのことなのかな?
言葉尻しか良く分かってないや。


あと考えたらお絵ちゃによくあるチャットサーバーの話はまた別だな!色々やばいw
とりあえずデータ量削減とかは良いんで、
キモっぽい部分の「全描画領域中の自分の座標と座標移動によるノードの接続関係の移り変わり」
をどう実現するかを考える必要があるので考えてみます。
こりゃピュアP2Pでは無理かもなあ。