1

計算負荷の高いローカル処理を実行するプログラムがあります。計算パッケージには 16MiB の入力バッファーがあり、10KB から 16MiB の出力を生成します。これはすべて、マルチスレッド環境で発生します。

コンピューティング バウンドのユーザーが多数います。ピアツーピア マルチプロセッシングのサポートを追加することに関心があります。つまり、クライアントは組織内の複数のコンピューターで実行されます。マスターは利用可能なクライアントを見つけて、16MiB のバッファを送信し、結果を取得します。

マスターには、利用可能なクライアントのリストがあります。次に、各クライアントに無料であるというメッセージを送信します。クライアントは、所有するコアごとにスレッドを開始します。各スレッドは、マスターに作業バッファーを要求し、結果を計算してから、結果をマスターに送信します。マスターは、各クライアントからの結果を最終出力に組み込みます。

典型的な実行には、100 ~ 50,000 の 16MiB バッファーの処理が含まれます。通常、出力は 100MB から 10GB の範囲です。バッファ間にデータの依存関係はありません。

クライアントとサーバー間の通信を調整する最良の方法を探しています。私の計画は、ある種の RPC を使用することです。クライアントにもサーバーにも Web サーバーを組み込みたくありません。代わりに、私の計画は、単純に TCP ソケットで接続を受信し、ある種の基本的な RPC を持つことです。

私が検討しているオプションは次のとおりです。

  1. 独自のクライアント/サーバー システムの役割を果たし、プロトコル バッファーを使用して全体をまとめることができます。
  2. 既存のRPC システムの 1 つを potocol バッファーに使用できます。
  3. Web サーバーを組み込み、XMLRPC を使用することができました。

実装言語は C++ です。このプログラムは、Linux、MacOS 用にコンパイルされ、Windows 用の mingw でコンパイルされます。

ありがとう。

4

1 に答える 1

0

0MQが基準を満たしていることがわかりました。

于 2013-09-11T02:21:52.943 に答える