7

ZeroC ICE は 0MQ と比べてどうですか? 0MQ/Crossroads と DDS が非常に似ていることは知っていますが、ICE の出番がわかりません。

プロジェクトの最初のフェーズとして、リアルタイムの市場データを C++ から C# にオフロードするシステムを迅速に実装する必要があります。次のフェーズは、基礎となる Pub/Sub 設計を使用してイベント ベースのアーキテクチャを実装することです。

私は TCP を使用したいと考えています..しかし、システムは現在、単一の 24 コア サーバーで実行されています..そのため、IPC オプションが適しています。私が理解していることから、ICEはTCPのみですが、DDSと0mqにはIPCオプションがあります。

現在、私はICEまたはCrossroads IOでProtobufを使用することに傾いています。OpenSplice DDS Web サイトからオフにしました。私はさまざまなオプションについて多くの調査を行いましたが、当初は OpenMPI + boost:mpi を検討していましたが、.NET 用の MPI はないようです。

私の質問は:

ICE は 0MQ と比べてどうですか? 私はこれについて頭を包むことはできません。2つを比較するものをオンラインで見つけることができませんでした。

前もって感謝します。

........ 私のプロジェクトの詳細:

現在 Windows で CMAKE C++ を使用していますが、いずれ CentOS に移行する予定です。追加の望ましい機能は、tic データとすべてのメッセージを Hbase/Hadoop または HDF5 などの「NoSql」データベースに格納することです。これらのミドルウェア/メッセージング/pub-sub ライブラリのいずれかで、データベースが統合されていますか?

4

4 に答える 4

8

ZeroC についてのいくつかの考え: 非常に高速です。複数のエンドポイントを持つことができます。エンドポイントで負荷を分散できます。ノードの 1 つがダウンした場合に、別のエンドポイントに再接続できます。これはエンド ユーザーには透過的です。優れたツール チェーン (IceGrid、IceStorm、IceBox など) があります。分散型、高可用性、複数のフェイルオーバーなど

それとは別に、クライアントに複数のエンドポイントを持つプロキシを作成させ、後で各エンドポイントをダウンさせて 1 つずつ迅速にアップグレードすることで、コード モジュール (Erlang に似たもの) のホット スワップに使用しました。別のエンドポイントへの透過的な再試行により、アップグレード中ずっとシステムを稼働させることができました。これが宣伝されている機能なのか、宣伝されていない副作用なのかはわかりません:)

全体として、ZeroC Ice を使用する必要がある場合、サーバーをスケールアウトするのは非常に簡単です。

ZeroMQ が優れたツールとメッセージング パターンのセットを提供することは知っているので、自分のお気に入りのプロジェクトに使い続けたいと思います。ただし、私が見ている問題は、非常に簡単に行き過ぎて、すべての分散コンポーネントを見失うことです。これは、分散環境では必須です。アップグレードが必要な場合、クライアント/サーバーがどこにあるかをどのように知ることができますか? チェーンの下流にあるコンポーネントの 1 つがメッセージを受信しない場合、問題の場所を特定する方法は? 出版社?クライアント?またはその間のブリッジ(REP / REQ、XREP / XREQなど)のいずれか?

全体として、ZeroC はエンタープライズ ソリューション向けのはるかに優れたツールセットとエコシステムを提供します。

そして、それはオープンソースです:)

于 2013-01-30T11:04:32.090 に答える
7

ジェイブニー、

ZMQ: 本当に優れたパフォーマンスが必要で、ジョブのフェーズ 1 の唯一のジョブが C++ から C# にデータを移動することである場合、Zmq が最適なオプションです。イベント ドリブン アーキテクチャの pub/sub モデルを持つことも、組み込みのメッセージング パターンを使用して Zmq が支援できるものです。この場合、Zmq は IPC 要件もサポートします。例: マルチスレッド化と IPC 経由の通信により、24 コアを消費するアプリケーションのインスタンスを 1 つ持つことができます。

ZeroC Ice: Ice は、CORBA によく似た RPC フレームワークです。

例えば。Socket/ZMQ - ネットワーク経由でメッセージを送信します。反対側でそれを読んだり、メッセージを解析したり、何らかのアクションを実行したりします。 ZeroC Ice - クライアントとサーバー間の契約を作成します。コントラクトは、クラスのテンプレートにすぎません。これで、クライアントはそのクラスのプロキシ メソッドを呼び出し、サーバーはそれを実装/アクションして値を返します。したがって、int result = mathClass.Add(10,20) はクライアントが呼び出すものです。メソッド、パラメーターなどはマーシャリングされてサーバーに送信され、サーバーは Add メソッドを実装して結果を返し、クライアントは結果として 30 を取得します。したがって、クライアント側では、API はリモート ホストで実行されているサーバントのプロキシにすぎません。

結論: ZeroC ICE には、非常に優れた優れたエンタープライズ機能がいくつかあります。ただし、プロジェクトの要件に関しては、ZMQ が適切なツールです。

お役に立てれば。

于 2012-08-30T06:55:47.190 に答える
1

私にとって..正解は Crossroads I/O でした。それは私が必要とするすべてを行います..しかし、protobufsを使用する場合はまだ発行/サブスクライブできません.ZeroC ICEは分散IPCに最適ですが、0MQ/Crossroadsはスレッド間通信を使用するための追加の柔軟性を提供します.

注: Windows では、0mq には IPC がありません。

したがって、全体として、0mq のクロスロード フォークが最適です。ただし、独自の windows/ipc (または tcp::127.. を使用) と、pub/sub 用のパブリッシャー側のトピック フィルタリング機能を展開する必要があります。

于 2012-10-23T21:54:36.243 に答える