[ SOユーザー(10k SO +)の提案でここに移動]
ピアツーピアアプリケーションを開発したいのですが。私はLOBアプリで多くの経験を積んでいますが、P2Pアリーナは初めてです。
私は物事がどのように機能するかについて大まかな考えを持っていますが、私の理解を記入するためにいくつかの詳細が必要です。
私が知っている(信じる)必要なこと:
- かなりの割合のクライアントがインバウンド接続を有効にする必要がある(ala uPnP / NATルール)
- 特定のノードがダウンした場合に回復力を提供するために、ノードは他の既知のノードを共有する必要があります
- 任意のクライアント間でデータを送信するには、何らかの形式の同期/ルート検索が必要です
- 「ダム」クライアントとノードリストの同期/共有を処理し、メッセージをリレーするためのより強力な「スーパーノード」を区別するためのリソーススニッフィング
- インバウンドサポートのないクライアントは、接続するノードの情報を受信できるアウトバウンド接続を開いたままにする必要があります。
つまり、特定の中央サーバーへの接続に依存しないチャット/メッセンジャーサービスを(最初は)提供したいと思っています。物事を始めるには(または大幅なアップグレード後に)集中型の「スーパーノード」をいくつか用意する必要があると思いますが、機能するP2Pネットワークが確立されたら、これらはオプションにする必要があります。
私は多くの問題を見ることができ、それらに対処する方法がわかりません。主にどのように...
- 中央の権限を確認することなく、ユーザーを他のノードに認証する
- どのノードが他のどのノードについて知っているかを調整します(最小-最大数/レイテンシ別????)
- 特定のユーザーが別のユーザー(またはノード)がオンラインかどうかを判断できるようにする
- ノードの2つのグループが物理的に切断(エアギャップ)されている状況と、グループの再接続時に再同期する方法に対処する
- など
私はこれがかなり自由回答式の質問であることを知っているので、高レベルの設計パターンは高く評価されますが、私が本当に探しているのは、他の人がこれらの問題を処理する方法に関するまともなガイドです(そして私はまだ検討していません) )。
Webアプリケーションタグは意図的なものですか?もしそうなら、あなたの心の中で、何がp2p Webアプリを構成しますか?
—
svidgen 2013
@svidgen:群れがクラスター化されたWebホストである可能性があることは不合理ではありません。
—
Steven Evers 2013
@svidgen良いキャッチ、質問をもう少し大きくするつもりでしたが、気が変わってそのタグを削除する必要があります。ありがとう
—
基本
BitTorrentとDHT、およびそれらが使用する原理と技術を見てください。どちらも数十年の経験で、対処したい問題のほとんどに取り組んできました。これは本当に広すぎます。
—
CodeCaster 2013
@CodeCaster私はあなたが私をストーカーしていると思い始めています;)
—
基本的な