1

現在、私は高頻度取引のユースケースについてアーロンを評価している最中です。ドキュメントからわかるように、Aeron は基本的にトランスポートです。競合する消費者、公正なディスパッチ、または RabbitMQ と同様のパターンなどのより高いレベルの実装ですか?

ありがとう

4

2 に答える 2

1

いいえ。競合する消費者は、取引アプリケーションには適用されません。実際、私は多くのトレーディング アプリケーションが同様のパターン (つまり SEDA フレームワーク) を適応させようとしているのを見てきましたが、それはスケーリングせず、同時実行性の問題でさらに謎に包まれています。

競合するコンシューマーが機能するために、タスクは独立しており、並行して実行できます。取引アプリケーションでは、注文は 1 つの時点で1 つのイベントしか処理できないため、これを行うことはできません。私たちは通常、問題を逆にして、特定の順序にスレッド アフィニティを持ち、各イベントが同じスレッドによって処理されるようにします。これにより、順次処理が実現します。

IMO - Aeron、24West LBM が提供するのは、高速で順序付けられた/順序付けられたイベント配信です。信頼できるモード (LBM - UME および Aeron クラスター) で実行して、取引を失うことのないようにしたいと考えています。マルチキャストは非常に効率的です。一度書き込むと、どこでも消費します。重要でないプロセスをオフロードできるため、このパターンは取引システムに適用できます。これは「共有メモリ」で実現できますが、単一の物理サーバーに制限されます。aeron は共有メモリをリアルタイムで複製していると考えてよいでしょう。

さらに、物理的な境界に出くわします。サーバー内のスレッド アフィニティと同じパターンで、注文を特定のサーバーに送信するために「ロード バランサー」を使用する必要があることがよくあります。具体的な例として、オプション市場のデータ量が非常に多いため、市場データの処理/消費を制限したいとします。したがって、関連するシンボルの注文を同じ物理サーバーで処理する必要があります。

于 2020-08-24T22:36:40.800 に答える