2012-03-05 14 views
7

私はRabbitMQを通してメッセージ転送を高速化する方法を考えています。RabbitMQの転送速度が向上しますか?

私はまた、パブリッシュおよびC#実装を通じてへ/から消費した上で、私のローカルマシン上でサーバを実行して、Windowsの64ビットの最新バージョンをインストールしました。私は当初は印象的でしたが、私のニーズに合わない40,000メッセージ/秒を超えました(私は秒当たり2400万の未解析の16バイトの大きなバイト配列を処理できるカスタムバイナリリーダーと競合します。私は少なくとも改善することを試みる)。私は可能な限り速く約115,000,000のメッセージを送る必要があります。私はデータを持続させたくなく、接続は単一の消費者に直接つながるでしょう。私はその後、16bバイトの配列のチャンクを構築し、改善せずにバスに公開しました。転送速度は45mb /秒を超えました。私はこれが非常に遅いという事実を考えれば、最終的には生の伝送速度に沸騰するはずです。なぜなら、エクスチェンジによるルーティングの効率化率が生の伝送速度に対して無視できる数メガバイトのバイト配列を作成できるからです。なぜ私のメッセージバスは45mb /秒の転送速度で最大になりますか?

+0

消費者が1人だけの場合、TCP経由で直接送信しないでください。本当にメッセージバスが必要です。 –

+0

これらのテスト中にIO(ネットワーク、ディスク)とCPUはどのように見えますか? – Xailor

+0

おそらく、あなたはrabbitmqの代わりにzeromqを見るべきでしょう。あなたの仕事は0mqに適しているようです。少なくとも、彼らはそのメッセージサイズ(16バイト)で約3,000,000メッセージ/秒を要求します。 http://www.zeromq.org/results:0mq-tests-v03 –

答えて

1

バンプ...と更新:長い時間でこの質問への答えを見ていません。 RabbitMQとZeroMQで広範囲に演奏しました。私は、RabbitMQがハイスループットのインプロセス・メッセージング・ソリューションを検討しているときには、このタスクに対応していないと判断しました。ブローカの実装、特に解析ロジックは、スループットを向上させるための大きなボトルネックです。私は可能なオプションのリストからRabbitMQを落としました。

低遅延、高スループットの金融データストリームを管理するソリューションを提供する方法を説明したホワイトペーパーがありましたが、低レイテンシを目標とするソリューションを提供するのではなく、ハイスループット要件。私はより集中文書を研究した後

ZeroMQは、すばらしい仕事をしてくれました。私は、プロセス内の通信を実行することができ、それは十分なプッシュ/プル、パブ/サブ、req/rep、および必要なペア/ペアパターンを安定して提供します。私はZeroMQが提供していないpub/subパターン内のブロックロジックを探していました(高いウォーターマークが超過したときにメッセージをドロップします)が、プッシュ/プルパターンはブロッキングを提供します。だから、私が必要としていたものはほとんどすべてが提供されています。私が持っている唯一の悩みは、イベント処理を理解していることです。ポーリング/マルチプレックスによるイベント構造の実装はあまり満足できるものではありません。

関連する問題