2

LMAX Disruptor についての私の理解では、LMAX Disruptorは、(正しく使用された場合) 毎秒 2000 万メッセージのスループットを可能にする恐ろしく高速で恐ろしい並行 Java コードでいっぱいの JAR であるということです。

現在、1 秒あたり 400 メッセージのオーダーで、必要なものに対して遅い ActiveMQ インスタンスがあります。LMAX を使用するようにコードをリファクタリングすることでメリットがあるかどうか疑問に思っていますが、次の懸念があります。

  • 1 つのパブリッシャーと複数の (競合する) コンシューマーを持つ方法
  • LMAX はメッセージをどのように保存/保管しますか? 記憶に?
  • フェイルオーバー - LMAX にはフェイルオーバー プロトコル/メカニズムが用意されていますか?
  • ディスク I/O - LMAX は未使用のメッセージをディスクに保持し、後でそれらを回復できますか?

そして、私がこれらすべてに完全に的外れで、LMAX ディスラプターの使用を完全に誤解しているように見える場合、誰かがそれがいつ使用されるかの具体例を提供できますか? 前もって感謝します!

4

1 に答える 1

8

ディスラプターは、クロスプロセスまたはクロスサーバーのメッセージング システムを直接置き換えるものではありません。これは、プロセス内クロススレッド メッセージング システムとして設計されています。通常はスレッド間にキューがある処理スレッド間の依存関係のグラフを置き換えるのに役立つと考えてください。これは、スレッド間のパイプラインまたはマルチキャスト パターンを使用する設計に役立ちます。ActiveMQ は別の目的を果たします。

Disruptor ベースのシステム内のスレッドは、Disruptor を介してイベントを渡すことによって通信する、寿命の長いアクタに似ています。

いくつかの良い例については、ソース コードで利用できるパフォーマンス テストを参照してください。

于 2013-03-30T13:21:40.627 に答える