JP2016527575A - 複数のソースからのメッセージ情報を弾性的に処理する装置、システムおよび方法 - Google Patents

複数のソースからのメッセージ情報を弾性的に処理する装置、システムおよび方法 Download PDF

Info

Publication number
JP2016527575A
JP2016527575A JP2015563040A JP2015563040A JP2016527575A JP 2016527575 A JP2016527575 A JP 2016527575A JP 2015563040 A JP2015563040 A JP 2015563040A JP 2015563040 A JP2015563040 A JP 2015563040A JP 2016527575 A JP2016527575 A JP 2016527575A
Authority
JP
Japan
Prior art keywords
data message
time
data
message
feed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015563040A
Other languages
English (en)
Other versions
JP6009108B2 (ja
Inventor
トリスタン ブレイカーズ,
トリスタン ブレイカーズ,
チュイン ニー オーイ,
チュイン ニー オーイ,
マックス ロイ プラコソ,
マックス ロイ プラコソ,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nasdaq Technology AB
Original Assignee
OMX Technology AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by OMX Technology AB filed Critical OMX Technology AB
Publication of JP2016527575A publication Critical patent/JP2016527575A/ja
Application granted granted Critical
Publication of JP6009108B2 publication Critical patent/JP6009108B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/226Delivery according to priorities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/234Monitoring or handling of messages for tracking messages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/06Asset management; Financial planning or analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2854Wide area networks, e.g. public data networks

Abstract

メッセージ処理システムの待ち時間を都合が良ければ改善し、複数のメッセージソースから受信されたメッセージストリームから生成された統合メッセージストリームの正確さを向上する弾性的メッセージ追跡装置および方法が提供される。全てのメッセージストリームの実際の待ち時間が所定の待ち時間値よりも低い状況において、弾性的メッセージ追跡装置および方法は該待ち時間を低減する。【選択図】図4

Description

優先権に係る出願
本願は、2013年5月31日に出願された米国特許仮出願第61/829,545号の優先権の利益を享受する。その出願の内容は、参照により本明細書に組み入れられる。
本願は監視システムの技術分野に関し、特に複数のメッセージソースからのメッセージの追跡に関する。
ひとつの例示的なタイプの監視システムはマーケット監視システムを含む。マーケット監視システムは典型的には異なる多くのデータソースからデータを取得する。典型的には、それらのソースからの入来データメッセージフィードはお互いに同期していない。関心イベントに至るまでの一連のアクションの正確な情勢を構築するためには、入来データフィードのそれぞれのメッセージは統合データフィードを生成するよう正しい順序で並べられなければならない。
追加的なデータが想定されずその日の全てのメッセージが完全に受信された時点であるその日の終わりにおいては、メッセージを容易に正しく並べ替えることができる。しかしながら、依然として入来メッセージが存在する状態では、特定のタイムスタンプを持つ全てのメッセージが受信されたかについては定かではないので、実時間に近い処理についてメッセージを並べ替えることはより複雑である。
入来マーケットデータフィードに関して、データメッセージの並び替えの複雑さに影響を与えうる多くの問題が共通して見られる。そのような問題は以下を含む。
(i)タイムスタンプの欠如−いくつかのメッセージがタイムスタンプを有さない場合がある。
(ii)タイムスタンプの粒度がばらばら−いくつかのメッセージは他のものと比べた場合に異なる粒度のタイムスタンプを有しうる。例えば、注文および取引タイムスタンプはマイクロ秒精度を有し、一方取引取消は秒精度のみを有する。
(iii)時間的順序が正しくない−いくつかのデータフィードは時間的に並べられ、メッセージは見た目ランダムな時間順序で到着しうる。ある場合では、いくつかのメッセージは分単位で「遅れ」うる。
(iv)論理的順序が正しくない−メッセージは論理的な並びから外れて到着しうる。例えば、取引に先行すべき両方の注文メッセージの前にその取引メッセージが到着する。
(v)データフィードの待ち時間−各データフィードにおける待ち時間は以下のような種々のソースから導入されうる。
(a)(取引エンジンから処理宛先への)伝送待ち時間。
(b)過大なシステム負荷、特にピーク期間中のもの。
(c)データ前処理または変換動作、特にデータの並べ直しを含むもの。
(d)ひとつ以上のデータフィードが中断されることによりそのフィードが利用不可となる一方、他のデータフィードは利用可能のまま維持されること。
したがって、メッセージの順序の正確さとメッセージ処理待ち時間、すなわちデータメッセージがどれほど実時間に近く処理されるか、との間にはトレードオフが存在する。
いくつかのマーケット監視システムは、トランザクションストリームをビジネスルールに対して評価することにより、取引データ中の関心パターンを特定する。典型的には、ルールはイベント駆動型である。トランザクションイベント(例えば、注文エントリ、注文修正、取引など)は既存のマーケット情勢のコンテキストにおいて調べられ、その取引イベントが関心対象であるかが判定される。特定のイベントの時点におけるマーケットの状態のスナップショットが正確であることを確実にするため、入来トランザクションは正しい時間的および論理的順序で処理されなければならない。
例えば、証券の異常な値動きや取引量が値に影響するニュースの発表の直前に起こった場合、それはインサイダ取引を示しうる。インサイダ取引警告のトリガイベントはそのニュースの発表の出現であり得る。ニュース発表の時点で、そのニュースの発表に至るまでの期間中のその証券についてのトランザクションが異常なパターンについて調べられる。しかしながら、そのニュースの発表の前に起こったトランザクションがデータフィードの中で誤って並べられた結果、それがそのニュースの発表の後に現れることとなった場合、そのトランザクションは警告を生成しないであろう。言い換えると、そのニュース発表トリガイベントが起こった時点で警告ルールが評価されるときには、警告をトリガすべき該トランザクションは存在しないであろう。
マーケット監視システムは「後方追跡(back track)」しないし、順序が乱れたトランザクションが受信されたときにトリガ条件を再評価することもない。例えば、その順序が乱れたトランザクションによってどのトリガ条件が影響を受けるかを特定するのは困難である。さらに、一般的にデータが時間的に誤って並べられている場合、順序が乱れたトランザクションが受信されるたびに戻ってルールを再評価することは、通常法外に計算コストが高い。
マーケット監視システムが異なるデータソースからの複数のデータフィードを含むマーケットにおけるメッセージの決定論および順序通りの処理を改善することができれば、有利であり得る。ひとつのアプローチは、全ての成分データフィードが各データフィード内ですでに時間的に正しく並べられていると仮定することであろう。上流のデータフィードが時間的順序にない場合、監視システムがデータフィードを読んで異なるデータフィードからのメッセージをインターリーブする前にデータフィードを並べ直すことを確実にするための中間処理が挿入されうる。
例えば、規則的に生成される(例えば周期的な)タイミング信号(本願の非限定的な例示的実施の形態において「メトロノームフィード」と称される場合がある)を使用して、データフィードからのメッセージの処理に所定量の待ち時間を導入し、より正確なデータメッセージ監視または追跡を生成することができる。規則的に生成されるタイミング期間または周波数は、規則的に生成されるタイミングフィードのタイミングメッセージ(本願の例示的実施の形態において「鼓動(heart beat)」メッセージと称される場合がある)の間の間隔を決める。規則的に生成されるタイミングフィードは、設定可能な期間だけ実時間から遅れるインクリメントされるタイムスタンプのフィードを含みうる。メッセージ追跡はメトロノーム時刻までのメッセージのみを処理する。これはフィードを遅らせる。
これは図1に示される例で説明される。図1では、メッセージは規則的に生成されるタイミングフィードの順序で読まれる。規則的に生成されるタイミングラグまたは遅延期間は、マーケットで使用されるデータフィードにおいて想定されるラグに基づいて設定されてもよい。追跡の正確さはラグ期間が大きいほど向上する。上流処理が要求されたメッセージを送信しなければならない期間が長いほど、そのメッセージが順序から外れて読まれることとならない確率は高くなる。
図2は、より低い待ち時間設定のもと、メッセージが順序から外れて読まれる例を示す。規則的に生成されるタイミングラグ期間がより短い場合、あるフィードの遅延(理由が何であれ)によりメッセージが順序から外れて処理されるリスクが高まる。したがって、任意に低いラグ期間は監視システムがイベントに関するパターンを検出して監視アナリストや他の監視者に警告するのを妨げうるので、設定されるタイミングフィードラグを任意に低くすることは通常薦められない。したがって、正確な順序付け(例えば、パターンを正確に検出できるような)と最大の処理待ち時間との間のもっともなトレードオフであると考えられるものにしたがって、ラグ期間を設定(構成)してもよい。しかしながら、上述の通り、そのようなラグを設定すると全てのデータメッセージフィードに対して固定の処理待ち時間が導入される。
タイミングフィードベースのアプローチでマーケットにおいて処理することは「ぎくしゃく(jerky)」するものでありうる。不可避の中断および引き続く処理バーストが生じうるからであり、これは、監視装置が規則的に生成されるタイミングフィード上で次に利用可能なメッセージを待ち、それが読むことを許されている全てのメッセージを処理し、次に規則的に生成されるタイミングフィード上で次に利用可能なメッセージを待つからである。規則的に生成されるタイミング期間はマーケット内の処理のぎくしゃく度合いを決定する。規則的に生成されるタイミング期間は、マーケット内の時間進行の最大粒度を決定するのに使用されうる。しかしながら、規則的に生成されるタイミング期間が短い(例えば、1ms)と、メモリディスク書き込み動作で消費される入出力動作の数のためにストレージサブシステムに対して不必要に大きな負荷がかかりうる。監視対象のデータがストレージメモリに書き込まれることなくストリームされるシステムでは、規則的に生成されるタイミング期間が短いとネットワーク過負荷の問題が生じうる。
メッセージ処理システムの待ち時間を都合が良ければ改善し、複数のデータメッセージソースから受信されたデータメッセージストリームから生成された統合データメッセージストリームの正確さを向上する弾性的メッセージ追跡装置および方法が提供される。全てのデータメッセージストリームの実際の待ち時間が所定の待ち時間値よりも低い状況において、弾性的データメッセージ追跡装置および方法は該待ち時間を低減する。
電子データメッセージ処理装置は、複数のデータメッセージソースからデータメッセージを受信するデータメッセージフィードポートと接続された処理回路を含む。各データメッセージソースは対応する時系列のデータメッセージを生成する。複数のメッセージフィードポートで受信されたひとつ以上のデータメッセージはその対応する時系列から外れて受信される。処理回路は、入来データメッセージフィードポートにおいて受信されたデータメッセージを、データメッセージ処理待ち時間に基づいて処理する。複数のデータメッセージフィードポートから受信されたデータメッセージに統合時系列を提供するようデータメッセージ処理待ち時間が選択的に改められる。合成データメッセージストリームのデータメッセージが統合時系列でひとつ以上の宛先ポートに送信されるように合成データメッセージストリームが生成される。
例示的実施の形態では、処理回路は状態パラメータを検出し、状態パラメータが変わるまでに受信したデータメッセージを時系列にあるとして処理し、状態パラメータが変わった後に受信したデータメッセージを時系列から外れるとして処理する。データメッセージ処理待ち時間は検出された状態に基づいて改められる。
電子データメッセージ処理装置における現在の実際の時刻とは別の基準時刻を使用して合成データメッセージストリームのデータメッセージが処理されてもよい。基準時刻と現在の実際の時刻との差は電子メッセージ処理システムの現在の待ち時間に関連付けられる。基準時刻は処理されたメッセージの進行に基づき変更される。
例示的な実施の形態では、時間的メッセージ系列から外れたメッセージが処理された場合に基準時刻が維持される。
別の例示的な実施の形態では、データメッセージフィードポートのうちのひとつが非アクティブ状態にあると判定された場合、データメッセージフィードポートのうちのひとつが所定の回復期間内にアクティブ状態になると判定された場合には合成データメッセージストリームのデータメッセージが時間的順序で処理される。しかしながら、データメッセージフィードポートのうちのひとつが所定の回復期間外でアクティブ状態になると判定された場合には合成データメッセージストリームのデータメッセージが時間的順序から外れて処理される。非アクティブなデータメッセージフィードポートの判定に基づいて、該データメッセージフィードポートが非アクティブ状態にある間は基準時刻の進行が止められてもよい。
例示的な実施の形態は、データメッセージフィードポートのそれぞれで現在受信されている次のデータメッセージであって現時点で最も低いデータメッセージ時刻を有する次のデータメッセージのメッセージ時刻と基準時刻とを比較してもよい。データメッセージ時刻が基準時刻より小さい場合、該データメッセージを処理し該データメッセージフィードポートにおける次のデータメッセージを読む。あるいはまた、データメッセージ時刻が基準時刻より大きい場合、基準時刻をデータメッセージ時刻に合わせる。
例示的な実施の形態は、合成データメッセージストリームのデータメッセージを処理してひとつ以上の所定のパターンを検出し、該パターンに応じてひとつ以上の対応する警告データメッセージを生成してもよい。
例示的な実施の形態は、合成データメッセージストリームの受信されたがまだ処理されていないデータメッセージを、以前に処理されたデータメッセージの内容に基づいて処理してもよい。
取引向けの例示的な実施の形態では、データメッセージのうちのいくつかが電子的取引交換からのトランザクションパラメータに関係する場合、該トランザクションパラメータに基づいて、電子的取引交換のひとつ以上のオーダブック。統合時系列から外れた検出データメッセージを使用して、オーダブックが更新されてもよい。各受信データメッセージはタイムスタンプを含んでもよい。順番通りでない状態で受信されたひとつ以上のデータメッセージは、データメッセージのタイムスタンプに基づいて並べ直されてもよい。
例示的な実施の形態では、データメッセージフィードポートで受信された状態のデータメッセージは正規化されたデータフォーマットに変換される。
例示的なタイミング図である。
他の例示的なタイミング図である。
複数のソースからのメッセージ情報を弾性的に追跡し報告するための非限定的な例示的手順を説明するフローチャートである。(独立方法請求項をトラックするために生成される)
複数のソースからのメッセージ情報を弾性的に追跡し報告するメッセージ処理システムの非限定的な例示的実施の形態を示す。
例示的なデータフィード状態活動図である。
最大の待ち時間における追跡の例を示す図である。
最大の待ち時間における例示的な弾性的追跡プロセッサ可視化である。
非限定的な例示的弾性的追跡プロセッサの機能ブロック図である。
以下の記載では、説明を目的とし、限定を目的とせず、記載の技術の理解を提供するために、特定のノード、機能エンティティ、技術、プロトコル等の具体的な詳細が説明される。他の実施の形態を、以下の詳細説明から離れて実施できることは当業者には明らかであろう。他の例では、周知の方法、デバイス、技術等の詳細説明は、不必要な詳細説明で説明を曖昧にしないために省略されている。個々の機能ブロックが図に示される。これらのブロックの機能は、個別のハードウエア回路を使用して、適切なプログラム化マイクロプロセッサあるいは汎用コンピュータと協働するソフトウエアプログラムおよびデータを使用して、特定用途集積回路(ASIC)を使用して、および/または1つ以上のデジタル信号プロセッサ(DSP)を使用して、実現可能であることを当業者は理解するであろう。ソフトウエアプログラムインストラクションおよびデータは、コンピュータ可読保持媒体に保持されてもよく、このインストラクションがコンピュータあるいは他の適切なプロセッサ制御によって実行されると、コンピュータあるいはプロセッサは機能を実行する。以下でデータベースはテーブルとして示されている場合があるが、他のフォーマット(リレーショナルデータベース、オブジェクトベースモデル、および/または分散データベースを含む)を、データを保持し操作するために使用することができる。
処理ステップ、アルゴリズムあるいはその類が特定の順序で記載またはクレームされている場合があるが、このような処理は、異なる順序で動作するように構成設定することができる。換言すれば、明示されるかクレームされるいかなるシーケンスあるいはステップの順序も、そのステップがその順序で実行される必要性を示すものでは必ずしもない。本明細書で記載される処理のステップは、取り得る任意の順序で実行されうる。また、いくつかのステップは、非同時的に発生するように記載されているあるいは暗示されているが(例えば、あるステップは、他のステップの後に記載されているからである)、同時に実行されうる。さらに、図面における図示による処理の説明は、図示される処理が他の変形や変更について排他的であることを暗示しているのではなく、また、図示される処理あるいはその任意のステップが本発明に必要であることを暗示しているのではなく、また、図示される処理が好ましいことを暗示しているのでもない。処理の説明はその処理を行う装置の説明である。処理を行う装置は、その処理を行うのに適切な例えばひとつ以上のプロセッサと入力デバイスと出力デバイスとを含んでもよい。
「データメッセージ信号」という用語は本明細書において、電気的形態、電子的形態、電磁気的形態、磁気的形態または光学的形態である位置や領域から他へ情報を送る任意の信号を包含するために使用される。データメッセージ信号はある位置や領域から他へ、電気的または磁気的導体により、光学導波管により、無線(RF、赤外等)で、他の信号伝送機構により、伝送されてもよい。一般に、データメッセージ信号の広いカテゴリは、アナログ信号およびデジタル信号の両方を含む。アナログ信号は、連続的に変化可能な物理量、例えば電圧の形態の情報を含む。デジタル信号は、物理特性の離散値の形態の情報を含む。これもまた例えば電圧でありうる。
コンテキストがそうでないと示す場合を除き、「回路(circuitry)」および「回路(circuit)」という用語は本明細書では、ひとつ以上の電子部品が一緒に動作するか関連する態様で動作するのに十分な電気的接続を有する構成を指すために使用される。ある例では、回路のあるアイテムはひとつより多い回路を含んでもよい。プロセッサを含む回路のアイテムは、ハードウエアおよびソフトウエアコンポーネントを含む場合がある。ソフトウエアはプロセッサの動作を制御するかまたは動作中にプロセッサによってアクセスされる、保持されたまたは伝送されたデータを指す。ハードウエアは、データを保持し、伝送し、データで動作するコンポーネントを指す。しかしながら、いくつかのコンポーネントはソフトウエアおよびハードウエアの両方の特性を共有するので、ソフトウエアとハードウエアとの区別は必ずしもはっきりしない。所与のプロセッサで実現されるソフトウエアコンポーネントは多くの場合、回路の動作を大幅に変更することなく等価なハードウエアコンポーネントにより置き換えられ得る。また同様に、所与のハードウエアコンポーネントはソフトウエアにより制御される等価なプロセッサ動作により置き換えられ得る。
回路はその構成や他の特性に基づき構造的に記述されてもよい。例えば、制御動作を行うよう構成された回路は制御回路と称される場合があり、処理動作を行うよう構成された回路は処理回路と称される場合がある。
一般に、インタフェースやプロセッサやサーバやメモリや検出器やユーザインタフェースや他のアイテムはシステムに含まれてもよい。このシステムでは、それらは自動的に動作するか一部自動的に動作する。システムという用語および装置という用語は両方とも、一緒に動作を行うことができる2つ以上のパーツまたはコンポーネントの組み合わせを指す。システムおよび装置は、設定された動作により特徴付けられてもよい。
様々な形式のコンピュータ可読媒体は、プロセッサにデータ(例えば、インストラクションのシーケンス)を運ぶ際に含まれうる。例えば、データは、(i)RAMからプロセッサへ送信されてもよく、(ii)任意のタイプの送信媒体(例えば、有線、無線、光等)を介して運ばれてもよく、(iii)イーサネット(登録商標)(あるいはIEEE802.3)、SAP、ATP、ブルートゥース(登録商標)、TCP/IP、TDMA、CDMA、3G等のような、多くのフォーマット、規格あるいはプロトコルに従ってフォーマットおよび/または送信されてもよく、および/または(iv)様々な方法の任意のものでプライバシーを確保するためにあるいは流出を防止するために暗号化されてもよい。
以下で説明される技術は任意のタイプの電子監視システムで使用されてもよい。本技術の一例としてのアプリケーションは、取引交換のためのマーケット監視システムである。取引交換のためのマーケット監視システムのコンテキストで詳細な例示的実施の形態が説明されるが、本技術はこれに限られない。
マーケット監視システムの非限定的例示的実施の形態はマーケットデータフィードの実時間監視を提供する弾性的トラッカ装置を含む。例えば金融商品エンジンや証券取引エンジンからのマーケットデータフィードなどのひとつ以上のデータフィードに接続することで、例示的なマーケット監視システムは生きたマーケットデータや実時間の警告や過去データ追跡や過去データの報告を提供する。
図3は、複数のデータメッセージソースからのデータメッセージ情報を弾性的に追跡するための非限定的な例示的手順を説明するフローチャートである。第1ステップS1は、メッセージフィードポートにおいて、複数の対応するメッセージソースからデータメッセージ信号(または単にデータメッセージ)を受信することを含む。各メッセージソースは時系列のデータメッセージを生成している。メッセージフィードポートで受信されたひとつ以上のデータメッセージはその対応する時間的メッセージ順序から外れて受信される。処理回路は、入来データメッセージフィードポートにおいて受信されたデータメッセージを、データメッセージ処理待ち時間に基づいて処理する(ステップS2)。複数のデータメッセージフィードポートから受信されたデータメッセージに統合時系列を提供するようデータメッセージ処理待ち時間が選択的に改められる(ステップS3)。合成データメッセージストリームのデータメッセージが統合時系列でひとつ以上の宛先ポートに送信されるように合成データメッセージストリームが生成される(ステップS4)。
図4は、複数のソースからのメッセージ情報を弾性的に追跡し報告する監視システムの非限定的な例示的実施の形態を示す。監視システム10は、ゲートウェイ12と、監視エンジン14と、ユーザデバイス、例えばワークステーション16a、…、16nと、を含む。ゲートウェイ12および監視エンジン14は、例えばLinux(登録商標)サーバ環境で動作してもよい。それぞれは少なくともプロセッサと、メモリと、を備え、スケーラビリティおよび堅牢性を提供する。ユーザデバイス16a、…、16nはローカルWindows(登録商標)アプリケーションおよびクライアントアプリケーションを実行するパーソナルコンピューティングデバイスを含んでもよい。クラウドコンピューティングやクラウドストレージやクラウドサービスなどの他のデータ処理およびストレージ環境が使用されてもよい。
複数のデータフィードソース18はゲートウェイ12のひとつ以上の入力ポートにデータストリームを提供する。データフィード取得プロセッサ22は、例えば取引交換システムの取引エンジンからのデータフィードやニュース収集者からのデータフィードなどの複数のデータフィードソース18からのデータフィードを、取得する。異なるデータフィードが取得された場合、データメッセージは生のデータフォーマットでフィードごとにデータベース24に格納されてもよい。ひとつ以上のデータフォーマットコンバータ26は、フィードごとに該生データを共通データフォーマットのデータに変換し、変換されたデータをひとつ以上のデータベース、例えば30、40、42に格納する。監視エンジン14は、ひとつ以上のデータベースを用いて報告を生成し警告を検出する複数のコンピュータサーバ34、36および38を含む。ワークステーション16a、…、16nのクライアントアプリケーションは、例えばアナリストなどのユーザがマーケットデータを監視し、上級の報告および可視化へと掘り下げることを可能とする。
好適ではあるが例示的な実施の形態では、異なるデータフィードからの堅牢なデータ取得および素早い構築を可能とするために、ゲートウェイ12はモジュラデータ処理アーキテクチャを使用して構築される。監視システム10は、例えば実時間フィード18や日ごとのフラットファイルや周期的フラットファイル(両方とも静的ファイル20として参照される)やネットワークリンクなどを含む外部システムおよびデータと接続する複数のインタフェースを含む。上記のコンテキストにおいて、フラットファイルは構造的な関係を伴わないレコードを含むデータファイルであり、基本的なフォーマットのみを含んでもよく、少数の固定数のフィールドを有してもよく、ファイルフォーマットの集合を有しても有さなくてもよい。実時間データフィードは日が進むにつれてライブかつ徐々に取得される。日ごとのフラットファイルは種々のフォーマットで受信されてもよく、典型的には1日1回配信される。周期的なフラットファイルは種々のファイルフォーマットで入来し、周期的かつ必要に応じて更新される。ネットワークリンクは監視エンジンコンピュータサーバ34、36および38へのアクセスを容易にする。各ネットワークリンクは処理回路を使用して実現される。
ある例示的な実施の形態では、データフィード取得プロセッサ22はフィードデータをディスクや他の保持媒体に格納する。データフォーマットコンバータ26は生のフィードデータを処理し、好適にはデータフィードメッセージを正規化されたファイルフォーマットに変換する。ある例示的な実施の形態では、正規化されたファイルフォーマットは、例えば取引関係データなどの特定のタイプのデータの格納に対して最適化される。ある例示的な実施の形態では、正規化されたファイルフォーマットのデータは、統合データベース30に出力され、そこで保持される。該データベース30は高性能スケーラブルデータベースであってもよい。クライアントアプリケーションに対する最適化を含むファイルであって実時間のワークステーション/クライアント接続のために使用される基礎的なデータ構造であってもよいファイル(例えば、REMS、DAYTOT、NEWS)を保持するためのオプションの副データベース42が設けられる。
データフォーマットコンバータ26は、データフィードからのデータメッセージを処理し、必要であれば下流での処理で使用される前にそれを時間的順序に並べ直すよう構成される。
監視エンジン14は、警告処理サーバ38と、実時間および1日の終わりサーバと、を含む。警告処理サーバ38は統合データベース30に保持される変換ファイルを読み出し、警告を生成および処理する。該サーバ38は警告データベース40に該警告を格納してもよい。報告サーバ34、主および副データベース30および42、および警告データベースからの情報は、データアクセスインタフェース44を介して、クライアントワークステーション16a、…、16nへと提供され、および/またはそれらによりアクセス可能である。
データベースデーモンは典型的には種々のユーティリティ機能を実行するネットワークプログラムであり、ワークステーション16a、…、16nのクライアントアプリケーションが統合データベース30にアクセスすることを可能とする。これにより、例示的なクライアントアプリケーションプログラムスイート(例えば、コンピュータプログラムベースのツールの集合)は便利な監視監督機能および/または特徴を提供することができる。そのような機能および/または特徴は、例えば警告ダッシュボードや警告生成やデータ可視化やマーケットリプレイや警告の完全な報告やニュースおよび取引活動を含む。加えて、フィードが中断した場合やリンクが失敗した場合にスムーズに復帰することを確実にするための初期化および再起動のための制御ソフトウエアが、好適には、クライアントワークステーション16a、…、16nに提供される。
好適には、システム10は、リンク停止やシステム停止が起こった場合でも堅牢なデータバックアップおよび回復を提供するための、データ冗長化およびフェールセーフ性能を含む。例えば、2つの物理的なサーバロールアウトが提供され、一方は主サイトとして、他方は副サイトとして提供されてもよい。主サイトで障害が起きた場合には、クライアントワークステーションは副サイトに接続してデータ解析を続けてもよい。
任意の時点で、統合データベース30に保持される変換ファイルの異なるもの同士は、以下の例示的な理由のうちのひとつ以上により、時間的に同期から外れている可能性がある。
1.取引プラットフォームからリスナへのトランザクションメッセージの伝送において発生した待ち時間、
2.種々の入力フィードで異なる待ち時間、
3.コンバータの並べ替えロジックにより導入された遅延、および/または
4.過度のコンバータ負荷、特にピーク期間中のそれ、により生じた待ち時間。
イベントを正確かつ信頼性高く監視するためには、関連する一連のアクションの正確かつ信頼性の高い情勢が確立されなければならない。関心イベントに至るまでの一連のアクションの正確な情勢を確立するためには、入来データフィードのそれぞれのメッセージは合成データフィードを生成するよう正しい時系列でインターリーブかつ処理(例えば、追跡)されなければならない。時系列という用語は、時間的順序および論理的順序の両方を包含する。これはひとつ以上の追跡プロセッサにより取り扱われる。
ひとつの例示的な実施の形態は図5で説明される監視システムに示される。取得プロセッサ22a、b、…、nは例えば取引フィードや他の任意のタイプのデータフィードなどのデータフィードから実時間データを取得することを担当する。各取得プロセッサ22a、b、…、nは、それとデータフィードとの接続が成功した場合、生のデータファイルを生成する。例示的な取引アプリケーションでは、これは取引日か非取引日かに関わらず生じる。フィードからのメッセージが到着すると、そのメッセージは現在の日付の生データファイルに追加される。各取得プロセッサ22a、b、…、nは予め定義されたスケジュールにしたがって起動および停止される。各取得プロセッサ22a、b、…、nは、予定されていないスケジュールの時間変更や障害シナリオを軽減するために手動で制御されてもよい。上述の通り、各データフォーマットコンバータ26a、b、…、nは、データメッセージが順序から外れて受信された場合、メッセージのタイムスタンプにしたがいデータフィードのデータメッセージを並べ直す。
データが各フォーマットされたファイル内で正しく並べられると、それらのファイルは時間順で一緒に処理(追跡)されなければならない。合成データメッセージストリームの統合時系列、例えば取引交換のマーケット監視システムアプリケーションにおけるマーケットの「情勢」的なもの、を生成するためである。警告処理サーバ38はひとつ以上の弾性的追跡プロセッサ50を含む。弾性的追跡プロセッサ50は、データフォーマットコンバータ26a、26b、…、26nによって提供されるファイル30a、30b、…、30nからのフィードストリーム1、2、…、nをインターリーブして合成データメッセージストリームを生成する。この非限定的な取引の例では、合成データメッセージストリームはオーダブックメモリ52に提供される。オーダブックメモリ52では、異なる金融商品の取引ごとに異なるオーダブックが維持される。合成データフィードのデータメッセージを処理することにより、弾性的追跡プロセッサ50は例えばマーケットの各アクションおよびトランザクションを監視するために使用されてもよい。弾性的追跡プロセッサ50は追跡対象マーケットで取引される各金融商品についてのオーダブックを維持し、合成データフィードに利用可能な処理すべきメッセージが現れるとすぐにオーダブックを更新してもよい。
合成データメッセージフィードを使用して、例えば関心のある性質や疑わしい性質の異なる複数のパターンなどの種々の予め設定されたパターンを検出してもよい。合成データメッセージストリームはひとつ以上の警告プロセッサ54に提供される。ひとつ以上の警告プロセッサ54は警告規則メモリ32に保持される警告規則にしたがって合成データメッセージストリームを解析する。警告プロセッサ54が合成データメッセージストリームにひとつ以上のパターンを検出すると、対応する警告メッセージ40が生成され、外部インタフェース44を介してクライアント16a、…、16nに出力されてもよい。外部インタフェースは警告を含むデータメッセージを、ユニキャストによりクライアントへ送信してもよく、またはマルチキャストやブロードキャストによりいくつかのクライアントに送信してもよい。
ある例示的な実施の形態では、弾性的追跡プロセッサ50は、対応するオーダブックにトランザクションを入れて取引交換システムにおいて通常なされるように処理することにより、受信された順序から外れたトランザクションを取り扱う。
弾性的追跡プロセッサ50は、例えば金融マーケットデータフィードなどの複数のデータフィードからのデータの合成データメッセージストリームへの実時間に近いマージという課題を解決する弾性を提供する。ここで合成データメッセージストリームの時間的順序および論理的順序の両方は正しいものである。弾性的追跡プロセッサ50のひとつの有利な特徴は、不利なデータフィード条件への適合性および応答性である。例えば、弾性的追跡プロセッサ50の処理待ち時間は、最も遅いデータフィードに照らして最適な動作点に維持される。最適な状況下では、弾性的追跡プロセッサ50はメッセージをできる限り速く処理する。ひとつ以上のデータフィードが利用不可になった場合、弾性的追跡プロセッサ50は処理待ち時間を徐々に導入することにより、合成フィードが正しく並べられる状態が維持されることを確実にする。弾性的追跡プロセッサ50はデータフィードが復活すると、導入された待ち時間を除去する。これは、追跡プロセッサ50の弾性的特徴の一例である。
弾性的追跡プロセッサ50は、実時間処理の停止が許可される最大期間をデータフィード停止期間が超えない限り、合成データメッセージストリームの正しい時系列を維持する。ここで図1および図2を参照すると役に立つであろう。フィード停止許容値は、あるデータフィードは他のものより重要であるという現実を反映するべく、フィード毎に設定されてもよい。例えば、主たるマーケットの注文および取引を含むデータフィードが利用不可であるか遅れている場合、他のデータフィードを処理し続けることに意味はないであろう。
弾性的追跡プロセッサ50は、全ての入来データフィードからのメッセージを読んでそれらを正しい順序で処理することにより、本例(または他のアプリケーションにおける他の複数入力状況)において監視されているマーケットの融合的なまたは包括的な情勢を作り上げる。弾性的追跡プロセッサ50は以下のタスクを実行する。これは例としてのマーケット監視システムにおいてマーケット活動を「追跡」すると総称される。まず、弾性的追跡プロセッサ50はデータフィードからのメッセージを読み、利用可能なメッセージのリストから次に処理するのが適当なメッセージを決定し、以前のトランザクションのコンテキストにおいて入来メッセージを処理する。これは例えば取引交換の例では、現在のトランザクションの結果としてマーケットのオーダブックの状態を更新することである。
警告プロセッサ54は追跡されているか監視されている現在のトランザクションのタイムスタンプに基づいて、マーケットにおける現在時刻を維持する。この現在時刻は「マーケット時刻」と称される。マーケット時刻は、例えば実時間でないデータなどの過去のデータで警告規則が実行されている場合において特に、現在のシステム時刻とは異なりうる。マーケット時刻は、例えば現在のトランザクションが時間的に順序から外れている場合、現在のトランザクションのタイムスタンプとは異なる。マーケット時刻は、実際の経過システム時刻より速く進む場合もあれば、遅く進む場合もある。マーケット時刻が進む速さは、入来データフィードからのメッセージ配信レートおよびそのメッセージを処理するためのシステムリソースの可用性に依存する。
メモリ32に保持される警告規則は例えば警告プロセッサ54により実行され、1日のうちの特定の時刻に、または所定間隔で、トリガされる。これらの規則はマーケット時刻のコンテキストで評価される。例えば、「13:00に」は、マーケット時刻が13:00になったときにその規則が評価されるべきであることを意味してもよい。実際のシステム時刻は13:00でなくてもよい。他の例では、「10分ごとに」は、マーケット時刻で10分が経過するたびにその規則が評価されるべきであることを意味してもよい。実際のシステム時刻の変化は10分以上または以下であってもよい。
弾性的追跡プロセッサ50は時刻は前方にのみ進むことを前提とする。入来メッセージが時系列から外れる場合、その順序から外れたメッセージを処理する際に、追跡プロセッサ50は後ろ向きに追跡して時間的に後方に移動することはない。順序から外れたメッセージを使用してオーダブック52が更新されるが、マーケット時刻は「後ろ向きに」動くよう更新されることはない。これは、その順序から外れたメッセージがトリガ条件を含む場合、その条件は現在のマーケット時刻のコンテキストで評価されるのであり、順序から外れたメッセージのタイムスタンプで評価されるのではないことを意味する。また、これは、その順序から外れたメッセージの時点で存在する他のメッセージやフィードからのトリガ条件は追加的なデータのコンテキストで再評価されないことを意味する。これにより、非決定論的な実時間警告挙動が生じうる。全てのメッセージが正しい時系列で読まれるよう利用可能となる後の時点で同じデータ集合について警告プロセッサ54により警告規則が再実行された場合、異なる、「欠けていた」、または追加的な警告が生成されるかもしれない。
追跡プロセッサ50は、データフィードが一時的に利用不可となり後に回復する状況を扱うことができる。「フィード回復ウィンドウ」は、影響を受けたデータフィードが回復するのを「待つ」間処理を一時停止した状態で経過することが許される期間である。影響を受けたデータフィードがウィンドウ内で回復した場合、処理は、(まるで一時的な利用不可が起こらなかったかのように)正しく並べられたメッセージで続けられる。影響を受けたデータフィードがこの期間内に回復しなかった場合、処理は他の利用可能なデータフィードにおいて続けられる。影響を受けたフィードが回復した場合にメッセージは順序から外れて処理される。「フィード回復ウィンドウ」はfeed−idle−timeoutと称され、入来データフィードごとに異なるように設定可能である。
図6の例示的なコンピュータフロー図に示されるように、データフィードは以下の状態のうちのひとつをとってもよい。
Figure 2016527575
非アクティブフィードはマーケット時刻が進むのをブロックする。ひとつ以上のフィードが非アクティブである場合、マーケット全体が支配的なマーケット時刻においてブロックされる。全ての非アクティブフィードが他の状態に遷移するまで、メッセージ時刻がマーケット時刻よりも小さい場合にのみそのメッセージを処理する。メッセージは現在のマーケット時刻を超えて処理されてはならない。feed−idle−timeoutに達するまでは、メッセージが前に終わったところから続けられることが期待されており、そのようなメッセージは順序通りに処理されなければならないからである。
好適ではあるが例示的な実施の形態では、メッセージは一度にひとつずつ読まれ、処理される。各データフィードは、以下の事項に基づいて状態を維持する入力ストリームとして受信される。(1)次のメッセージが利用可能か否か、(2)(メッセージが利用可能な場合)フィード上の次の利用可能なメッセージのタイムスタンプ、および(3)それがフィード上でどこにあるか(バイトまたはメッセージn)。本例示的な実施の形態では、状態は、単一のメッセージの先読みバッファとして維持される。メッセージがない場合、時刻は好適には(必須ではないが)利用可能な最小の時間分解幅の単位で進む。
使用可能な設定パラメータの例示的なリストは以下の通りである。システム時刻への参照は、オペレーティングシステムとマーケットとのタイムゾーンの違いを説明する。
設定パラメータ
Figure 2016527575
例示的な弾性的追跡動作を実行する際に弾性的追跡プロセッサ50により実行されてもよい例示的な手順の集合は以下の通りである。追跡プロセッサ50はシステム時刻を使用してフィード回復ウィンドウ内でどの程度時間が経過したかを計算する。
1.ゼロの開始状態を仮定する。すなわち、リードバッファにはメッセージはない。監視されるデータフィードから最初のメッセージを読む。利用可能なメッセージを有さないフィードは、バックグラウンドにおいて<feed−poll−freq>で新たなメッセージについてポーリングされる。
2.全てのデータフィードが利用可能なメッセージを有する場合の次のメッセージループ:
a.前にメッセージを有さなかったフィードが今は利用可能なメッセージを有する場合、そのフィードについてのタイマを止める。
b.最も低いメッセージ時刻(t)を伴うメッセージを処理する。2以上のフィードが同じメッセージ時刻を有する場合、最も低い<feed−precedence>からのメッセージが使用される。
c.このフィードから次のメッセージを読み出してバッファに入れる。
d.(メッセージ時刻(t)>マーケット時刻)の場合、マーケット時刻はtへと移る。
3.ひとつ以上のフィードが利用可能なメッセージを有さない場合の次のメッセージループ:
a.前にメッセージを有さなかったフィードが今は利用可能なメッセージを有する場合、そのフィードについてのタイマを止める。
b.(利用可能なメッセージを有するフィードのそれぞれの次のメッセージから)最も低いメッセージ時刻(t)を取得する。2以上のフィードが同じメッセージ時刻を有する場合、最も高い優先性を有するフィードからのメッセージが使用される。
c.(メッセージ時刻(t)≦マーケット時刻)の場合、このメッセージを処理し、このフィードから次のメッセージを読み出しバッファに入れる。
d.(メッセージ時刻(t)>マーケット時刻)の場合、これは、メッセージ時刻≦マーケット時刻の状況で全てのメッセージが読まれたことを暗示する。feed idle timeoutは、最後のメッセージがフィードから処理された時刻(メッセージ処理時刻)に対するものである。しかしながら、次のメッセージを処理するか否かはメッセージ時刻に対するものである。利用可能なメッセージを有さない各フィードについて、
i.0:0:0.000からタイマを開始する。このタイマは0で開始されなければならない。feed−idle−timeoutは常にゼロベースであり、このタイマから到達されるものであるからである。market−time@timer−start@feedを記録する。
ii.フィードごとの処理が許可される直近時刻(process−time@feed)を計算する。
if ( timer < <feed-idle-timeout> )
{
process-time@feed = market-time@timer-start@feed
}
else
{
process-time@feed = system-time - <feed-latency>
}
<feed−idle−timeout>までは、メッセージが前に終わったところから続けられることが期待されていてもよく、したがって、現在のマーケット時刻を超えて処理しない。<feed−idle−timeout>に到達した後は、メッセージは<feed−latency>だけ実際の時刻で遅れるであろう。システム時刻は実際の時刻の近似として使用される。処理が許可される直近時刻(process−time)は全てのフィード毎処理時刻のなかで最も小さいものである。process-time=MINIMUM(all process-time@feed)。
iii.message-time (t) ≧ process-timeの場合、
1.このメッセージを処理し、このフィードから次のメッセージを読み出してバッファに入れる。
2.(t>マーケット時刻)の場合、マーケット時刻はtへと移る。
iv.それ以外の場合(すなわちmessage-time (t) < process-time)、MINIMUM(poll-freq)だけ待機し、再度チェックする。
図7は、最大の待ち時間における例示的な弾性的追跡プロセッサ可視化である。1−4で示される4つのフィードがある。それぞれはファイル名識別子と、I−情報、T−取引、O−注文およびC−制御などのフィード内容のインジケータと、を有する。各フィードについて、フィードで消費された最後のメッセージはフィード時刻の左側に示され、そのフィードで消費されるのを待っている次のメッセージはフィード時刻の右側に示される。フィード3について、消費されるべき係属中のメッセージはない。各フィードについて、フィード1のメッセージ時刻0:00:00.000および10:21:17.387などの「メッセージ時刻」があり、それに伴う8や421はファイルにおけるメッセージの位置、すなわちファイルオフセットである。フィード1の[0]や[1]などの、対応するメッセージ時刻に続く括弧付きの数字は、メッセージを特定する数字であるメッセージトランザクションIDである。「マーケット時刻」は10:20:20.098であり、それは(信頼の置けるフィードからの)最新のメッセージ時刻である。「実際の時刻」は10:20:25.098であり、水平軸に記録される。「マーケット待ち時間」は0:00:05.00である。「追跡待ち時間」は0:00:05.00であり、これは係属中のメッセージがある場合のマーケット待ち時間と同じである。フィードアイドル時間は示されていないが、トラッカ設定ファイルで設定される値である。
他の弾性的追跡の例示的な実施の形態が以下に説明される。ひとつ以上のフィードが非アクティブの場合またはタイムアウトした場合、代替的な次のメッセージループが使用される。これはある点では効率を向上させうる。データフィード状態は以下のように維持される。まず、フィードがアクティブから非アクティブへと遷移した場合、0:0:0.000からタイマを開始する。このタイマは0で開始されなければならない。feed−idle−timeoutは常にゼロベースであり、このタイマから到達されるものであるからである。このタイマがfeed−idle−timeoutに達した場合、フィードは非アクティブからタイムアウトへと遷移する。次に、フィードが非アクティブからタイムアウトへと遷移した場合、タイマを止める−それはもう必要ではない。前にメッセージを有さなかったフィードが今は利用可能なメッセージを有する場合、フィードはアクティブへと遷移して戻る。
ひとつ以上のフィードが非アクティブ状態またはタイムアウト状態にある場合の次のメッセージループ:
1.(利用可能なメッセージを有するフィードのそれぞれの次のメッセージから)最も低いメッセージ時刻(t)を取得する。2以上のフィードが同じメッセージ時刻を有する場合、最も高い優先性を有するフィードからのメッセージが使用される。
2.(メッセージ時刻(t)≦マーケット時刻)の場合、このメッセージを処理し、このフィードから次のメッセージを読み出しバッファに入れる。
3.(メッセージ時刻(t)>マーケット時刻)の場合:メッセージ時刻≦マーケット時刻の状況で全てのメッセージを読んだことを暗示する。
if (ひとつ以上のフィードが「非アクティブ」状態にある)
{
wait {{minimum(feed-poll-freq)}}
}
else
{
//メッセージを有さない全てのフィードが今や「タイムアウト」状態にあることを暗示する。
if ( message time < system-time - maximum(全てのタイムアウトしたフィードの<feed-latency>) )
{
process-message
}
else
{
wait minimum(feed-poll-freq)
}
}
a.<feed−idle−timeout>までは、メッセージは前に終わったところから続くことが期待されている。したがって、処理は現在のマーケット時刻を超えて続かない。この時点で全てのフィードがブロックされる。
b.<feed−idle−timeout>に到達した後は、メッセージは<feed−latency>だけ実際の時刻で遅れるであろう。システム時刻を実際の時刻の近似として使用する。
フィード毎の最大待ち時間(グローバルな最大待ち時間の代わりに)により、絶えずメッセージが流れてくるフィードよりも低い待ち時間がメッセージを欠いているフィードに設定されている場合に、全体の待ち時間が低減される。
以下の状況を想定する:
フィードA:大きなラグ(例えばコンバータの非効率性による)を伴う多くのメッセージ(すなわち、メッセージは常に利用可能である)
フィードB:小さなラグの非常に少数のメッセージ。
全てのフィードがメッセージを有する場合、トラッカ待ち時間=最も遅いフィードの待ち時間。ひとつ以上のフィードがメッセージを有さない場合、トラッカ待ち時間はそれが(max(feed-idle-timeout), max(feed-latency))の最大に到達する時点まで増大する。feed−idle−timeoutに到達すると、トラッカタイマはシステム時刻に対して早められる。feed−idle−timeoutがメッセージを欠いている全てのフィードにおいて到達されると、トラッカタイマはmax (feed-latency on missing feeds)だけシステム時刻から遅れるであろう。
システム時刻への依存性を低減した他の弾性的追跡の実施の形態が説明される。
1.ゼロの開始状態を仮定する。すなわち、リードバッファにはメッセージはない。何が利用可能かを知るべく、全てのフィードから最初のメッセージを読み出す。利用可能なメッセージを有さないフィードは、バックグラウンドにおいて<feed−poll−freq>で新たなメッセージについてポーリングされる。
2.全てのフィードが利用可能なメッセージを有する場合の次のメッセージループ:
a.前にメッセージを有さなかったフィードが今は利用可能なメッセージを有する場合、そのフィードについてのタイマを止める。
b.最も低いメッセージ時刻(t)を伴うメッセージを処理する。2以上のフィードが同じメッセージ時刻を有する場合、最も低い<feed−precedence>からのメッセージが使用される。
c.このフィードから次のメッセージを読み出してバッファに入れる。
d.(メッセージ時刻(t)>マーケット時刻)の場合、マーケット時刻はtへと移る。
3.ひとつ以上のフィードが利用可能なメッセージを有さない場合の次のメッセージループ:
a.前にメッセージを有さなかったフィードが今は利用可能なメッセージを有する場合、そのフィードについてのタイマを止める。
b.(利用可能なメッセージを有するフィードのそれぞれの次のメッセージ)から最も低いメッセージ時刻(t)を取得する。2以上のフィードが同じメッセージ時刻を有する場合、最も高い優先性を有するフィードからのメッセージが使用される。
c.(メッセージ時刻(t)≦マーケット時刻)の場合、このメッセージを処理し、このフィードから次のメッセージを読み出しバッファに入れる。
d.(メッセージ時刻(t)>マーケット時刻)の場合。
これは、メッセージ時刻≦マーケット時刻の状況で全てのメッセージを読んだことを暗示する。タイマは、最後のメッセージがフィードから処理された時刻(メッセージ処理時刻)に対するものである。しかしながら、次のメッセージを処理することを選択するか否かはメッセージ時刻に対するものである。
利用可能なメッセージを有さない各フィードについて、
(I)0:0:0.000からタイマを開始する。このタイマは0で開始されなければならない。feed−idle−timeoutは常にゼロベースであり、このタイマから到達されるものであるからである。
1.market−time@timer−start@feedを記録する。process-time@feedはこの値に対して計算される。この値はタイマが止まるまでリセットされない。
2.system−time@timer−start@feedを記録する。この値はデルタタイマを計算するためだけに使用される。
(II)フィードごとの処理が許可される直近時刻(process−time@feed)を計算する。
if ( timer < <feed-idle-timeout> )
{
process-time@feed = market-time@timer-start@feed
}
else if ( timer > <feed-latency> - latency-fudge )
{
process-time@feed = market-time@timer-start@feed
}
else
{
process-time@feed = market-time@timer-start@feed + timer + latency-fudge - <feed-latency>
}
<feed−idle−timeout>までは、メッセージが前に終わったところから続くことを期待してもよく、したがって、現在のマーケット時刻を超えて処理しない。
<feed−idle−timeout>に到達した後は、メッセージは<feed−latency>だけ実際の時刻で遅れるべきである。実際の時刻への直接のアクセスはないので、実際の時刻の良い近似は(market-time@timer-start@feed + timer)である。先読みバッファによると、実際の時刻はフィードにフラッシュされた直近のメッセージによって決定されうる。
latency-fudgeは、フィードにおける前の待機によって導入された待ち時間を補償するために使用される。market-time@timer-start@feedは既に実際の時刻で遅れているかもしれない。マーケット時刻がタイマ時刻より少量だけ移動した場合、そのフィードが既に遅れていることを知る。latency-fudge = maximum(dt - dm, 0)。
delta-market-time (dm) = market-time - market-time\@preceding-timer-start@(any feed)
delta-timer (dt) = system-time - system-time\@preceding-timer-start@(any feed)
if ( dt > dm )
{
latency-fudge = dt - dm
}
else
{
latency-fudge = 0
}
処理が許可される直近時刻(process−time)は全てのフィード毎処理時刻のなかで最も小さいものである。process-time = MINIMUM(全てのprocess-time@feed)。
If message-time (t) ≧ process-time:
3.このメッセージを処理し、このフィードから次のメッセージを読み出してバッファに入れる。
4.(t>マーケット時刻)の場合、マーケット時刻はtへと移る。
それ以外の場合(すなわちmessage-time (t) < process-time)、MINIMUM(poll-freq) だけ待機し、再度チェックする。
本例示的な実施の形態の最大待ち時間は:
max latency = max(feed idle of missing feeds) + max(latency of missing feeds) + latency @ timer start。
フィードアイドルが経過した後は、max latency = max(latency of missing feeds) + latency @ timer start。タイマ開始の初回では、我々は、実際のシステム時刻を参照することなしにフィードが実時間からどれほど遅れているかを確立することができない。
システム時刻は基準時刻の類義語として使用される。基準時刻は全ての共有コンポーネントによって使用される現在時刻である。単純化すると、これは世界が知る現在時刻である。しかしながら、異なるデータフィードソースのシステム時刻は同期していない場合がある。各データフィードメッセージのタイムスタンプは各データフィードソースのシステム時刻に関して正しいかもしれないが、異なるソースの異なるシステム時刻が同期エラーを招く可能性がある。例えば、第1ソースから受信した第1データフィードメッセージが、第2データフィードソースから受信した第2データフィードメッセージと同等のタイムスタンプを有しつつも、その第1データフィードメッセージは同じ実際の時刻に関しないものである可能性がある。
ある例示的な実施の形態では、共有コンポーネントを同期させるために、「基準時刻」が共有コンポーネントに報知される。ある例示的な実施の形態では、NTP(ネットワークタイムプロトコル)を使用して、生成に使用される全てのシステムクロックを(好ましくは同じ上流サーバに対して)同期させる。これにより、全てのサーバについてシステム時刻が同じに維持される。
外部ソースから基準時刻を受信することにはいくつかの利点がある。例えば、テスト目的で、基準時刻の異なるソースを提供して所定の条件をシミュレートできることは有用である。テスト目的で、基準時刻は実際の時刻より速く動くか遅く動くことができる。
異なるデータフィードメッセージを並べ替えるタスクをより扱いやすいかたまりに分けるべく、弾性的トラッカは全ての入力データフィードは既に正しく並べられているという前提の下で動作してもよい。しかしながら、この前提は常に正しいとは限らない。したがって、ある例示的な実施の形態では、弾性的トラッカは、データフィードメッセージが順序が乱れた状態で処理される可能性を最小化するために、入来データフィードを並べ直す。入来データフィードの並べ直しは、各データフィードについて、先読みバッファに入来データフィードメッセージを格納し、各メッセージのタイムスタンプにしたがって先読みバッファ内の並びを直すことによってなされうる。
Figure 2016527575
図8は、監視システムアプリケーションのコンテキストにおける、非限定的な例示的弾性的追跡プロセッサの機能ブロック図である。監視コンピュータサーバは、ひとつ以上のデータプロセッサと、ひとつ以上の外部データフィードソースと通信するインタフェースと、を含む。インタフェースは、データフィードソースから、電子的なデータフィードメッセージを受信する。典型的には、電子的データメッセージはデータメッセージのストリームとして受信される。しかしながら、あるソースから日ごとバッチまたは準定期的なバッチのデータが配信されてもよい。データフィードソースのうちのひとつは監視対象の電子的マーケット(例えば、自動電子交換)であってもよく、受信されたデータフィードは電子的マーケットからのマーケットデータを関連付ける。監視コンピュータサーバはさらに、コンピュータハードドライブやSSDなどの持続性データストレージと、データストレージのためのひとつ以上のコンピュータメモリ(例えば、RAMメモリ)と、を備える。データフィードは持続性ストレージ、メモリ、または持続性ストレージおよびメモリの両方、に保持される。監視システムはひとつ以上のオーダブックをメモリに維持してもよい。各オーダブックは電子的マーケットで取り引きされる商品に対応する。
異なるデータフィードの受信されたデータメッセージが時間的および論理的順序で並んでいない場合、実時間に近い形でマーケットの真の情勢を生成することはできない。データフィードは弾性的マーケットトラッカによって処理される。該トラッカは、異なるデータフィードをインターリーブし、異なるデータフィードのデータメッセージのタイムスタンプにしたがい、正しい順序のデータメッセージの統合されたデータフィードを生成する。各データフィードに対応するデータメッセージをバッファするためにリードバッファが維持されてもよい。例はFIFOバッファやセグメント化されたコンピュータメモリを含むがそれに限定されない。弾性的トラッカがどのデータメッセージが処理対象であり、そのデータメッセージがいつ処理可能かを決定するとき、バッファは利用可能なメッセージについてのクエリを受ける。弾性的マーケットトラッカは例えば上述の「弾性的」トラッカ方法のうちのひとつを使用してデータメッセージを追跡または処理し、処理されたデータメッセージのストリームを出力する。処理されたデータメッセージのストリームは持続性ストレージまたはメモリに格納される。ある実施の形態では、インターリーブされたデータメッセージは、ひとつ以上のクライアントコンピュータと通信するよう構成された外部インタフェースを介して、ひとつ以上のクライアントコンピュータにストリームされる。マーケットトラッカは、データメッセージに関するアクションに基づいて、メモリに保持される対応するオーダブックを更新する。監視コンピュータサーバは、統合データフィードから所定のパターンを検出するかまたはオーダブックからイベントを検出する警告エンジンを含んでもよい。警告エンジンは、パターンを検出すると、警告を生成し、外部インタフェースを介してクライアントコンピュータのうちのひとつ以上に警告を送信する。
ある例示的な実施の形態では、監視コンピュータサーバは、クライアントコンピュータから受信されたクエリ/要求を取り扱う要求コンピュータエンジンを備える。要求エンジンは監視コンピュータサーバ内に保持される情報を集め、応答を生成し、クライアントコンピュータに出力する。
本願で説明された柔軟な追跡技術は多くの技術的利点を有する。第1に、異なるフィードのメッセージが正しいメッセージの時間的順序で処理されることを確実にしつつ、追跡プロセッサがメッセージを待ちながらアイドルで過ごす時間をかなり低減する。これにより、マーケットで最も遅いフィードに拘束された状態で都合が良いときに処理待ち時間を低減することができる。第2に、許されるフィード待ち時間はフィード毎に設定可能である。第3に、いくつかのフィードは順序から外れて処理可能であるので、これらのフィードのメッセージを待つためにマーケットの残りを止める必要はない。例はニュースフィードを含む。第4に、本技術は、メトロノームベースのソリューションの限界であった不定期な/ぎくしゃくした処理を除去する。第5に、メトロノームベースのソリューションにとって生来的である動作の複雑さが低減される。1日の内での再起動が要求される場合、メトロノームベースのソリューションは固定の順序で再起動されなければならない。メッセージが正しい時間的順序で処理されることを確保するために、コンポーネントの再起動の間に待ち期間が必要である。また、メトロノームフィードなどの外部コンポーネントの必要性はビルトインコンポーネントによって置き換えられる。
追跡プロセッサは正確な時刻を使用して動作し、時間の進行の小さな逸脱にも敏感である。追跡プロセッサはメッセージの相対的並べ替えについて入来データフィードの非常に小さな粒度もサポート可能である点で有利である。上流のタイムスタンプコンポーネント(例えば、取引交換エンジン)は、特化した高精度実時間クロックを有するハードウエアに配置されうる。その精度は、追跡プロセッサが正確さで劣るハードウエアを使用して実現される場合でも、相対的並べ替えのために使用されうる。
システムのタイムゾーンとマーケットのタイムゾーンとが異なる場合、ネットワークタイムプロトコル(NTP)の同期が特定のマスタクロックと共に使用されてもよい。ある例示的な実施の形態では、システム時刻はシステムに入力されるパラメータであってもよい。この場合、システム時刻はテストシステムにおいてかなり異なることが可能となる。実時間日のシミュレーションはその日の異なる時刻に実行されてもよい。テストは、実時間日が通常時間よりも速くまたは遅く再生されることを要求しうる。
システム時刻が追跡プロセッサへの入力として使用される場合、それは全ての従属コンポーネントにとって利用可能なフィード入力として到着することが好ましい。ある例示的な実施の形態では、現在のシステム時刻はシステムメッセージバス上のすべての共有コンポーネントに報知されてもよい。しかしながら、この例示的なアプローチには、報知を伝送したり読んだり処理したりするのに要する時間に起因して、非常に小さな時間単位に関して限界が存在しうる。
他の利点は、フィード回復ウィンドウを使用することで、例えばデータ伝送セッションが落ち、続けて再接続して続くといった、フィードが一時的に損なわれて次に回復する状況に対応可能であることである。回復ウィンドウ内に回復するフィードは順序通りに処理されうる。回復ウィンドウが満了すると、全体のマーケット待ち時間は全ての設定フィードのなかで最大の待ち時間へと縮まる。
フィードがデッドである場合、追跡プロセッサはこのフィードが存在しないかのように振る舞ってもよい。すなわち、追跡プロセッサはこのフィードの係属中のメッセージを落とし、新しいメッセージについてこのフィードをポーリングするのを止める。
他の利点は、弾性的追跡プロセッサが入力データフィードからのメッセージを一度にひとつずつ読んでもよいことである。メッセージが厳格な非降順にあると仮定することにより、このトラッカアルゴリズムに入る前にフィードの読みをバッファしてそれらを並べ直す必要はない。バッファすることはリソースインテンシブな処理であり得るので、入来フィードごとに実行される方が良い場合がある。このアプローチはバッファすることをより扱いやすいかたまりへと分離する。これにより、各コンポーネントに関連する複雑さが低減され、望まれるか必要であれば複数のサーバに亘って処理負荷を分散させることを可能とする。
各入来データフィードは、フィード全体において厳格な非降順の時間的順序にあるメッセージを含んでもよい。追跡プロセッサはメッセージ時刻を使用してデータフィード間でメッセージを並べ替えるが、追跡プロセッサはあるデータフィード内ではメッセージを並べ直さないことが好適である。しかしながら、あるデータフィード内で時間的に正しく並べられていないメッセージが並べ直される場合、追跡プロセッサがデータフィードを読む前にメッセージをバッファして並べ直すための中間処理が挿入されうる。あるデータフィード内で時間的に後方にジャンプするメッセージは順序から外れて処理されうる。上述の通り、マーケット時刻は前進するのみであり、後ろ向きには動かない。しかしながら、下流のコンポーネントは、後方にジャンプするタイムスタンプを伴うメッセージについて準備されているべきである。追跡プロセッサの弾性範囲の外にあるメッセージが到着した場合、その特定のトランザクションのタイムスタンプはマーケット時刻から遅れているであろう。
上記の説明は多くの詳細を含むが、それらは限定として解釈されるべきではなく、ある現在好適な実施の形態の説明を単に提供するものとして解釈されるべきである。本明細書で説明される実施の形態は独立した実施の形態として考えられてもよく、または非限定的な例を説明するために任意の組み合わせで考えられてもよい。非限定的な例示的実施の形態の技術がウェブサービスプロバイダの分散ストレージサービスのコンテキストで説明されたが、説明された技術的思想は他の分散処理およびストレージのシステムおよびサービスに適用可能である。なお、本技術は当業者には明らかであろう他の実施の形態を完全に含む。単数形での要素への参照はそのように明示されない限り「ひとつのみ」を意味することを意図するものではなく、むしろ「ひとつ以上」を意味する。上述の実施の形態の要素に対する構造的および機能的等価物のうち当業者に既知のものは全て、明示的に本明細書に参照により組み入れられており、本明細書に包含されることが意図されている。さらに、本明細書に包含されるために、デバイスや方法が、説明された技術により解決されるべきおのおの全ての課題を指向する必要はない。

Claims (28)

  1. データメッセージフィードポートと接続され、複数のデータメッセージソースからデータメッセージを受信するよう構成された処理回路であって、各データメッセージソースは対応する時系列のデータメッセージを生成しており、前記複数のメッセージフィードポートで受信されたひとつ以上のデータメッセージはその対応する時系列から外れて受信される処理回路を備える電子データメッセージ処理装置であって、
    前記処理回路は、
    前記入来データメッセージフィードポートにおいて受信されたデータメッセージを、データメッセージ処理待ち時間に基づいて処理し、
    前記複数のデータメッセージフィードポートから受信された前記データメッセージに統合時系列を提供するよう前記データメッセージ処理待ち時間を選択的に改め、
    合成データメッセージストリームの前記データメッセージが前記統合時系列でひとつ以上の宛先ポートに送信されるように前記合成データメッセージストリームを生成する、
    よう構成される電子データメッセージ処理装置。
  2. 前記処理回路はさらに、
    状態パラメータを検出し、
    前記状態パラメータが変わるまでに受信したデータメッセージを時系列にあるとして処理し、
    前記状態パラメータが変わった後に受信したデータメッセージを時系列から外れるとして処理し、
    前記状態パラメータが変わった後に受信した前記データメッセージを並べ替え、かつ、前記状態パラメータが変わった後に受信した前記データメッセージを含む前記合成データメッセージストリームに前記統合時系列を提供するために、前記処理待ち時間を改める、
    よう構成される請求項1に記載の電子データメッセージ処理装置。
  3. 前記処理回路はさらに、前記電子データメッセージ処理装置における現在の実際の時刻とは別の基準時刻を使用して前記合成データメッセージストリームの前記データメッセージを処理するよう構成され、
    前記基準時刻と前記現在の実際の時刻との差は前記データメッセージ処理待ち時間に関連付けられており、
    前記処理回路は前記基準時刻を変更するよう構成される請求項2に記載の電子データメッセージ処理装置。
  4. 前記処理回路はさらに、前記合成データメッセージストリームの前記データメッセージを処理し、前記基準時刻を使用して時系列から外れたデータメッセージを検出するよう構成される請求項3に記載の電子データメッセージ処理装置。
  5. 前記処理回路はさらに、時間的メッセージ系列から外れたメッセージが処理された場合に前記基準時刻を維持するよう構成される請求項3に記載の電子データメッセージ処理装置。
  6. 前記処理回路は前記データメッセージフィードポートのそれぞれで現在受信されている次のデータメッセージであって現時点で最も低いデータメッセージ時刻を有する次のデータメッセージのメッセージ時刻と前記基準時刻とを比較するよう構成され、
    (a)前記データメッセージ時刻が前記基準時刻より小さい場合、前記処理回路は該データメッセージを処理し該データメッセージフィードポートにおける次のデータメッセージを読むよう構成され、
    (b)前記データメッセージ時刻が前記基準時刻より大きい場合、前記処理回路は前記基準時刻を前記データメッセージ時刻に合わせるよう構成される請求項3に記載の電子データメッセージ処理装置。
  7. 前記データメッセージフィードポートのうちのひとつが非アクティブ状態にあると判定された場合、前記処理回路は、(a)前記データメッセージフィードポートのうちの前記ひとつが所定の回復期間内にアクティブ状態になると判定された場合には前記合成データメッセージストリームの前記データメッセージを時間的順序で処理し、(b)前記データメッセージフィードポートのうちの前記ひとつが前記所定の回復期間外でアクティブ状態になると判定された場合には前記合成データメッセージストリームの前記データメッセージを時間的順序から外れて処理するよう構成される請求項3に記載の電子データメッセージ処理装置。
  8. 前記非アクティブなデータメッセージフィードポートの前記判定に基づいて、前記処理回路は、該データメッセージフィードポートが前記非アクティブ状態にある間は前記基準時刻の進行を止めるよう構成される請求項7に記載の電子データメッセージ処理装置。
  9. 前記処理回路は、前記合成データメッセージストリームの前記データメッセージを処理してひとつ以上の所定のパターンを検出し、該パターンに応じてひとつ以上の対応する警告データメッセージを生成するよう構成される請求項1に記載の電子データメッセージ処理装置。
  10. 前記処理回路は、前記合成データメッセージストリームの受信されたがまだ処理されていないデータメッセージを、以前に処理されたデータメッセージの内容に基づいて処理するよう構成される請求項1に記載の電子データメッセージ処理装置。
  11. 前記データメッセージのうちの少なくともいくつかは電子的取引交換からのトランザクションパラメータに関係し、
    前記処理回路は、該トランザクションパラメータに基づいて、前記電子的取引交換のひとつ以上のオーダブックを更新するよう構成される請求項1に記載の電子データメッセージ処理装置。
  12. 前記処理回路はさらに、前記統合時系列から外れた検出データメッセージを使用して前記ひとつ以上のオーダブックを更新するよう構成される請求項11に記載の電子データメッセージ処理装置。
  13. 前記処理回路は、前記データメッセージフィードポートで受信された状態のデータメッセージを取得し、前記取得されたデータメッセージ内の前記データを正規化されたデータフォーマットに変換するよう構成される請求項1に記載の電子データメッセージ処理装置。
  14. 各受信データメッセージはタイムスタンプを含み、
    前記処理回路は、順番通りでない状態で受信されたひとつ以上のデータメッセージを、前記データメッセージのタイムスタンプに基づいて並べ直すよう構成される請求項1に記載の電子データメッセージ処理装置。
  15. データメッセージフィードポートに接続された処理回路を有する電子データメッセージ処理装置で実行される方法であって、
    前記データメッセージフィードポートにおいて複数のデータメッセージソースからデータメッセージを受信することであって、各データメッセージソースは対応する時系列のデータメッセージを生成しており、前記複数のメッセージフィードポートで受信されたひとつ以上のデータメッセージはその対応する時系列から外れて受信されることと、
    前記処理回路によって、前記入来データメッセージフィードポートにおいて受信されたデータメッセージを、データメッセージ処理待ち時間に基づいて処理することと、
    前記複数のデータメッセージフィードポートから受信された前記データメッセージに統合時系列を提供するよう前記データメッセージ処理待ち時間を選択的に改めることと、
    合成データメッセージストリームの前記データメッセージが前記統合時系列でひとつ以上の宛先ポートに送信されるように前記合成データメッセージストリームを生成することと、を含む方法。
  16. 状態パラメータを検出することと、
    前記状態パラメータが変わるまでに受信したデータメッセージを時系列にあるとして処理することと、
    前記状態パラメータが変わった後に受信したデータメッセージを時系列から外れるとして処理することと、
    前記状態パラメータが変わった後に受信した前記データメッセージを含む前記合成データメッセージストリームに前記統合時系列を提供するよう前記状態パラメータが変わった後に受信した前記データメッセージを並べ替えるために、前記処理待ち時間を改めることと、をさらに含む請求項15に記載の方法。
  17. 前記電子データメッセージ処理装置における現在の実際の時刻とは別の基準時刻を使用して前記合成データメッセージストリームの前記データメッセージを処理することをさらに含み、
    前記基準時刻と前記現在の実際の時刻との差は前記データメッセージ処理待ち時間に関連付けられており、
    前記処理回路は前記基準時刻を変更するよう構成される請求項15に記載の方法。
  18. 前記合成データメッセージストリームの前記データメッセージを処理することと、
    前記基準時刻を使用して時系列から外れたデータメッセージを検出することと、をさらに含む請求項17に記載の方法。
  19. 時間的メッセージ系列から外れたメッセージが処理された場合に前記基準時刻を維持することをさらに含む請求項17に記載の方法。
  20. 前記データメッセージフィードポートのうちのひとつが非アクティブ状態にあると判定された場合、前記方法はさらに、
    (a)前記データメッセージフィードポートのうちの前記ひとつが所定の回復期間内にアクティブ状態になると判定された場合には前記合成データメッセージストリームの前記データメッセージを時間的順序で処理することと、
    (b)前記データメッセージフィードポートのうちの前記ひとつが前記所定の回復期間外でアクティブ状態になると判定された場合には前記合成データメッセージストリームの前記データメッセージを時間的順序から外れて処理することと、を含む請求項17に記載の方法。
  21. 前記非アクティブなデータメッセージフィードポートの前記判定に基づいて、該データメッセージフィードポートが前記非アクティブ状態にある間は前記基準時刻の進行を止めることをさらに含む請求項20に記載の方法。
  22. 前記データメッセージフィードポートのそれぞれで現在受信されている次のデータメッセージであって現時点で最も低いデータメッセージ時刻を有する次のデータメッセージのメッセージ時刻と前記基準時刻とを比較することと、
    (a)前記データメッセージ時刻が前記基準時刻より小さい場合、該データメッセージを処理し該データメッセージフィードポートにおける次のデータメッセージを読むことと、
    (b)前記データメッセージ時刻が前記基準時刻より大きい場合、前記基準時刻を前記データメッセージ時刻に合わせることと、をさらに含む請求項21に記載の方法。
  23. 前記合成データメッセージストリームの前記データメッセージを処理してひとつ以上の所定のパターンを検出し、該パターンに応じてひとつ以上の対応する警告データメッセージを生成することをさらに含む請求項15に記載の電子データメッセージ処理装置。
  24. 前記合成データメッセージストリームの受信されたがまだ処理されていないデータメッセージを、以前に処理されたデータメッセージの内容に基づいて処理することをさらに含む請求項15に記載の電子データメッセージ処理装置。
  25. 前記データメッセージのうちの少なくともいくつかは電子的取引交換からのトランザクションパラメータに関係し、
    前記方法はさらに、該トランザクションパラメータに基づいて、前記電子的取引交換のひとつ以上のオーダブックを更新することをさらに含む請求項15に記載の電子データメッセージ処理装置。
  26. 前記統合時系列から外れた検出データメッセージを使用して前記ひとつ以上のオーダブックを更新することをさらに含む請求項25に記載の電子データメッセージ処理装置。
  27. 前記データメッセージフィードポートで受信された状態のデータメッセージを取得し、前記取得されたデータメッセージ内の前記データを正規化されたデータフォーマットに変換することをさらに含む請求項1に記載の電子データメッセージ処理装置。
  28. 各受信データメッセージはタイムスタンプを含み、
    前記方法はさらに、前記データメッセージフィードポートのそれぞれにおいて順番通りでない状態で受信されたひとつ以上のデータメッセージを、前記データメッセージのタイムスタンプに基づいて並べ直すことをさらに含む請求項15に記載の電子データメッセージ処理装置。
JP2015563040A 2013-05-31 2014-05-29 複数のソースからのメッセージ情報を弾性的に処理する装置、システムおよび方法 Active JP6009108B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361829545P 2013-05-31 2013-05-31
US61/829,545 2013-05-31
PCT/IB2014/000892 WO2014191820A1 (en) 2013-05-31 2014-05-29 Apparatus, system, and method of elastically processing message information from multiple sources

Publications (2)

Publication Number Publication Date
JP2016527575A true JP2016527575A (ja) 2016-09-08
JP6009108B2 JP6009108B2 (ja) 2016-10-19

Family

ID=51986407

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015563040A Active JP6009108B2 (ja) 2013-05-31 2014-05-29 複数のソースからのメッセージ情報を弾性的に処理する装置、システムおよび方法

Country Status (7)

Country Link
US (5) US10110540B2 (ja)
EP (1) EP3005276B1 (ja)
JP (1) JP6009108B2 (ja)
AU (1) AU2014272791B2 (ja)
CA (1) CA2913946C (ja)
SG (1) SG11201509253WA (ja)
WO (1) WO2014191820A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280791B2 (en) * 2012-12-20 2016-03-08 Trading Technologies International, Inc. Systems and methods for routing trade orders based on exchange latency
EP3005276B1 (en) 2013-05-31 2021-01-13 Nasdaq Technology AB Apparatus, system, and method of elastically processing message information from multiple sources
US10664548B2 (en) * 2013-07-12 2020-05-26 Trading Technologies International, Inc. Tailored messaging
SE537697C2 (sv) * 2013-08-08 2015-09-29 Enigio Time Ab Förfarande för att skapa signaler för tidsstämpling av dokument och förfarande för tidsstämpling av dokument
US10885583B2 (en) * 2013-12-19 2021-01-05 Chicago Mercantile Exchange Inc. Deterministic and efficient message packet management
US9274861B1 (en) * 2014-11-10 2016-03-01 Amazon Technologies, Inc. Systems and methods for inter-process messaging
US20170053291A1 (en) * 2015-08-17 2017-02-23 International Business Machines Corporation Optimal time scale and data volume for real-time fraud analytics
US11411907B2 (en) * 2016-05-16 2022-08-09 Chicago Mercantile Exchange Inc. Systems and methods for consolidating multiple feed data
US11004010B2 (en) * 2016-12-30 2021-05-11 eSentire, Inc. Processing real-time processing requests using machine learning models
US11082351B2 (en) 2017-01-05 2021-08-03 Chicago Mercantile Exchange Inc. Network congestion reduction based on routing and matching data packets
US10445220B2 (en) * 2017-01-25 2019-10-15 Verizon Patent And Licensing Inc. System and methods for application activity capture, error identification, and error correction
US10798145B1 (en) * 2017-04-25 2020-10-06 Benjamin J. Garney Analyzing data streams
US11138076B2 (en) * 2017-06-30 2021-10-05 Redis Ltd. Methods, systems, and media for controlling append-only file rewrites
US11196834B2 (en) * 2017-09-29 2021-12-07 Arista Networks, Inc. System and a method for distributing information
US10505871B1 (en) * 2017-11-30 2019-12-10 Sandeep Jain Future messaging maximizing contextual relevancy and minimizing information overload based distractions
US10990402B1 (en) * 2019-12-18 2021-04-27 Red Hat, Inc. Adaptive consumer buffer
US11551300B2 (en) * 2021-01-21 2023-01-10 Chicago Mercantile Exchange Inc. Data distribution architecture
CN113965285B (zh) * 2021-09-14 2022-10-18 上海交通大学 一种基于ntp协议的跨系统多传感器时间同步与标定方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005062181A1 (en) * 2003-12-05 2005-07-07 Freescale Semiconductor, Inc. Apparatus and method for time ordering events in a system having multiple time domains
US20100318495A1 (en) * 2009-06-12 2010-12-16 Sap Ag Correlation aware synchronization for near real-time decision support
US20110010460A1 (en) * 2009-07-09 2011-01-13 Lime Brokerage Holding Llc Brokerage Transaction Server and Method Using Encapsulated Messages
JP2012123584A (ja) * 2010-12-08 2012-06-28 Hitachi Ltd メッセージ順序制御装置及びその方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6975656B1 (en) * 2000-03-29 2005-12-13 Microsoft Corporation Method and system for accurately calculating latency variation on an end-to-end path in a network
US20120271748A1 (en) * 2005-04-14 2012-10-25 Disalvo Dean F Engineering process for a real-time user-defined data collection, analysis, and optimization tool (dot)
US7986624B2 (en) * 2005-10-28 2011-07-26 Viasat, Inc. Quality of service enhancements for adaptive coding and modulation
US7921046B2 (en) * 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US20100054254A1 (en) * 2006-10-05 2010-03-04 Holt John M Asynchronous data transmission
GB2458952B (en) * 2008-04-04 2012-06-13 Micron Technology Inc Queue processing method
US8549575B2 (en) * 2008-04-30 2013-10-01 At&T Intellectual Property I, L.P. Dynamic synchronization of media streams within a social network
US20100208729A1 (en) * 2008-10-17 2010-08-19 John Oddie Method and System for Receiving Market Data Across Multiple Markets and Accelerating the Execution of Orders
US8346646B2 (en) * 2008-11-20 2013-01-01 Advanced Intellectual Property Group, Llc Financial market replicator and simulator
CN101425093A (zh) * 2008-12-05 2009-05-06 腾讯科技(深圳)有限公司 基于社会性网络关系链的联系人动态内容聚合方法及系统
US8621011B2 (en) * 2009-05-12 2013-12-31 Avaya Inc. Treatment of web feeds as work assignment in a contact center
DE102010015588A1 (de) * 2010-04-19 2011-10-20 Beb Industrie-Elektronik Ag Verfahren zur Auszahlung von Banknoten durch Geldautomaten und Geldautomat zur Durchführung des Verfahrens
US8930979B2 (en) * 2010-11-11 2015-01-06 Time Warner Cable Enterprises Llc Apparatus and methods for identifying and characterizing latency in a content delivery network
US9256859B2 (en) * 2011-07-26 2016-02-09 Salesforce.Com, Inc. Systems and methods for fragmenting newsfeed objects
US10121196B2 (en) * 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
WO2013148693A1 (en) * 2012-03-27 2013-10-03 Exegy Incorporated Offload processing of data packets
US9280791B2 (en) 2012-12-20 2016-03-08 Trading Technologies International, Inc. Systems and methods for routing trade orders based on exchange latency
US20140249979A1 (en) 2013-03-01 2014-09-04 Secodix Corporation Enhancing the handling speed of electronic financial services messages
EP3005276B1 (en) 2013-05-31 2021-01-13 Nasdaq Technology AB Apparatus, system, and method of elastically processing message information from multiple sources

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005062181A1 (en) * 2003-12-05 2005-07-07 Freescale Semiconductor, Inc. Apparatus and method for time ordering events in a system having multiple time domains
US20100318495A1 (en) * 2009-06-12 2010-12-16 Sap Ag Correlation aware synchronization for near real-time decision support
US20110010460A1 (en) * 2009-07-09 2011-01-13 Lime Brokerage Holding Llc Brokerage Transaction Server and Method Using Encapsulated Messages
JP2012123584A (ja) * 2010-12-08 2012-06-28 Hitachi Ltd メッセージ順序制御装置及びその方法

Also Published As

Publication number Publication date
US20230319004A1 (en) 2023-10-05
US20190104099A1 (en) 2019-04-04
CA2913946A1 (en) 2014-12-04
US20200169524A1 (en) 2020-05-28
US11159471B2 (en) 2021-10-26
US11671395B2 (en) 2023-06-06
CA2913946C (en) 2017-02-14
JP6009108B2 (ja) 2016-10-19
WO2014191820A1 (en) 2014-12-04
US20220045979A1 (en) 2022-02-10
US20140359036A1 (en) 2014-12-04
EP3005276B1 (en) 2021-01-13
US10581785B2 (en) 2020-03-03
SG11201509253WA (en) 2015-12-30
AU2014272791A1 (en) 2015-12-17
EP3005276A4 (en) 2017-03-15
EP3005276A1 (en) 2016-04-13
AU2014272791B2 (en) 2017-01-12
US10110540B2 (en) 2018-10-23

Similar Documents

Publication Publication Date Title
JP6009108B2 (ja) 複数のソースからのメッセージ情報を弾性的に処理する装置、システムおよび方法
Rabkin et al. Aggregation and Degradation in {JetStream}: Streaming Analytics in the Wide Area
CN108280239B (zh) 同步机器人系统节点的系统和方法
EP1397888B1 (en) Method and system for efficient distribution of network event data
US8892719B2 (en) Method and apparatus for monitoring network servers
Brito et al. Scalable and low-latency data processing with stream mapreduce
US20110066598A1 (en) Sequence of events recorder facility for an industrial process control environment
CN107430606B (zh) 具有并行持久性的消息代理系统
JP5308403B2 (ja) データ処理の障害回復方法、システムおよびプログラム
US9058304B2 (en) Continuous workload availability between sites at unlimited distances
CN102523115B (zh) 一种基于动力环境系统的服务器监控系统
US9047126B2 (en) Continuous availability between sites at unlimited distances
CN103095837A (zh) 一种实现lustre元数据服务器冗余的方法
US20160125033A1 (en) Stream data processing method with time adjustment
CN107181805A (zh) 一种在微服务架构下实现全局有序重演的方法
CN109901948A (zh) 无共享数据库集群异地双活容灾系统
CN114676199A (zh) 一种同步方法、同步系统、计算机设备和存储介质
JP2015513708A (ja) 高信頼性・高性能のアプリケーションメッセージ配送のためのシステム
Thaler et al. Hybrid approach to hpc cluster telemetry and hardware log analytics
US20240020297A1 (en) Metrics and events infrastructure
Ding et al. A framework to improve the availability of stream computing
US11947542B2 (en) Certifying events in a streaming pipeline
Tarhini et al. Emergency management system design for accurate data: A case study
Emerson et al. Faster transaction commit even when nodes crash
Yu et al. Event Chain Clocks for performance debugging in parallel and distributed systems

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160804

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160819

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160913

R150 Certificate of patent or registration of utility model

Ref document number: 6009108

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250