問題タブ [p2p]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - カスタム JXTA PeerGroup の概要
私は、開発中のピアツーピア コンピューティング プラットフォームのために、昨年ほどJXTA 2.3 を使用してきました。私はJXTA 2.5 に移行しており、その過程でJXTAの多くの使用をクリーンアップしようとしています。ほとんどの場合、私はただうまくいくという態度でJXTAにアプローチしました。これを使用して、ピアツーピア オーバーレイ ネットワークの作成と管理、および基本的な通信サービスの提供をすぐに始めました。とにかく2.5に移行するために変更を加えているので、よりJXTAの方法で使用したいと思います。
私の最初のステップは、カスタムの基本的な作成ですPeerGroup
。META-INF.services
Javaのインフラストラクチャを使用している新しいメカニズムがいくつか見られます。にGUIDをPeerGroup
付けて、関連する実装オブジェクトをここにリストする必要がありますか? 私が理解しているように、これを行うと、 GUIDと一致するスペック ID を持つグループが検出され、結合または作成されたときに、一致するオブジェクトが自動的に使用されるはずです。オブジェクトをグループに手動で関連付けることができるはずですが、この新しい方法を使用すると、管理がはるかに簡単になるようです。net.jxta.platform.Module
PeerGroup
META-INF
PeerGroup
このインフラストラクチャを実装に使用するための指針や例はありますか? また、META-INF.services
Java のメカニズムに関する一般的な情報も役立ちます。
networking - なぜピアツーピアプログラミングは良い研究を得るために難しいトピックなのですか?
Gnutellaやその他のP2Pネットワークがどのように機能するかについてもう少し読んだ後、私は独自のピアツーピアシステムを開始したいと思いました。適用できるチュートリアルや言語に依存しないガイドラインがたくさんあると思いましたが、漠然とした単純な概要に遭遇しました。
非常に小さくて正確なP2Pコードしか見つかりませんでしたが、すべてのユーザーでクライアント/サーバーアーキテクチャを使用する以上のことはしませんでしたが、これは私が探していたものではありませんでした。Gnutellaのようなものが欲しかったのですが、ネットワークに参加するための記事が公開されていないようです。
language-agnostic - ピアツーピア システム全体でアイテムを確実に、しかし最小限に配布する方法
クエリ可能なピア ツー ピア システムがある場合は、
- ネットワーク全体のクエリの総数を減らす (「人気のある」アイテムを広く配布し、「類似の」アイテムをまとめて配布することにより)
- 各ノードで余分なストレージを避ける
- クライアントのダウンタイム、ハードウェア障害、およびユーザーの離脱に直面して、中程度に希少なアイテムであっても良好な可用性を保証します (おそらく、アーキビスト/歴史家にとって希少なアイテムを検出します)
- ネットワーク パーティションが発生した場合にクエリが一致を見つけられないことを回避する
これらの要件を考えると:
- 標準的なアプローチはありますか?そうでない場合、尊敬されているが実験的な研究はありますか? 私は分散スキームに精通している人もいますが、ロバスト性の学習に実際に取り組んでいるものは見たことがありません。
- 明らかな基準がありませんか?
- この問題に取り組んだり、解決したりすることに興味のある人はいますか? (もしそうなら、私が今週末に一緒に投げた非常に不十分なシミュレーターの一部をオープンソースにして喜んで、一般的に役に立たないアドバイスを提供します)。
@cdv: 今ビデオを見ましたが、とても良いです。プラグイン可能な配布戦略に完全に到達しているとは思えませんが、90% は確実に達成されています。ただし、質問は、このアプローチとの有用な違いを強調しており、私のさらなる懸念のいくつかに対処し、フォローアップするための参考文献をいくつか提供してくれます。したがって、質問は未解決であると考えていますが、暫定的にあなたの回答を受け入れています。
networking - P2P アプリでの直接 TCP/IP 接続
ダイレクトコネクト!どのようなファイアウォールや NAT が配置されていても、Fog Creek Copilot があらゆるネットワーク状況で接続できるようにするために、私たちは常にできる限りのことを行ってきました。これを実現するために、両当事者は当社のサーバーへのアウトバウンド接続を確立し、サーバーが代わりにトラフィックを中継します。まあ、多くの場合、これは必要ありません。そのため、バージョン 2.0 はかなり賢いことを行います。サーバーを介して初期接続をセットアップするため、100% の信頼性ですぐに接続できます。しかし、接続が完了すると、バックグラウンドで静かに、直接接続する方法を探します。それができない場合は、大したことではありません。サーバーを介して中継し続けるだけです。直接ピアツーピア接続を確立できる場合は、データをサイレントに直接接続に移行します。
サーバー接続を P2P 接続に変更するにはどうすればよいですか?
theory - 分散ハッシュ テーブル (DHT) の簡単な基本的な説明
DHT がどのように機能するかについて説明できる人はいますか?
重すぎることはなく、基本的なことだけです。
.net - WCF ピア ツー ピア アプリケーションをインターネット経由で配布するにはどうすればよいですか?
誰かが私を正しい方向に向けることができますか? インターネット経由で WCF ピア ツー ピア クラウドを配布したいと考えています。これまで、同じサブネットでどのように機能するかの例を見てきました。もう少し追い込みたい。
file - P2P アプリケーション用にファイルを分割する
ファイル共有用のミドルウェア システムを実装する必要があり、さまざまなソースから別々の部分を同時に送受信する bittorrent と同じように、ファイルを分割する必要があります。それ、どうやったら出来るの?それはライブラリですか、それともファイル分割を自分で実装する必要がありますか?
networking - ピアツーピア システムでの共通の「ネットワーク チャネル」のネゴシエーション
ネットワーク内のピアノードが一意の「ネットワークチャネル」(またはその他の形式の半秘密識別子) を決定するための共通または確立されたアルゴリズムはありますか?
私が働いている環境はSecondLifeです。同じ種類のオブジェクトの他の既存のネットワークに干渉することなく、ネットワークを形成できるようにする「チャネル」番号に同意する多くの同一のピアスクリプトオブジェクトを取得する方法を見つけようとしています。
すべてのオブジェクトはほぼ同時にインスタンス化され、(共通の) システム時間にアクセスできます。
私が考えたアプローチ:
インスタンス化の時間ベース。チャネルは UNIX 時間から (md5 によって) 導出されます。問題は「ほぼ同時期」の部分。それらは、新しい秒のカスプでインスタンス化される場合があります。
ランダム待機。オブジェクトをランダムに待機させ、最初にウェイクするオブジェクトによって決定された (ランダムに生成された) チャネル番号をアナウンスします。問題は、システムの時間粒度が低く、アナウンスが処理される前に複数のオブジェクトが起動する可能性があることです。
1 と 2 を組み合わせます。ランダムな量を待った後に高解像度のタイムスタンプをアナウンスし、アナウンスされた最も低いタイムスタンプからチャネルを導き出します。
これは、私が考えていたよりも賢い人々でなければなりません。これを行うより良い方法はありますか?
p2p - ピアツーピア: ピアを見つける方法
専用の中央サーバーを使用せずにピアを見つける既知の方法はありますか?
つまり、インターネットへの接続を切断して再接続するが、毎回新しい IP アドレスを取得するピアがあり、登録する専用サーバーを設定せずにそれらに接続したい場合。
ピアの電子メール アドレスを使用して、接続されたピアのマニフェストを定期的に送信し、ある種のタイムコードを使用して、専用サーバーの必要性を否定することを考えていました。これは、以前に知られているすべてのピア アドレスを試した後、どのピアにも接続できなかった場合のフォールバックになります。しかし、ピアを見つける既存のモデルの方が望ましいでしょう。
p2p - Bittorrentを理解するための良い本/リソースをお探しですか?
Bittorrentがどのように機能するかを詳細に理解するための優れた本や技術リソースをお探しですか?おそらく、ネットワークプログラミング、P2Pプログラミング、およびその他のトピックに関する本が含まれるでしょう。