私の取引システムは二つの部分私は "株式取引"システムで共有メモリを使用して "市場データ受信"部分を分離する必要がありますか?
- 「UDP milticast市場データ受信」で構成されています - ちょうどUDPマルチキャスト何もないから、市場データを受信する(orderbooks、受注、最高入札/などを尋ねる)
- 「メインシステム」 - これらのシステムはかなり接続されているなどなど
を、市場データを使用して新規受注を計算し、注文を送る - 典型的なシナリオはそのようなものです:
- "UDP" -> "Main" Apple BID/ASK 500.1/500.2
- Main sends order № 1122 Apple BUY 555
- "UDP" -> "Main" Order № 1122 Executed
- Main send order № 1123 Apple SELL 505
- "UDP" -> "Main" Order №1123 Registered, Ammount 1, Executed 0, Left 1
"UDP"部分は "Main"が存在することを知らない。 "Main"は "UDP"を使用します
私は理論的に "Main"を実行せずに "UDP"自体を実行できるので、これらを別々のプロジェクトにしたいと考えています。または、私はいくつかの "メイン"インスタンスを実行することができます。
"UDP"は、他人が使用できる書き込み可能なストレージを生成する必要があります。
しかし、「メイン」と「UDP」はかなり接続されている - 彼らはQuotes
など
を表現するために同じクラスと同じ構造を使用して、私はまたもパフォーマンスのペナルティを持つことができない、もパフォーマンスは非常に重要である私が何かを必要とアプリケーション内にデータを格納するだけの速さです。
「共有メモリ」などの技術を使用するか、すべてを1つのプロジェクトで作成するのがよいでしょうか?
私の問題はかなり一般的ですが、異なる市場データアダプタの多くはすでに異なる企業によって書かれているので、いくつかの「デフォルト」の解決策があるはずです。
「オーバーヘッド」はどれくらいありますか?私は0.05msを支払うことができる – javapowered
私は誰もこれに答えを与えることができると信じています。パフォーマンスの問題は、現在のプログラムのコンテキストと強く結びついています。だから、これはあなた自身で把握しなければならないものです。 – Tigran
私は共有ファイルの "オーバーヘッド"を知っているべきだと思います – javapowered