2011-12-03 13 views
1

最近、私はすでに知っていたBoostと一緒に、POCOとACEネットワーキングフレームワークに出会った。C/C++高周波メッセージングプログラム

私の質問は、バークレーソケットを持つ普通のCプログラムだけでなく、メッセージを渡すためにこれらのライブラリが速いのですか?これらのライブラリは、マルチスレッドなどの機能を追加するだけで人気があります。これはパフォーマンスの向上に役立ちますか?

私はLinux上で高性能メッセージングシステムを書こうと思っていますが、ACE、POCO、Boostを避けて、代わりにLinuxスレッドのOS機能をバークレーソケットとともに使用するとうまくいかないのですか?

言い換えれば、私はジェネリックコードを気にかけず、自分のコードを "STLフレンドリー"なものにしています。

答えて

1

まだ0MQ (aka ZeroMQ)を見ましたか?彼らのウェブサイトからの引用:

ØMQ \zeromq\: 
 Ø  The socket library that acts as a concurrency framework. 
 Ø  Faster than TCP, for clustered products and supercomputing. 
 Ø  Carries messages across inproc, IPC, TCP, and multicast. 
 Ø  Connect N-to-N via fanout, pubsub, pipeline, request-reply. 
 Ø  Asynch I/O for scalable multicore message-passing apps. 
 Ø  Large and active open source community. 
 Ø  30+ languages including C, C++, Java, .NET, Python. 
 Ø  Most OSes including Linux, Windows, OS X. 
 Ø  LGPL free software with full commercial support from iMatix. 
+0

こんにちは、ありがとうございます。私は以前これについて聞いていない! – user997112

+0

それはかなりきちんとしています、私はそれを数年続けてきました。以前のバージョンでは、2台のマシンのスループットテストを例として使用していましたが、それは取り下げられている可能性があります。彼らのサイトにも数多くのホワイトペーパーがあります。それはすでにいくつかの場所/プロジェクトで使用されています。 –

+0

ねえ、ダーク、奇妙なことに、あなたはアーキテクチャについて多くを知っていますか?私は基本的なCアーキテクチャでなければならないと考えていますか? – user997112

0

あなたのユースケースについて多くを共有することなく多くのことを求めています。あなたが書いていることから、ネットワークに接続されたマシン間でメッセージングをする必要があるようです。それはすべてピアツーピアか、またはいくつかのマシン "サーバー"、および他のクライアントですか? ACEのようなライブラリは、あらゆるタイプのソケット通信とマルチスレッド、包括的に考えられるあらゆるモデルを使用した完全なサーバまで、簡単なコンビニエンスクラスからすべてを提供します。

何らかの種類のサーバーが必要であると仮定すると、スレッド化する必要があるかどうか、または単一スレッドの非同期化に関する全面的な議論があります。もう一度、ユースケースに応じて、いずれかが他のものより「良い」(実際にあなたが何をする必要があるかに依存します)。

ネットワークの部分では、信頼性の高い順序付けされたメッセージが必要ですか、パケットが失われたことを検出できるまでに各メッセージが廃止されていますか?信頼性のためには、通常はTCPの上に構築しますが、何をする必要があるかによって、UDP上でより高速に実行されるプロトコルを設計することができます。

要件が本当にシンプルで基本的なものではない場合、および/またはネットワーク化されたマルチスレッドコードをたくさん書いたことがある場合は、自分ですべてを再開発しようとするよりも、

+0

謝罪、私は自分自身を教えるためにこれをやっています。私は、別の2つの異なるマシンから送信された1秒あたりに受信できるメッセージの数をベンチマークするマシンを用意しました。 – user997112

+0

注文に関して、私は確信していません:FIX(http://en.wikipedia.org/wiki/Financial_Information_eXchange)メッセージを送ろうとしています。私の目的は、毎秒最も多くのFIXメッセージをキャプチャできるさまざまなシステムを試すことです。私は電子商取引をシミュレートしているので、紛失した場合には気をつけますので、TCPでしょうか? – user997112

+0

まだ、受信したメッセージで何をする必要があるかを把握する必要があります。これはおそらく、あなたの設定に適したアーキテクチャを指示するでしょう。たくさんのTCPパケットを受信する必要があるだけの場合は、非同期シングルスレッドはおそらくほとんどの速度を提供しますが、一度それらのパケットで処理する必要があると、画像はあまり明確になりません。 –

関連する問題