Financial System
Build FX systems with a processing speed of 2 milliseconds
「外国為替証拠金取引市場(FX)」における売買システムを構築。売買システムはメモリ上でトランザクションを処理し、その結果を非同期でデータベースに書き込むという「オンメモリ型アーキテクチャ」を活用。
注文受付・約定を合わせて2ミリ秒でこなす超高速処理を実現しました。
このシステムは、サービス開始から1年以上稼働した今も一度のトラブルもなく安定して稼働しています。
Research Achievements
開発者コメント
Comment
メモリデータ構造の設計
高品質・高性能な業務アプリケーションを実現する鍵は、データ構造の 設計にあると言っても過言ではありません。
かと言って、何か新奇なものがあるわけではなく、配列、リスト、キュー、ハッシュ、2分探索など教科書に出てくるような基本的なデータ構造やアルゴリズムを組み合わせて、最適な構造を組み上げます。 FXシステムでは、注文の受付・付合せ・約定結果の配信という一連の処理が ひたすら繰り返されます。これらの処理をメモリ上で無駄なく最速で実行できるように設計しました。
実際のところ、これら一連の処理時間は、2ミリ秒のごく一部に過ぎません。
性能と信頼性を両立させる
アーキテクチャー
売買システムの中心となるサーバ群は、運用・待機サーバのセットで構成され、運用サーバがダウンすると直ちに待機サーバがその処理を引き継がなければなりません。
本システムでは、前述のメッセージング・ミドルウエアと業務アプリケーションの連携により、待機サーバのメモリ上に、常に運用サーバ と同一の複製データを保持する、ホットスタンバイ構成を採用しています。
つまり、高速なネットワークとメモリ上での冗長化を基本とするアーキテクチャにより、性能への影響を抑えつつ、信頼性を確保しています。
また、運用サーバでいつ障害が発生しても、その時点から再開できるように、トランザクションの設計には細心の注意を払いました。