シンプルで軽量なメッセージパッシングを行うにはどのライブラリを使用できますか?
-
26-09-2019 - |
質問
分散ノード間の通信を必要とするプロジェクトを開始します(プロジェクトはC++です)。ノード間で非常に単純なメッセージ (基本的に単なるテキスト文字列) を渡すには、軽量のメッセージ受け渡しライブラリが必要です。ライブラリには次の特性が必要です。
外部セットアップは必要ありません。コード内ですべてを稼働できるようにする必要があります。ユーザーにパッケージのインストールや構成ファイルの編集を要求したくありません(IP アドレスと接続先のポートのリストを除く)。
ライブラリが使用する基礎となるプロトコルは TCP である必要があります (または、UDP の場合、ライブラリはメッセージの最終的な受信を保証する必要があります)。
ライブラリは、任意の大きな文字列 (最大 3GB 以上を想定) を送受信できなければなりません。
ライブラリは、セキュリティ メカニズム、フォールト トレランス、暗号化をサポートする必要はありません。必要なのは、高速で、シンプルで、使いやすいことだけです。MPI を検討しましたが、私のプロジェクトではユーザーのマシン上でのセットアップが多すぎると結論付けました。
このようなプロジェクトにはどのライブラリをお勧めしますか?自分で巻くこともできますが、時間の都合上、それは不可能だと思います。
解決
ØMQに、すなわちZeroMQます。
で見てみましょう他のヒント
Apache Qpid サーバーおよびクライアント ライブラリを実装します。 高度なメッセージ キュー プロトコル. 。多くの機能があり、次の機能を使用できます。
- クライアントはブローカーの IP/ポートを指定して、ブローカーに匿名で接続できます
- トランスポートプロトコル TCP または SCTP です
- サポートがあります プル スタイルまたはプッシュ スタイルのセマンティクスを使用する大きなメッセージ
- その 速い
- 使用方法は簡単で、C++ で使用できます。
- ブローカーを開始する (またはそのうちのいくつか、 連邦化された)
- クライアントとつながり、 列に並んで聞く
- クライアントとつながり、 キューに書き込む
私は、分散システムのための nanomsg のを使用しています。 のnanomsg のCで書かれた安定した、成熟した、よくサポートされている軽量メッセージングプロトコルライブラリである。
これは、すべての要件を満たします:
1) There is no external setup required
2) TCP underlying protocol is a primary one.
3) Message sizes supported by nanomsg are expressed as a 64-bit integer.
(The default message size is 1024kB. This can be easily changed by API call to
support any size. The maximum size is limited only by available addressable memory!)
考慮すべき他の良いライブラリは、 NNG のです。それは今ベタ段階にあります。