1

私は現在、分散コンピューティングを使用してさまざまなイベントを検出するソフトウェアの開発に携わっています。

現在のアプローチは次のとおりです。多数のスレッドが異なる(物理的な)コンピューターで同時に実行されています。各イベントには番号が割り当てられています。そして、すべてのスレッドは、検出されたイベントを他のスレッドにブロードキャストし、着信ストリームから関連するイベントをフィルタリングします。

見た目がひどく、メンテナンスが難しく、システムをアップグレードするときにパフォーマンスの問題が発生する可能性があるため、非常に悪いと感じています。

したがって、このIPCを処理するための柔軟でエレガントな方法を探しています。Boost::Signalsは良い候補のようです。でも使ったことがないので、ネットワーク通信のカプセル化が可能かどうか知りたいです。

4

2 に答える 2

1

それを実行するソリューションがわからないので、Open MPI以外に、それを実行する必要がある場合は、最初にメッセージコンテナとしてGoogleのProtocolBufferを使用します。これを使用すると、source、dest、type、idなどを含む抽象的なベースメッセージを作成できます。次に、Boost ASIOを使用してネットワーク全体に、またはローカルメッセージの名前付きパイプ/ループバックを介してそれらを配布します。たぶん、各物理コンピューターでは、配布のためだけに専用のプロセスが実行されている可能性があります。各スレッドは、関心のあるメッセージのタイプと、名前付きパイプの名前を登録します。このプロセスは、他のすべてのサービスのIPを認識します。

于 2010-08-06T12:43:30.980 に答える
0

ネットワーク経由で IPC が必要な場合、boost::signals は役に立ちません。少なくとも、それだけでは役に立ちません。

Open MPIを使用してみてください。

于 2010-08-05T15:48:49.643 に答える