統合レイヤー

Relay

Relay は、3forge と外部システムの境界に位置します。その役割は、ライブデータをファブリックに取り込むこと、そしてスケーラビリティとデータ処理のための特定のアーキテクチャパターンを実装することです。

ファブリックにおける役割

統合の境界で

Relay は、フィードハンドラーとアダプターを介して、リアルタイムフィード、メッセージングシステム、データベース、ファイル、ローカルアプリケーションに接続します。情報が届くと、Relay はそれを解析、検証、変換したうえで、1つ以上の Center へルーティングできます。この処理を統合の境界で行うことで、下流で実装すべきソース固有のロジックを減らせます。

Relay は、Center から外部リソースへの制御された経路も提供します。データベースへのクエリ発行、データのアップロード、ファイルやログへのアクセス、ローカルプロセスの起動、下流アプリケーションへのコマンド送信が可能です。

こうして Relay はファブリックの統合・トランスポート層となります。ソースの近くにあり、メッセージの内容を理解し、システムの他の部分が求める形式と方向でそれを届ける役割を担います。

外部システムとファブリックの Center の間、統合の境界に位置する Relay

Relay の主な用途は次のとおりです。

リアルタイムフィード

Center と Relay はいずれもデータベースに直接接続できます。Relay はさらにリアルタイムフィードへの接続を想定して設計されており、プロトコルを終端し、各メッセージを Center に届く前に解析、検証、正規化します。

利用可能なプラグイン

スケーリングパターン

複数の Center への処理の分散、負荷分散、ウォームスタンバイへのストリーム複製、宛先の停止中のメッセージ保持は、いずれも Relay のルーティングルールに基づきます。以下のパターンは、この2つ目の用途を具体的に示したものです。

パターン例

Relay の7つの導入パターン

Relay の役割は単なるメッセージ転送にとどまりません。ルーティングルールにより、どのメッセージをどの Center に送るかを決め、選択したストリームを複数の宛先に複製し、定義した条件を満たさないメッセージを破棄できます。これにより、処理を複数の Center に分散し、得られた状態を後から統合する分散処理パターンが可能になります。

動的メッセージルーティングと Map Reduce

  • ルールが各メッセージを振り分け、内容、負荷、カスタムロジックに応じて専用の処理 Center へ送信。設定はリアルタイムに変更可能
  • 各 Center が自らの担当分を処理し、map-reduce 処理が結果を統合
専用の処理 Center にまたがる動的ルーティングルールと Map Reduce
動的ルーティングルールと Map Reduce。宛先はルーティングルールが決定します。

保証付きメッセージング

  • すべての重要な更新を永続化し、負荷や一時的なネットワーク状況にかかわらず確実に配信
  • メッセージをログ先行書き込み(write-ahead log)に記録。オフラインだった Center も再接続後に取りこぼし分を再生可能
  • 重複排除は行わない一方で、リアルタイムのトレーディング、リスク、コンプライアンスシステムが求める耐久性と継続性を確保
保証付きメッセージングのためのログ先行書き込みと下流での再生
保証付きメッセージング

メッセージ変換とルーティング

  • 転送中のメッセージを検査、変更、拡充、フィルタリング。カスタムコードは不要
  • FIX をはじめとする金融プロトコルに対応。カウンターパーティごとに異なるフォーマットを正規化
  • 機密フィールドのマスキングや内容に基づくルーティング
メッセージ変換:転送中のメッセージの検査、変更、拡充、フィルタリング、ルーティング
メッセージ変換。宣言的ルールとスクリプトに対応し、変化し続けるトレーディングとコンプライアンスの要件に合わせた、迅速かつ柔軟なロジックを実現します。

ルーティングルールに基づく負荷分散

  • レプリケーションにより Center 間で負荷を分散。Relay のルーティングルールに基づく
  • Center を増やすほど冗長性とスケーラビリティが向上
  • マルチリージョン、グローバルなレプリケーション
Relay のルーティングルールに基づく複数 Center 間のデータベース負荷分散
データベースの負荷分散

データレプリケーション

  • プライマリとウォームスタンバイの Center データベースを簡単な設定で構成
  • スタンバイがプライマリの状態を監視し、障害時に処理を引き継ぎ
  • スタンバイ側ですべてのデータをメモリにロード済み
プライマリの Center データベースとウォームスタンバイ間のデータレプリケーション
データベースのレプリケーション

マーケットデータの集約

  • レイテンシに敏感な多数のソースを1つまたは複数の Center に集約
  • 集約されたビューが優位性となる場面に。複数の執行市場にまたがる流動性など
  • レベル2のマーケットデプスを構築
マーケットデータの集約:複数の執行市場からの価格フィードを統合ビューに集約
執行市場をまたぐ価格フィード集約の例

トレーディングデータの集約

  • 多数のトレーディングデータソースを集約し、リアルタイムと履歴のクエリに対応
  • 多数の顧客の注文板と、複数の市場からの約定
  • アセットクラスをまたぐ注文板の集約
トレーディングデータの集約:複数の注文管理システムの注文板をリアルタイムと履歴のクエリ向けに集約
注文管理システムをまたぐ注文集約の例

キャッシュ、永続化、処理

Relay はソースの近くに。状態は Center に。

ライブの状態に対するインメモリSQL、ペタバイト級のヒストリカルデータベース、複合イベント処理エンジン。そのすべてが同じガバナンスされたランタイムの中にあります。