IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ハイアニス・ポート・リサーチ・インコーポレーテッドの特許一覧

特表2023-540448分散型システムでの高度に確定的なレイテンシ
<>
  • 特表-分散型システムでの高度に確定的なレイテンシ 図1A
  • 特表-分散型システムでの高度に確定的なレイテンシ 図1B
  • 特表-分散型システムでの高度に確定的なレイテンシ 図1C
  • 特表-分散型システムでの高度に確定的なレイテンシ 図2
  • 特表-分散型システムでの高度に確定的なレイテンシ 図3A
  • 特表-分散型システムでの高度に確定的なレイテンシ 図3B
  • 特表-分散型システムでの高度に確定的なレイテンシ 図4
  • 特表-分散型システムでの高度に確定的なレイテンシ 図5
  • 特表-分散型システムでの高度に確定的なレイテンシ 図6A
  • 特表-分散型システムでの高度に確定的なレイテンシ 図6B
  • 特表-分散型システムでの高度に確定的なレイテンシ 図7
  • 特表-分散型システムでの高度に確定的なレイテンシ 図8
  • 特表-分散型システムでの高度に確定的なレイテンシ 図9
  • 特表-分散型システムでの高度に確定的なレイテンシ 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-09-25
(54)【発明の名称】分散型システムでの高度に確定的なレイテンシ
(51)【国際特許分類】
   H04L 69/28 20220101AFI20230915BHJP
   H04L 47/28 20220101ALI20230915BHJP
   H04L 47/56 20220101ALI20230915BHJP
   H04L 7/00 20060101ALI20230915BHJP
【FI】
H04L69/28
H04L47/28
H04L47/56
H04L7/00 990
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023508074
(86)(22)【出願日】2021-08-05
(85)【翻訳文提出日】2023-04-03
(86)【国際出願番号】 US2021044588
(87)【国際公開番号】W WO2022031878
(87)【国際公開日】2022-02-10
(31)【優先権主張番号】16/988,249
(32)【優先日】2020-08-07
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/988,491
(32)【優先日】2020-08-07
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.HDMI
2.FIREWIRE
3.イーサネット
(71)【出願人】
【識別番号】519435991
【氏名又は名称】ハイアニス・ポート・リサーチ・インコーポレーテッド
【氏名又は名称原語表記】HYANNIS PORT RESEARCH,INC.
(74)【代理人】
【識別番号】100087941
【弁理士】
【氏名又は名称】杉本 修司
(74)【代理人】
【識別番号】100112829
【弁理士】
【氏名又は名称】堤 健郎
(74)【代理人】
【識別番号】100142608
【弁理士】
【氏名又は名称】小林 由佳
(74)【代理人】
【識別番号】100155963
【弁理士】
【氏名又は名称】金子 大輔
(74)【代理人】
【識別番号】100150566
【弁理士】
【氏名又は名称】谷口 洋樹
(74)【代理人】
【識別番号】100213470
【弁理士】
【氏名又は名称】中尾 真二
(74)【代理人】
【識別番号】100220489
【弁理士】
【氏名又は名称】笹沼 崇
(74)【代理人】
【識別番号】100187469
【弁理士】
【氏名又は名称】藤原 由子
(74)【代理人】
【識別番号】100225026
【弁理士】
【氏名又は名称】古後 亜紀
(72)【発明者】
【氏名】アミカンギオーリ・アンソニー・ディー
(72)【発明者】
【氏名】バスト・アレン
(72)【発明者】
【氏名】ローゼン・ビー・ジョシュア
(72)【発明者】
【氏名】ジュハス・クリストフ
【テーマコード(参考)】
5K030
5K047
【Fターム(参考)】
5K030HB15
5K030HD03
5K030KA01
5K030LC01
5K030LD18
5K030MB06
5K047AA18
5K047BB15
5K047JJ08
(57)【要約】
【課題】電子取引システムを実現するのに用いられ得るような、レイテンシの公平性概念をサポートした分散型コンピューティングシステムを提供する。
【解決手段】本システムは、特定のクライアントを有利に扱ったりしない。つまり、特定のアクセスポイントで(ゲートウェイ経由などで)本システムに接続されているからといって、特定のデバイスが、別のデバイスよりも不当に有利又は不利な立場になることがない。この目的は、レイテンシ、すなわち、要求メッセージが本システムに到着した時間からそれに対応した応答メッセージが離れ去ることを許可される時間までの時間を正確に制御することによって達成される。正確な制御が施される確定的レイテンシは、経時的に固定されている場合もあれば、所定の何らかのパターンに従って変化する場合もあれば、予め決められた数値範囲内でランダムに変化する場合もある。
【選択図】図1B
【特許請求の範囲】
【請求項1】
2つ以上の参加者デバイスからインバウンドメッセージを受信するように接続された複数のゲートウェイ、を備えるシステムであって、1つ以上の前記ゲートウェイは、それぞれ:
所定の前記インバウンドメッセージについて、時間ベース値(TBV)を求めて、
前記所定のインバウンドメッセージを、そのTBVと共に、1つ以上のコンピュートノードに転送し、
前記1つ以上のコンピュートノードから、前記TBVから導出可能な情報を含む応答メッセージを受信し、
1つ以上の前記参加者デバイスに対し、応答メッセージを、前記TBVから導出可能な前記情報と確定的レイテンシの両方に依存する確定的な送出時間で送信されるアウトバウンドメッセージとして送信する、
ように、さらに構成されている、システム。
【請求項2】
請求項1に記載のシステムにおいて、前記TBVが、前記所定のインバウンドメッセージの受信時間に関するタイムスタンプに依存する、システム。
【請求項3】
請求項1に記載のシステムにおいて、前記TBVが、前記応答メッセージの所望の送出時間に依存する、システム。
【請求項4】
請求項3に記載のシステムにおいて、さらに、
前記応答メッセージを受信するように構成されたパケットスケジューラであって、所望の送出時間がそれぞれ対応付けられている一連のインデックス化場所を有する、パケットスケジューラ、
を備え、前記TBVは、前記所望の送出時間が対応付けられたインデックス化場所の値に依存する値である、システム。
【請求項5】
請求項1に記載のシステムにおいて、前記TBVが、前記インバウンドメッセージ内の未使用のフィールドに挿入されてから所与のコンピュートノードに転送される、システム。
【請求項6】
請求項1に記載のシステムにおいて、前記TBVが、前記インバウンドメッセージ内の、システム内部プロトコルのフィールドの一部として追加される、システム。
【請求項7】
請求項1に記載のシステムにおいて、前記TBVから導出可能な前記情報が、前記TBVを含む、システム。
【請求項8】
請求項1に記載のシステムにおいて、前記確定的レイテンシは、前記ゲートウェイが前記1つ以上のコンピュートノードから前記応答メッセージを受信する最大時間に依存する、システム。
【請求項9】
請求項1に記載のシステムにおいて、前記確定的レイテンシは、可変であるが確定的でもあるパターンに従う、システム。
【請求項10】
請求項1に記載のシステムにおいて、前記確定的レイテンシが、所定の範囲に一様に分布した一連のレイテンシから選択される、システム。
【請求項11】
請求項1に記載のシステムにおいて、前記確定的レイテンシが、ゲートウェイ毎に、コネクション毎に、あるいは、システム全体につき、設定される、システム。
【請求項12】
請求項1に記載のシステムにおいて、前記確定的レイテンシが、システム条件によって動的に変化する、システム。
【請求項13】
請求項1に記載のシステムにおいて、2つ以上の前記ゲートウェイが、それぞれ、前記コンピュートノードから前記応答メッセージを受信する、システム。
【請求項14】
請求項1に記載のシステムにおいて、さらに 前記所定のインバウンドメッセージが、前記1つ以上のコンピュートノードに転送され、前記応答メッセージが、前記1つ以上のゲートウェイの各々と前記1つ以上のコンピュートノードの各々との間に設けられた複数のダイレクトコネクションによって前記1つ以上のコンピュートノードから受信される、システム。
【請求項15】
請求項1に記載のシステムにおいて、前記応答メッセージが、2つの参加者デバイスと各自対応付けられた2つのマッチ当事者間での取引マッチイベントに関するものであり、前記ゲートウェイは、
前記2つの参加者デバイスに対し、前記応答メッセージを、アウトバンドメッセージとして前記送出時間で同時に送信する、
ようにさらに構成されている、システム。
【請求項16】
請求項15に記載のシステムにおいて、前記アウトバウンドメッセージが、さらに、市場データストリームの加入利用者と対応付けられたデバイスに対する市場データイベントメッセージとしても前記送出時間で同時に送信される、システム。
【請求項17】
請求項1に記載のシステムにおいて、前記1つ以上のゲートウェイは、
所与の前記コンピュートノードから非同期メッセージを受信し、
2つ以上の参加者デバイスに対し、前記非同期メッセージを、アウトバウンドメッセージとして前記送出時間で同時に送信する、
ようにさらに構成されている、システム。
【請求項18】
請求項1に記載のシステムにおいて、前記TBVが、さらに、メッセージ経路遅延およびコンピュートノード遅延のうちの少なくとも一方に関する時間値に依存する、システム。
【請求項19】
請求項1に記載のシステムにおいて、前記1つ以上のゲートウェイが、
前記所定のインバウンドメッセージを、そのTBVと共に 1つ以上のシーケンサノードに転送する、
ようにさらに構成されている、システム。
【請求項20】
請求項1に記載のシステムにおいて、さらに、
前記1つ以上のコンピュートノードは、
前記所定のインバウンドメッセージを、そのTBVと共に、前記1つ以上のゲートウェイから受信するように構成されており、
前記1つ以上のコンピュートノードは、前記応答メッセージを、前記TBVから導出可能な前記情報と共に、前記1つ以上のゲートウェイに返送するようにさらに構成されている、システム。
【請求項21】
請求項1に記載のシステムにおいて、前記1つ以上のゲートウェイは、前記所定のインバウンドメッセージを、そのTBVと共に、1つ以上のシーケンサノードに転送するようにさらに構成されており、
前記1つ以上のシーケンサノードは、前記1つ以上のコンピュートノードに対し、前記所定のインバウンドメッセージを、そのTBVと共に、シーケンスマーク付きメッセージとして転送するように構成されている、システム。
【請求項22】
請求項2に記載のシステムにおいて、前記1つ以上のコンピュートノードは、前記所定のインバウンドメッセージおよび前記シーケンスマーク付きメッセージの少なくとも一方に基づいて、前記応答メッセージを決定するようにさらに構成されている、システム。
【請求項23】
請求項1に記載のシステムにおいて、前記所定のインバウンドメッセージが、電子取引マッチング機能に関するものであり、前記応答メッセージは、電子取引マッチング機能を完了するように構成されている、システム。
【請求項24】
電子デバイスからの応答メッセージを確定的レイテンシで送信する方法において、
参加者デバイスからの上りメッセージを受信する過程と、
前記上りメッセージについて、時間ベース値(TBV)を求める過程と、
1つ以上のコンピュートエンジンに対し、前記上りメッセージ及び前記TBVを含む転送メッセージを送信する過程と、
前記1つ以上のコンピュートエンジンから、前記TBVから導出可能な情報を含むコンピュート応答メッセージを受信する過程と、
前記コンピュート応答メッセージを、前記TBV及び前記確定的レイテンシの両方に依存する確定的な送出時間に達するまで遅延させる過程と、
前記参加者デバイスに対し、前記コンピュート応答メッセージを、前記確定的な送出時間で送信する過程と、
を備える、方法。
【発明の詳細な説明】
【関連出願】
【0001】
本願は、「Highly DeterministicLatency in a Distributed System」と題する2020年8月7日付出願の同時係属中の米国特許出願第16/988,249号、および「Sequencer Bypass with Transactional Preprocessing in Distributed System」と題する2020年8月7日付出願の同時係属中の米国特許出願第16/988,491号の優先権を主張し、各出願の全内容は参照をもってここに取り入れたものとする。
【技術分野】
【0002】
本願は、コネクテッドデバイスに関し、より詳細には、確定的レイテンシまたは決定論的レイテンシ(deterministic latency)の提供に関する。
【背景技術】
【0003】
現在、主要な証券取引所で広く使われている金融商品取引システムは、トレーダが通信ネットワークによって電子的に注文を出したり、確認通知や市場データやその他の情報を受信したりすることができる。典型的な電子取引システムは、典型的に中央サーバ内に存在するマッチングエンジンや、マッチングエンジンへのアクセスを行う複数のゲートウェイ、そして、分散型プロセッサを備える。典型的な注文過程は、次のようなものになり得る:クライアントデバイス(例えば、実人間ユーザによって操作されるトレーダ端末や自動取引アルゴリズムを実行するサーバ等)から、注文を示す要求メッセージ(例えば、買値注文および/または売値注文等)が送信されて、これが受信される。そして、典型的には、注文受付確認が、該要求を転送したゲートウェイを経由してクライアントデバイスに返送される。取引所がさらなる処理を実行したのち、注文処理確認が、クライアントデバイスへと返送され得る。
【0004】
また、取引所システムは、注文メッセージに関する情報を、受信したそのままで又は別の形式で別のシステムに流布することにより、市場データ出力が生成され得る。
【0005】
一般的に、レイテンシとは、システムへの入力と目に視えるかたちの応答との間の時間のことである。通信システムの場面でいうレイテンシは、あるメッセージがシステムに入力された又はシステムに受信された時間と、それに対応する応答メッセージが送出された時間との差として測定される。取引を実行するまでの時間を最小限にすることが望ましい高速電子取引システムにおいては、レイテンシが極めて重要な考慮事項となる。
【0006】
Arista Networks, Inc.社の「Determinism is the New Latency」と題されたソリューション概要(2019年著作)(非特許文献1)では、レイテンシを制御するアプローチの一つとして、メッセージ経路上の光ファイバを長くして約350μ秒の遅延を導入する「防止帯(speed bump)」的アプローチが説明されている。これにより、どの注文も、該ファイバを通過するのに全く同じ時間量を要することになる。同文献で説明されている別のアプローチでは、レイテンシを最小限にするために、頻繁に使用される取引データが、マッチングエンジンのキャッシュメモリ内に保持され得る。また、複数のゲートウェイを用いて複数のマッチングエンジンに注文を転送する取引システムにまつわる問題点についても触れられている。参加者(participants)にゲートウェイが割り当てられていることがあるが、これも、さらなる非確定性議論の基になる。ゲートウェイによる注文処理に要する時間が確定的でないと、ある順番で取引所に送られた2つの注文が、実際には別の順序で約定されてしまう可能性があるという点が指摘されている。しかしながら、これらの問題点に対する解決策は提案されていない。
【0007】
U.S. Pre-grant Publication 2019/0097745(特許文献1)には、タイムスタンプを使って非確定的遅延の影響を低減する通信ネットワークが記載されている。過去に送信されたパケットの「非確定的」遅延を観察することにより、送信経路の状態が推定される。そして、パケット処理回路で下りパケットに確定的レイテンシが生じるようになるまで、送信回路が同パケットを保持する。
【0008】
Schweitzer EngineeringLaboratories,Inc.社のICON Packet Transport(2016年著作)(非特許文献2)は、ジッターバッファを用いて確定的で低レイテンシなパケット化を行うネットワークデバイスの一例である。
【0009】
U.S. Patent 7,496,086(特許文献2)は、ジッターバッファを用いて遅延を均等化する一連のゲートウェイを備えた音声ネットワークである。
【0010】
U.S. Patent 7,885,296(特許文献3)は、フレームにタイムスタンプを割り当てると共に、異なる物理層(PHY)トランシーバ間に分布した複数のタイムスタンプカウンタ同士の同期を維持するものである。
【0011】
U.S. Pre-grant Publication 2018/0359195(特許文献4)には、リアルタイム伝送プロトコル(RTP)ネットワークのストリーミングメディアに使われ得るような、受信パケットのタイムスタンプ範囲を特定するための特殊な種類の木データ構造を用いたネットワークスイッチが記載されている。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】米国特許出願公開第2019/097745号明細書
【特許文献2】米国特許第7496086号明細書
【特許文献3】米国特許第7885296号明細書
【特許文献4】米国特許出願公開第2018/359195号明細書
【非特許文献】
【0013】
【非特許文献1】"Determinism is the New Latency", Solution Brief (c) 2019 by Arista Networks, Inc.
【非特許文献2】ICON Packet Transport, by Schweitzer Engineering Laboratories, Inc. (c) 2016
【発明の概要】
【発明が解決しようとする課題】
【0014】
本明細書で説明するとおり、電子取引システムなどの分散型コンピューティングシステムの好適な実施形態によって、完全に確定的なレイテンシを提供する。
【課題を解決するための手段】
【0015】
一実装例においては、市場参加者やその他のクライアントノードからの要求などといったインバウンドメッセージが、多数のゲートウェイノードのうちの一つを経由して、すなわち所与のゲートウェイ経由で前記システムに入ってくる。このとき、同インバウンドメッセージの受信側となるゲートウェイノードは、同メッセージに対し、受入時間ベースの値(受信時間に依存する「タイムスタンプ」であり得る)を取り付ける。(該タイムスタンプが内部に埋め込まれた)同メッセージは、前記分散型システム内の別のノードに転送されて処理される。同メッセージの処理の一部として、前記分散型システム内の他のノードにより生成されるこれに対応した全ての応答メッセージ内部にも、同じタイムスタンプ値(及び/又は定数)が埋め込まれて保持される。
【0016】
前記要求に対応した応答メッセージが前記ゲートウェイノードで前記参加者/クライアントへと送り返される準備が整えられるなかで、同応答メッセージは、まず送出「サービス品質」(QOS)シェーパを通過する。該QOSシェーパにより、同応答メッセージは、「受入タイムスタンプ+何らかの確定的遅延」に依存した極めて正確な確定的時間にのみ、システム外へと確実に送出される。
【0017】
前記QOSシェーパは、一連のインデックス化された一時記憶場所(すなわち、離散的な高精度タイミング間隔ごとに対応付けられた「バケット」)へとアウトバウンド(outgoing)メッセージを整理する「パケットスケジューラ」として実現され得るものであり、これにより、同スケジューラ内の特定の場所に入ったエントリは、対応する正確な時間間隔で確実に放出される。
【0018】
別の実装として、到着メッセージにタイムスタンプを振り当てるという構成に代えて、前記ゲートウェイは、前記インバウンドメッセージに対して、前記パケットスケジューラの、所望の送出時間に対応したインデックス化場所を直接関連付けるようにしてもよい。他の実装と同じく、この送出時間は、同メッセージと一緒になってシステム内を運ばれる。これにより、分散型システムのコアで処理・生成された対応する応答メッセージは、割り当てられた時間に送出されることになる。
【0019】
本明細書に記載されたシステムの利点の一つは、従来の取引システムと異なり、システムの全ユーザが同じレイテンシの応答を得るという点である。ユーザが市場参加者であろうと、単に市場データフィードの加入利用者(subscriber)であろうと、該システムの全ユーザは同一の確定的な応答時間を経験する。この確定的な応答時間は、固定されて変化しない時間値であり得る。しかしながら、代わりの別の公平性概念として、該確定的な時間は、所定のパターンに従ったものや、所与の範囲の確定的応答時間候補(possible)の中から選択された無作為選出の時間であってもよい。
【0020】
本明細書で述べるアプローチのその他の新規構成や利点については、下記の内容および添付の図面から明らかとなる。
【図面の簡単な説明】
【0021】
図1A】分散型電子取引システムの高次ブロック図である。
図1B】ゲートウェイからコンピュートノードへと直接の経路で移動するメッセージ、およびシーケンサノード経由で移動するメッセージを示す図である。
図1C】メッセージのフォーマットの一例を示す図である。
図2】ゲートウェイやコンピュートノードなどのシステムコンポーネントの詳細図である。
図3A】インバウンドメッセージやアウトバウンドメッセージに時間ベース値が取り付けられる様子を示す図である。
図3B】パケットスケジューラを示す図である。
図4】同システムが1000時間単位の確定的レイテンシ設ける一例を示す図である。
図5】非同期アウトバウンドメッセージを示す図である。
図6A】同システムが確定的範囲から選出された2000時間単位の確定的レイテンシを設ける一例を示す図である。
図6B】同システムが確定的範囲から選出された3500時間単位の確定的レイテンシを設ける一例を示すである。
図7】一連の確定的レイテンシ値が決められる様子を示す図である。
図8】固定のレイテンシ時間が選ばれる様子を示す図である。
図9】所与の範囲の中の一連の固定レイテンシ時間が選ばれる様子を示すである。
図10】利用する金融取引プロトコルなどの追加パラメータに基づき、別々の参加者同士の経験する確定的レイテンシが変化する一例を示す図である。
【発明を実施するための形態】
【0022】
(システムの概要)
本明細書で開示する例示的な実施形態は、(株式、債券、商品、先物、オプションなどの)金融商品の売買注文が(トレーダやブローカなどの)市場参加者間で取引される市場の提供を行う高速電子取引システムに関する。該電子取引システムは、低レイテンシ、公平性、フォールトトレランス、確定的レイテンシ、および後で詳しく述べるその他の特長を奏する。
【0023】
前記電子取引システムは、主に、取引注文を互いに「マッチング」させる役割を担っている。一例として、ある商品を「買う」というオファーが、それに対応する「売る」という逆オファーとマッチングさせられる。マッチングしたオファーと逆オファーは、少なくとも部分的に希望価格を満たしている必要があり、満たしていない残りの分の数量については、別の適切な逆注文に回される。そして、マッチングした注文のペアが成立し、取引が約定される。
【0024】
全く満たしていない注文や部分的にしか満たしていない注文は、「注文ブック」と言われるデータ構造内に維持される。未マッチの取引注文に関して保持された情報は、マッチングエンジンによって後続の取引注文に応えるのに利用され得る。典型的に、注文ブックは、商品ごとに維持され、一般にその特定の商品の市場状況を規定又は象徴したものとなる。注文ブックには、例えば、市場参加者が売買の意思を表明している最新の価格や数量などが含まれ得る。
【0025】
また、マッチングの結果は、市場データフィードと言われるストリーミングデータサービスを介して市場参加者に可視化され得る。典型的に、市場データフィードには、各取引商品の価格(pricing)や、量やその他の統計値といった関連情報を運ぶ個々のメッセージが含まれる。
【0026】
図1Aに、多数のゲートウェイ120-1,120-2,...,120-g(まとめてゲートウェイ120と言う)、一連のコアコンピュートノード140-1,140-2,...,140-c(まとめてコアコンピュートノード140、あるいは、コンピュートノード140)、および1つ以上のシーケンサ150-1,150-2,...,150-s(まとめてシーケンサ150)を備えた電子取引システム100の一例を示す。つまり、一部の実施形態では、ゲートウェイ120、コアコンピュートノード140、およびシーケンサ150が、電子取引システム100内のノードであると見なされる。後で詳しく述べるが、一実施形態において、ゲートウェイ120、コンピュートノード140、およびシーケンサ150は、互いに直接、好ましくは低レイテンシの専用コネクション180で接続されている。
【0027】
システム100の説明に関して「ピア」という用語は、電子取引システム100の中で(例えば「ゲートウェイ」対「コアコンピュートノード」対「シーケンサ」のように)共通の、または同じ機能を一般的に果たす他のデバイスのことを言う。例えば、ゲートウェイ120-2,...,120-gはゲートウェイ120-1のピアであり、コアコンピュートノード140-2,...,140-cはコアコンピュートノード140-1のピアであり、シーケンサ150-2,...,150-sはシーケンサ150-1のピアである。
【0028】
システム100の説明に関して「アクティブ」と「スタンバイ」という用語は、システム/コンポーネントの高可用性(HA)役割/状態/モードのことを言う場合がある。一般的に言って、スタンバイのシステム/コンポーネントとは、アクティブなシステム/コンポーネントで実行されていた機能を引き継ぐことが可能で且つ電源が入っている冗長(バックアップ)システム/コンポーネントのことである。本発明を限定しない例であるが、このようなスイッチオーバー/フェイルオーバー、すなわち、スタンバイの役割/状態/モードからアクティブな役割/状態/モードへの移行は、現行アクティブなシステム/コンポーネントの障害に応じて自動的に行われ得る。
【0029】
電子取引システム100は、1つ以上の参加者コンピューティングデバイス130-1,130-2,...,130-p(まとめて参加者デバイス130)からの取引注文を処理したり該デバイスに関連情報を提供したりする。参加者デバイス130は、システム100との間で相互にやり取りを交わす(interact)デバイスであって、取引注文情報を表示したり受信したりするように構成された1つ以上のパーソナルコンピュータ、タブレット、スマートフォン、サーバまたはその他のデータ処理デバイスであり得る。参加者デバイス130は、グラフィカルユーザインターフェース(GUI)を介して人間によって操作され得るものであるか、あるいは、何らかの物理的又は仮想的なデータ処理プラットフォーム上で動作する高速自動取引手法によって操作され得るものである。
【0030】
参加者デバイス130は、それぞれ、ゲートウェイ120との間で確立されたコネクションを介して電子取引システム100とメッセージをやり取り(すなわち、メッセージを送信したり受信したり)し得る。図1Aでは参加者デバイス130がそれぞれゲートウェイ120への一つのコネクションを介して電子取引システム100に接続されているものとして描かれているが、所与の参加者デバイス130は、1つ又は複数のゲートウェイ装置120との間の複数のコネクションを介して電子取引システム100に接続されるものであってもよいという点を理解されたい。
【0031】
なお、各ゲートウェイ120-1は一つの参加者デバイス130だけに従事する場合もあるが、典型的には、多数の参加者デバイス130に従事している。
【0032】
コンピュートノード140-1,140-2,...,140-c(本明細書ではマッチングエンジン140やコンピュートエンジン140とも言う)は、上述のマッチング機能を提供するほか、1つ以上の参加者デバイス130に配信される下りメッセージまたは送信メッセージまたは出力メッセージ(outgoing message)を生成するものであり得る。各コンピュートノード140は、高性能データプロセッサであり、典型的には、1つ以上の注文ブック145-1,145-2,...,145-bを検索したり維持したりするための1つ以上のデータ構造を維持する。注文ブック145-1は、例えば、コアコンピュートノード140-1が取り扱う(responsible)商品毎に維持され得る。また、1つ以上のコンピュートノード140および/または1つ以上のゲートウェイ120は、市場データフィード147を提供し得る。市場データフィード147も、参加者デバイス130や任意の他の適切なコンピューティングデバイスであり得る加入利用者に(例えば、マルチキャストで)配信され得る。
【0033】
コアコンピュートノード140により生成される一部の下りメッセージは、同期的なもの、すなわち、1つ以上の参加者デバイス130から受信した1つ以上の上りメッセージまたは受信メッセージまたは入力メッセージ(incoming message)に応答してコアコンピュートノード140により直接生成されるもの(例えば、上り方向の「新規注文」メッセージを受けての、これに対応した下り方向の「受付確認メッセージ」や「約定メッセージ」等)であり得る。しかし、一部の実施形態において、少なくとも一部の下りメッセージは、例えば、特定の「一方的(unsolicited)」取消メッセージや「トレードブレーク(trade break)」メッセージ又は「トレードバスト(trade bust)」メッセージなどといった、取引システム100で発生する(initiated)非同期的なものであり得る。
【0034】
電子取引システム100のような分散型コンピューティング環境は、複数のコンピュートノード140上で並行して動作する複数のマッチングエンジンによって構成され得る。
【0035】
シーケンサ150は、あらゆる順序依存型処理の適切なシーケンスが確実に維持されるようにするものである。上りメッセージに対する処理が誤った順序で実行されることが確実になくなるようにするため、典型的に、1つ以上のゲートウェイ120で受信された上りメッセージ(例えば、所与の参加者デバイス130からの新規取引注文メッセージ等)は、少なくとも1つのシーケンサ150(例えば、現行アクティブな単一のシーケンサのほか、場合によっては、スタンドバイの1つ以上のシーケンサ等)を通過し、これにより(複数のシーケンサが存在するとして、現行アクティブな単一のシーケンサによる)シーケンス識別子によってマークされ得る。同識別子は、分散型システム100(例えば、電子取引システム100等)全体の後続処理の過程でメッセージ間の相対的な順序付けを決定したり電子取引システム100全体でメッセージを一意的に識別したりするのに用いられる一意的な単調増加値であり得る。一部の実施形態において、前記シーケンス識別子は、メッセージがシーケンサに到着した順序(すなわち、シーケンス)を表すものであり得る。例えば、前記シーケンス識別子は、到着したメッセージごとに前記シーケンサによって一定間隔で単調に漸増又は漸減させられる値であってもよく、例えば、前記シーケンス識別子は、到着したメッセージごとに1ずつ漸増させられるものであり得る。しかしながら、前記シーケンス識別子は、一意的なものであれば、単調増加又は単調減少する値に限定されないという点を理解されたい。一部の実施形態では、マーク付きバージョンのメッセージのほうにシーケンス識別子の値が含まれているという点を除き、マークが付いていない元のメッセージとシーケンスマーク付きメッセージが本質的に同一であり得る。シーケンス化が済むと、典型的に、上り方向のマーク付きメッセージ、すなわち、シーケンスマーク付きメッセージは、1つ以上のシーケンサ150によって他の下流コンピュートノード140へと転送されて処理を、場合によっては、順序依存型の処理を受ける。このようにして、シーケンサ150によって割り振られたシーケンス識別子は、電子取引システム100全体でメッセージを一意的に識別するほか、電子取引システム100内での他のマーク付きメッセージに対する各マーク付きメッセージの相対的な順序付けについても定め得る。
【0036】
このように、本明細書で開示する一意的なシーケンス識別子は、他でのシーケンス識別子の利用用途と異なり、電子取引メッセージ処理の確定的な順序(すなわち、シーケンス)を確保する目的で利用され得る。前記一意的なシーケンス識別子は、電子取引システム内での所与の電子取引メッセージの処理の、それ以外の取引メッセージに対する一意的な確定的順序付け(すなわち、シーケンス)指令を表す。本発明を限定する例ではないが、例示的な一実施形態において、前記シーケンス識別子は、図1Cに関して後でさらに開示するようにメッセージのシーケンスIDフィールド110-14に入力され得る。
【0037】
一部の実施形態において、メッセージは、別の方向、すなわち、コアコンピュートノード140から1つ以上のゲートウェイ120を通過して1つ以上の参加者デバイス130へと流れるものである場合もある。コアコンピュートノード140によって生成されたこのような下りメッセージも、順序依存型(すなわち、シーケンス順序依存型)のものであり得て、これに応じて、典型的に、まずシーケンサ150を通過することによってシーケンス識別子でマークされ得る。その後、シーケンサ150はマーク付き応答メッセージをゲートウェイ120に転送し、適切な確定的順序で参加者デバイス130に受け渡されるようにし得る。
【0038】
シーケンサ150を使って一意的なシーケンス番号を生成してメッセージ又は同メッセージの表現物に該シーケンス番号をマークする、すなわち、シーケンスマーク付きメッセージを生成するという構成により、どのコンピュートノードやコンピュートノード140一式で同メッセージが処理されるのかにかかわらず、分散型システム、すなわち、電子取引システム100全体で、正しい処理順序付けが確実に維持される。このアプローチは、「状態確定性」を提供し、例えば、システム全体の状態が確定的かつ再現可能(場合によっては、災害復旧サイトのように別の場所で再現可能)なものとなり、フォールトトレランス、高可用性および災害復旧性をもたらす。
【0039】
そのほか、生成ノード(すなわち、例えば新規メッセージの生成及び/又は参加者デバイス130から受信したメッセージの転送などによって電子取引システム100中に新規メッセージを導入するノード)やそのピアノードが、同メッセージに振り当てられたシーケンス番号を受け取るという点も、重要な点として挙げられ得る。自身が生成したメッセージのシーケンス番号を受け取るという構成は、生成ノードやそのピアノードにとって、シーケンス番号に従って順番にメッセージを処理するという点だけでなく、自身のノードが生成したメッセージを電子取引システム100の残り全体で使用される同メッセージのシーケンス識別子と関連付けるという点でも有用であり得る。図1Cとの関連でさらに後述するように、生成ノードまたはノード生成(generating node)によって電子取引システム中に導入されるマークが付いていないバージョンのメッセージと前記シーケンサにより出力されるシーケンスマーク付きバージョンの同メッセージとの間のこのような関連付けは、両バージョンのメッセージ内の識別情報を使って行われ得る。電子取引システム100内で生成される後続のメッセージは、それ自身のシーケンス番号が振り当てられる一方で、関連する先行メッセージの1つ以上のシーケンス番号を参照している場合もある。つまり、ノードは、例えば自ノードが生成したメッセージのシーケンス番号が後続メッセージで参照されることになるので、自ノードがそれより前に生成したメッセージの(シーケンス番号による)参照を素早く行う必要性があり得る。
【0040】
一部の実施形態において、前記生成ノードは、まずシーケンサ150にメッセージを送信し、該シーケンサから同メッセージのシーケンス番号を受信するまで待機してから、電子取引システム100内の別のノードに同メッセージを転送し得る。
【0041】
例示的な別の実施形態では、電子取引システム100内での不所望なレイテンシ増の追加となり得る1回又は複数回のホップを避けるため、シーケンサ150は、生成ノードからシーケンス化前のメッセージを受信した後、シーケンス化されたバージョンのメッセージ(例えば、シーケンスマーク付きメッセージ等)を宛先ノードに送信し得るだけでなく、送信側ノード及びそのピアに対しても、シーケンス化されたバージョンのメッセージをほぼ同時に返信し得る。例えば、シーケンサ150は、ゲートウェイ120-1からコアコンピュートノード140に送信される上りメッセージにシーケンス番号を割り当てた後、シーケンス化されたバージョンのメッセージをコアコンピュートノード140に転送し得るだけでなく、シーケンス化されたバージョンの同メッセージをゲートウェイ120-1やその他のゲートウェイ120にも返信し得る。これにより、任意のゲートウェイ120は、コアコンピュートノード140で生成された後続のいずれかのメッセージがそのシーケンス番号を参照していた場合、そのシーケンス番号によって、ゲートウェイ120-1で生じた対応する元のメッセージを容易に特定し得る。
【0042】
同様に、さらなる一部の実施形態では、コアコンピュートノード140によって生成されてゲートウェイ120に対して送信されると共にシーケンサ150によってシーケンス化されたシーケンス化後バージョンの下りメッセージが、該シーケンサ150により、ゲートウェイ120とコアコンピュートノード140の両方に転送/返送され得る。
【0043】
一部の実施形態は、例えば、第1シーケンサが故障した場合でも別のシーケンサが確実に利用可能であるようにするために、高可用性目的で複数のシーケンサ150を備え得る。複数のシーケンサ150(例えば、現行アクティブなシーケンサ150-1およびスタンバイの1つ以上のシーケンサ150-2,...,150-s等)を備える実施形態では、現行アクティブなシーケンサ150-1が、シーケンサ150-1を通過した全てのメッセージ及び同メッセージの対応シーケンス番号についてのシステム状態ログ(図示せず)を維持し得る。このシステム状態ログは、スタンバイのシーケンサに継続的又は定期的に送信されることで、当該スタンバイのシーケンサに対し、必要に応じてアクティブなシーケンサを引き継ぐことできるようになるのに必要となるシステム状態を与えるようにし得る。あるいは、前記システム状態ログは、複数のシーケンサ150がアクセスすることのできるデータストアに記憶されてもよい。
【0044】
また、前記システム状態ログは、災害復旧サイト155にある電子取引システムのスタンバイレプリカ(詳細は図示せず)内の1つ以上のシーケンサへと継続的又は定期的に複製されてもよく、これにより、システム100のプライマリサイトが壊滅的障害を受けたとしても、災害復旧サイト155において全く同じ状態で電子取引を続行することが可能となる。
【0045】
例示的な一実施形態では、複数のシーケンサのうちの現行アクティブなシーケンサが、前記システム状態ログをデータストア(図示せず)に記憶し得る。該データストアは、図1Aに関して後でさらに開示するシーケンサ全体共有ネットワーク182-sなどの共有シーケンサネットワークを介して複数のシーケンサがアクセス可能なものであり得る。当該複数のシーケンサのうちの所与のシーケンサの役割(状態)がスタンバイからアクティブに移り変わった場合、該シーケンサは、前記データストアから前記システム状態ログを取得することで、状態が元のアクティブなシーケンサの状態と同期したものとなり得る。
【0046】
また、一部の実施形態では、前記システム状態ログが、1つ以上の前記シーケンサおよび/または電子取引システム100内の1つ以上の他のノードにより実現され得るドロップコピーサービス152にも提供され得る。ドロップコピーサービス152は、電子取引システム100を介した日々の取引活動の記録を提供するものであり得て、当該記録は、例えば参加者デバイス130を介して接続され得る規制機構及び/又はクライアントへと配信され得る。代替的な実施形態では、ドロップコピーサービス152が、1つ以上のゲートウェイ120で実現され得る。また、ドロップコピーサービス152は、前記システム状態ログを参照することに加えて又はその代わりに、電子取引システム100中で送信される上りメッセージや下りメッセージの内容に基づいて取引活動を記録するものであってもよい。例えば、一部の実施形態では、ドロップコピーサービス152を実現するゲートウェイ120が、シーケンサ150から(かつ/あるいはコアコンピュートノード140やその他のゲートウェイ120から)電子取引システム100中でやり取りされる全メッセージを受信するものとされ得る。ドロップコピーサービス152から日々の取引活動の記録を受信するように構成されている参加者デバイス130は、必ずしも、電子取引システム100に取引注文を送信したり電子取引システム100のマッチング機能を利用したりする参加者デバイスであるとは限らない。
【0047】
参加者デバイス130とゲートウェイ120との間でやり取りされるメッセージは、金融取引に利用され得る任意の適切なプロトコル(便宜上、「金融取引プロトコル」と言う)に準拠したものであり得る。例えば、同メッセージは、(NasdaqOUCH、NYSE UTPなどの)バイナリプロトコルや(NYSE FIX CCGなどの)テキストベースプロトコルの双方を含め、カスタムプロトコルや確立された標準プロトコルに準じてやり取りされるメッセージであり得る。一部の実施形態において、電子取引システム100は、同じゲートウェイ120上での同時複数のプロトコルを含め、同時複数の金融取引プロトコルに準拠したメッセージのやり取りをサポートし得る。例えば、参加者デバイス130-1,130-2,130-3は、同時複数の取引コネクションを確立し得ると共に、NasdaqOuch、NYSE UTP、NYSE FIX CCGにそれぞれ準じたメッセージをゲートウェイ120-1との間でやり取りし得る。
【0048】
また、一部の実施形態において、ゲートウェイ120は、参加者デバイス130から受信した金融取引プロトコル準拠のメッセージを、電子取引システム100内のノード間でメッセージをやり取りするのに利用される正規化(例えば、標準化)メッセージフォーマットへと変換し得る。この正規化取引フォーマットは、既存のプロトコルであってもよいが、一般的には、参加者デバイス130との間でメッセージをやり取りするのに利用される任意の金融取引プロトコルとは異なるサイズ及びデータフォーマットのものであり得る。例えば、前記正規化取引フォーマットは、参加者デバイス130からゲートウェイ120で受信した元の上りメッセージの金融取引プロトコルと比べると、1つ以上の追加のフィールド又はパラメータを含んでいる場合や1つ以上のフィールド又はパラメータを省略している場合があり、かつ/あるいは、前記正規化フォーマットのメッセージの各フィールド又はパラメータは、参加者デバイス130からゲートウェイ120で受信した対応するメッセージと異なるデータ型又はサイズのものであり得る。同様に、逆方向では、ゲートウェイ120が、電子取引システム100により前記正規化フォーマットで生成された下りメッセージを、参加者デバイス130がゲートウェイ120とやり取りするのに利用される1つ以上の金融取引プロトコルのフォーマットのメッセージへと変換し得る。次に開示する図1Bでは、そのような上り/下りメッセージ(例えば、上りメッセージ103、下りメッセージ105等)が、ゲートウェイ120-1と参加者デバイス130との間でやり取りされている。
【0049】
図1Bは、先に開示した図1Aの電子取引システム100の例示的な一実施形態のブロック図である。具体的な同実施形態において、電子取引システム100は、アクティベーションリンク180-1-1と順序付け(すなわち、シーケンス化)パス(経路)117とを介してコアコンピュートノード140-1に接続されたゲートウェイ120-1を備えている。電子取引システム100は、さらに、順序付けパス117内に電子的に設けられたシーケンサ150-1を備えている。ゲートウェイ120-1は、上りメッセージ103の受信に応じて、アクティベーションリンク180-1-1及び順序付けパス117を介してコアコンピュートノード140-1にメッセージ(図示せず)を送信するように構成されている。コアコンピュートノード140-1は、ゲートウェイ120-1からの同メッセージ(非シーケンス化メッセージとも言う)、さらには、シーケンサ150-1からのシーケンスマーク付きバージョンのメッセージ(図示せず)を受信するように構成されている。
【0050】
本発明を限定する例ではないが、シーケンスマーク付きバージョンは、図1Cに関して後でさらに開示するように、シーケンスマーク付きメッセージのシーケンスIDフィールド110-14に含まれ得るようなシーケンス識別子(ID)を含む。同シーケンスIDは、アクティベーションリンク180-1-1を介して通信済みのその他複数のメッセージや順序付けパス117を介してシーケンサ150-1で受信済みのシーケンスマーク付きバージョンの同その他複数のメッセージの中での、そのシーケンスマーク付きバージョンのメッセージの確定的位置を示す。同シーケンスIDが確定的位置を示す対象となっている該複数のメッセージには、順序付けパス117経由でコアコンピュートノード140-1にて受信されたシーケンスマーク付きバージョンのその他のメッセージも含まれている。前記メッセージ(例えば、シーケンス化されていないメッセージ等)やそのシーケンスマーク付バージョンは、共通のメタデータ(図示せず)を含む。当該共通のメタデータを使ってメッセージとそのシーケンスマーク付きバージョンとを関連付けることにより、同メッセージのシーケンスIDが特定される。前記シーケンスIDは、さらに、同メッセージの、電子取引システム100中でやり取りされる、シーケンサ150-1通過済みの(つまり、シーケンサ150-1でシーケンスマークが付けられた後の)全メッセージの中での確定的位置も表す。
【0051】
電子取引システム100の構成要素に通信されたメッセージは、該構成要素によってタイムスタンプが押され得るが、これに対し、シーケンサ150-1により決定されるシーケンスIDは、電子取引システム100中でやり取りされるメッセージの位置(順序/優先順位)を決めるものであるという点を理解されたい。複数のシステムが同じタイムスタンプをメッセージに付けるという可能性があり、すると、そのようなメッセージ同士の順序/優先順位を該メッセージの受信側で解決する必要がある。電子取引システム100では、シーケンサ150-1が電子取引システム100中でやり取りされるメッセージの順序/優先順位の唯一の決定者になり得ることから、そのようなことが起こらない。
【0052】
コアコンピュートノード140-1は:(i)アクティベーションリンク180-1-1を介したメッセージの受信に応じて電子取引用のマッチング機能活動を開始し;(ii)順序付けパス117を介したシーケンスマーク付きバージョンの受信に応じて、前記シーケンス識別子を使い、前記マッチング機能活動を完了させて電子取引のサービスを提供することを優先させる;ように構成され得る。
【0053】
コアコンピュートノード140-1は、メッセージ(すなわち、シーケンス化されていないメッセージ)を受信することで、電子取引機能(すなわち、マッチング機能活動)を開始して、シーケンス化されていない同メッセージの処理を開始し得るものである一方、シーケンスマーク付きの同メッセージを受信するまでは、該処理を完了しない且つ/或いは同メッセージの処理結果をコミットしないものとされ得る。シーケンスマーク付きメッセージのシーケンス識別子で定まる、同メッセージの処理のための確定的順序付けが分からないと、例えば、コンピュートノード140-1によるメッセージ処理は予測不可能なものになり得る。本発明を限定する例ではないが、起こり得る(possible)予測不可能な結果の例として、金融証券取引では、コントラ側のマッチ候補となる非シーケンス化の未処理(outstanding)メッセージが複数生じている場合がある。コントラ側の取引注文については、恐らく、マッチ候補のうちの一部しか成立し得ないことから、複数のマッチ候補同士のなかでその解決を行うための確定的方法が存在することは有益である。
【0054】
一部の実施形態では、コンピュートノード140-1が、シーケンス化されていないメッセージとシーケンスマーク付きメッセージの両方を受信した後、図1Cとの関連で後述するように両バージョンのメッセージ内の識別情報を使って、シーケンス化されてないメッセージをシーケンスマーク付きメッセージと関連付けし得る。コンピュートノード140-1は、順序付けパス117を介してシーケンスマーク付きメッセージを受信すると、同メッセージ(すなわち、シーケンスマーク付きバージョンのメッセージ)の、電子取引システム100中のその他のメッセージに対しての適切な処理シーケンスを求め得る。その後、コンピュートノード140-1は、適切な応答メッセージの送出を含めたメッセージ処理を、シーケンサ150-1によって割り当てられてシーケンスマーク付きメッセージ内に含められた前記シーケンス識別子を場合によって参照して完了させ得る。金融証券取引においてコントラ側のマッチ候補となるメッセージが複数生じている本発明を限定しない先程の例に戻るが、マッチ候補であるシーケンスマーク付きバージョンのメッセージを受信したコンピュートノード140-1は、マッチ発生のシーケンスを正確に決定し、電子取引マッチング機能を完了させ得る。
【0055】
例示的な一実施形態では、シーケンサ150-1が、シーケンスマーク付きメッセージを第3のダイレクトコネクション180-c1-s1を介してコンピュートノード140-1に送信するのに加えて、同シーケンスマーク付きメッセージを(順序付けパス117の)第2のダイレクトコネクション180-gw1-s1を介してゲートウェイ120-1にも送信し得る。シーケンスマーク付きメッセージをメッセージの送信側に供給することにより、この送信者側(すなわち、ゲートウェイ120-1)は、(同メッセージに割り当てられた)シーケンス番号を(図1Cとの関連で後述するように)同メッセージ内の別の識別情報と関連付けることが可能となり、これにより、その送信側は、該シーケンス番号を参照した後続メッセージの処理を簡単に行うことができるようになる。
【0056】
先程は、コンピュートノード140-1が、アクティベーションリンク180-1-1を介して受信したメッセージに基づいて処理をアクティベート(開始)する様子を開示したが、これと同様に、ゲートウェイ120-1は、アクティベーションリンク180-1-1を介してコンピュートノード140-1から受信したシーケンス化されていない応答メッセージを受信すると、シーケンスマーク付きバージョンの該応答メッセージを受信する前にもかかわらず、該応答メッセージの処理をアクティベートし得る。本発明を限定する例ではないが、処理のアクティベートは、ゲートウェイ120-1のオープン取引注文データベースの状態を更新すること、および/または、参加者デバイス130への送信準備が整った下りメッセージ105を蓄積することを含み得る。しかしながら、一部の実施形態では、ゲートウェイ120-1が、下りメッセージ105を参加者デバイス130に送信することを含めた応答メッセージの処理を、電子取引システム100中のその他のメッセージを含めたメッセージシーケンス内における同応答メッセージの確定的位置を示すシーケンス識別子が含まれたシーケンスマーク付きの応答メッセージを受信するまで、完了させないものとされ得る。
【0057】
一部の実施形態において、ゲートウェイ120-1は、シーケンス化されていない応答メッセージ及びシーケンスマーク付き応答メッセージの両方を受信した後、図1Cとの関連で後述するように両バージョンの応答メッセージ内の識別情報を使って、該シーケンス化されていない応答メッセージを該シーケンスマーク付き応答メッセージと関連付け得る。これにより、同応答メッセージの確定的位置が、シーケンスマーク付き応答メッセージの受信時に定まる。一部の実施形態では、その後に、図1Aの参加者デバイス130などの参加者デバイスに送信される下りメッセージ105のコミットを含めた応答メッセージの処理が完了させられ得る。
【0058】
引き続き図1Bを参照するが、アクティベーションパス180-1-1を介して送信されたメッセージと、順序付けパス117を介して送信されたシーケンスマーク付きバージョンのメッセージは、共通のメタデータを含み得る。コアコンピュートノード140-1は、順序付けパス117を介したシーケンスマーク付きバージョンの受信に応じて、同メッセージを該シーケンスマーク付きバージョンと前記共通のメタデータに基づいて関連付けるようにさらに構成され得る。
【0059】
図1Bの例示的な実施形態では、メッセージが、アクティベーションリンク順方向(すなわち、act-link-fwd-dir113a)にアクティベーションリンク180-1-1経由でコアコンピュートノード140-1へと送信されると共に、順序付けパス順方向(すなわち、order-path-fwd-dir115a)に順序付けパス117経由でコアコンピュートノード140-1へと送信される。コアコンピュートノード140-1は、マッチング機能活動を完了させること以外にも、応答(図示せず)を、アクティベーションリンク180-1-1経由でアクティベーションリンク逆方向(すなわち、act-link-rev-dir113b)にゲートウェイ120-1へと、かつ、順序付けパス117経由で順序付けパス逆方向(すなわち、order-path-rev-dir115b)に送信し得る。
【0060】
アクティベーションリンク180-1-1は単一のダイレクトコネクションであるのに対し、順序付けパス117は複数のダイレクトコネクションを含む。例えば、例示的な本実施形態の順序付けパス117は、ダイレクトコネクション180-gw1-s1とダイレクトコネクション180-c1-s1の両者を含む。
【0061】
ゲートウェイ120-1、シーケンサ150-1、およびコアコンピュートノード140-1は、ポイントトゥポイントメッシュシステム102と称されるポイントトゥポイントメッシュトポロジー内に配置されている。コアコンピュートノード140-1は、参加者デバイス130から受信されてゲートウェイ120-1を介して前記ポイントトゥポイントメッシュトポロジー内へ導入された取引要求に対するサービス提供に向けてマッチング機能(すなわち、電子取引マッチング機能)を実行するように構成され得る。図1Bの例示的な実施形態において、ポイントトゥポイントメッシュシステム102は、第1のダイレクトコネクション(すなわち、180-1-1)、第2のダイレクトコネクション(すなわち、180-gw1-s1)、および第3のダイレクト(direction)コネクション(すなわち、180-c1-s1)を有する。シーケンサ150-1は、(i)第1のダイレクトコネクションを介してゲートウェイ120-1とコアコンピュートノード140-1との間でやり取りされるメッセージ、およびゲートウェイ120-1、コアコンピュートノード140-1から第2のダイレクトコネクション、第3のダイレクトコネクションをそれぞれ介してシーケンサ150-1で受信されるメッセージについて、確定的順序(すなわち、シーケンス)を決定するように構成され得る。シーケンサ150-1は、(ii)シーケンスマーク付きバージョンの同メッセージを第2、第3のダイレクトコネクションを介してゲートウェイ120-1、コアコンピュートノード140-1にそれぞれ送信することで確定的順序内での同メッセージの位置を伝えるようにさらに構成され得る。同メッセージは、本明細書に開示されるような取引要求又はそれに対する応答をなすものである。このようなメッセージのメッセージフォーマットについては、図1Cに関して後でさらに開示する。
【0062】
シーケンス化されていないメッセージに対して行われ得る前処理の量や、その前処理の結果が破棄又はロールバックされる必要があり得るか否かについては、後でさらに開示する図1Cの実施形態でのメッセージタイプフィールド110-1、記号フィールド110-2、サイドフィールド110-3、価格フィールド110-4などのメッセージ内フィールドに左右され得る。また、その量は、メッセージ内の銘柄記号が同一であるかなどのように共通パラメータについて同じ値を参照しているシーケンス化されていない(すなわち、対応するシーケンスマーク付きメッセージが未受信である)未処理のメッセージが現在他にも存在しているか否かにも左右され得る。
【0063】
例えば、コアコンピュートノード140-1は、メッセージタイプが「新規注文」であるシーケンス化されていないメッセージを受信した場合、注文ブックのうちのこれに関連した部分に関する記号情報を高速メモリに読み込み得る。コンピュートノード140-1は、同新規注文が該注文ブック内のオープン注文とマッチするものである場合、それに応じて「成立」メッセージの生成を開始し得る一方、シーケンスマーク付きバージョンの同メッセージを受信するまでは、注文ブックの更新のコミットと「成立」メッセージの送出を保留し得る。
【0064】
しかしながら、同じ銘柄記号、サイド、価格などを参照したシーケンス化されていない未処理の「新規注文」メッセージをコンピュートノード140-1が他にも受け取っており、これも前記注文ブック内の同じオープン注文に対するマッチ候補となる場合には、該コアコンピュートノード140-1で実行される前処理が違ったものとなり得る。一部の実施形態では、コアコンピュートノード140-1が、オープン注文のマッチとなり得る2つのシーケンス化されていない未処理の「新規注文」メッセージのそれぞれに対し、競合する「成立」メッセージ候補を生成し得る。シーケンス化後バージョンのメッセージに基づき、該「成立」メッセージ候補のうちの一方が廃棄され得るのに対し、他方については前記注文ブックへとコミットされると共にゲートウェイ120へと送出される。他の実施形態において、コンピュートノード140-1は、シーケンス化されていない未処理のメッセージが複数同じオープン注文に対するマッチ候補となり得る場合、破棄又はロールバックされる必要が生じる可能性のある前処理を実行しない(例えば、「成立」メッセージ候補を生成しない)ものとされ得るか、あるいは、シーケンス化されていない未処理のメッセージに対するそのようなあらゆる前処理を中断又は停止するものとされ得る。
【0065】
別の例では、シーケンス化されていない未処理の「新規注文」メッセージが前記注文ブック上のオープン注文に対するマッチ候補となっている場合に、これが、該「新規注文」メッセージのマッチ候補となっている前記注文ブック上の同じオープン注文を取り換えようとしているか又は取り消そうとしているシーケンス化されていない未処理の「注文取換」メッセージ又は「注文取消」メッセージと競合する可能性がある。このような場合、前記シーケンサにより振り当てられた該「新規注文」メッセージと該「注文取換/取消」メッセージの互いのシーケンス(順番)次第で、最終的な結果として、前記注文ブック上のオープン注文と「新規注文」メッセージとのマッチに落ち着くか、同オープン注文が取り消されるか又は別の価格や数量の新規注文に取り換えられるかの、いずれかになり得る。コンピュートノード140-1は、シーケンス化されていない競合する未処理のメッセージのシーケンスマーク付きのバージョンをシーケンサ150-1から受信するまで、これら2種類の結果のうちのいずれにするのかを決めることができない。
【0066】
そのような場合にコンピュートノード140-1で実行される前処理には、様々なものが有り得る。一部の実施形態において、コンピュートノード140-1は、複数の競合する未処理のシーケンス化されていないメッセージが存在する場合、競合する両メッセージ内で参照されている記号に関する前記注文ブックの関連部分を高速メモリに読み込むなどといった、ロールバックや破棄される必要がない前処理を単に実行し得る。他の実施形態では、コンピュートノード140-1が、それぞれ複数の競合シナリオの一つに対応する1つ以上の暫定的な応答候補を形成するなどといった、追加の前処理を実行し得る。例えば、コンピュートノード140-1は、「成立」メッセージ候補及び/又は「取換受付確認」メッセージ候補もしくは「取消受付確認」メッセージ候補を生成し得ると共に、場合によっては、前記注文ブックへの、複数の結果候補のうちの1つ以上に対応した暫定的更新も行い得る。一部の実施形態ではコンピュートノード140-1がそのような競合する全シナリオに対してこの追加の前処理を実行し得る一方で、他の実施形態ではコンピュートノード140-1が一つ又は一部の競合シナリオでのみ追加の前処理を実行し得る。例えば、コンピュートノード140-1は、未処理のシーケンス化されていない競合メッセージが他に存在しない場合にのみ、シーケンス化されていない未処理のメッセージに対して前記追加の前処理を実行し得る。これに代えて又はこれに加えて、コンピュートノード140-1は、前処理の結果のロールバック又は破棄に伴う時間量及び/又は演算(complexity)量に応じて、シーケンス化されていない未処理の競合メッセージに対する追加の前処理の実行に優先順位を付けてもよい。コンピュートノード140-1は、シーケンス化されていない未処理メッセージのシーケンスマーク付きバージョンを受信すると、該シーケンス化されていない未処理メッセージの(シーケンサ150-1により割り当てられた)処理シーケンス(順番)を求めて該シーケンスで同メッセージの処理を完了し得る。一部の実施形態において、当該処理には、前処理の1つ以上の結果のロールバック又は破棄が含まれ得る。
【0067】
既に上述した種類の前処理のほかに、一部の実施形態では、コンピュートノード140-1が、上記の構成に加えて又は上記の構成に代えて、メッセージを受け入れるか拒否するかを決めるメッセージ検証に関する前処理を実行し得る。例えば、同前処理には、メッセージで指定された価格や数量が上限値を超えていないことの確認(すなわち、「価格上限確認」や「数量上限確認」)、メッセージ内の記号が既知の記号であることの確認(すなわち、「不明記号確認」)、該記号の取引が現在許可されていることの確認(すなわち、「記号停止確認」)、価格が正しい小数位数で適切に指定されているかの確認(すなわち、「サブペニーチェック」)などといった、メッセージのリアルタイムリスクチェックの実行が含まれ得る。一部の実施形態では、同前処理の種類に、さらに、特定のクライアントや取引注文に対する「自己取引防止」が有効化(enabled)されている場合に、取引クライアントが自身に対してマッチ候補となる自己取引に特定のマッチ候補がなってしまうのを阻止するための、「自己取引防止」検証チェックが含まれ得る。電子取引システム100は、取引注文がこれらの1種以上の検証チェックに失敗した場合、適切な拒否メッセージをもって応答し得る。このような検証チェックがコンピュートノード140-1によって実行されると上記の実施形態では説明しているが、一部の実施形態では、それに代えて又はそれに加えて、これらの種類の検証チェックの少なくとも一部がゲートウェイ120または電子取引システム100内の他のノードによって実行されてもよいという点を理解されたい。
【0068】
さらなる実施形態では、クライアントから発信されたメッセージに対応付けられた一意的なシステム全体シーケンス識別子がゲートウェイ120-1に知らされることが有益となり得るか又は必要となり得る。この情報により、ゲートウェイ120-1は、元々の上りメッセージを、電子取引システム100中のメッセージ同士が確実に適切に順序付けされるようにするために用いられる一意的なシーケンス番号とペアリングする(match up)ことが可能となり得る。前記ゲートウェイでのこのような構成は、電子取引システム100が状態確定性を達成して前記ゲートウェイの活動に関するフォールトトレランス、高可用性および災害復旧性を提供するうえで必要なことであり得る。上りメッセージに対応付けられたシーケンス識別子に関する情報を維持するようにゲートウェイ120-1を構成するための解決策の一つは、該ゲートウェイ120-1に、前記シーケンス識別子を含んだ応答がシーケンサ150-1から戻ってくるのを待ってからコンピュートノード140-1へのメッセージの転送を行わせるというものである。このようなアプローチは、メッセージ処理のレイテンシの追加に繋がる可能性がある。さらなる例では、シーケンサ150-1が、ゲートウェイ120-1から最初に受信したメッセージのシーケンスマーク付きのものをコンピュートノード140-1に転送すると共に、これに並行して該シーケンスマーク付きメッセージをゲートウェイ120-1にも送信し得る。これならば、ゲートウェイ120-1が、電子取引システム100でのレイテンシを最小限に抑えながらもシーケンス識別子に関する情報を維持するものとなり得る。
【0069】
図1Cは、先に開示した電子取引システム100内のノード間でやり取りされる取引メッセージなどといった取引メッセージの、メッセージフォーマット110のフィールドの例示的な一実施形態についての一覧である。図1Cの例示的な実施形態において、メッセージフォーマット110は、電子取引システム100内のノード間でやり取りされる際の取引メッセージの内的(すなわち、電子取引システム100内での)表現に利用されるように意図された正規化メッセージフォーマットである。例示的な本実施形態において、ゲートウェイ120は、参加者130と電子取引システム100との間でのメッセージのやり取りを行うと共に、参加者130が利用する1つ以上の金融取引プロトコルにより指定される1つ以上のフォーマットと電子取引システム100内のノード間で使用される正規化取引フォーマットとの間で該メッセージの変換を行う。フィールド110-1~110-17は本発明を限定する例ではなく、メッセージフォーマット110のフィールドの数が増えても減ってもよいし、別のフィールドが含まれていてもよいし、また、該フィールドの順序が図1Cに示したものに限定されないという点も理解されたい。
【0070】
本例のメッセージフォーマット110のフィールドは1種類のメッセージフォーマット内にしか描かれていないが、複数のメッセージフォーマットに分散されたり、層状プロトコルにカプセル化させれたりしてもよい。例えば、他の実施形態では、メッセージフォーマット110内の一部のフィールドが層状プロトコルのヘッダ、トレーラ又は1つ以上の拡張フィールドの一部として含められると共に、同メッセージフォーマット100のその他のフィールドについては該層状プロトコルのメッセージペイロード内にカプセル化させるようにしてもよい。例示的な一部の実施形態において、メッセージフォーマット110は、IPデータグラム、UDPデータグラム又はTCPパケットの各ペイロード部分や、イーサネットデータフレームフォーマットやInfiniBand、ユニバーサルシリアルバス(USB)、PCIExpress(PCI-e)及び高精細マルチメディアインターフェース(HDMI)を含む(但し、これらに限定されない)その他のデータフレームフォーマットなどのメッセージデータフレームフォーマットの各ペイロード部分を含め(但し、これらに限定されない)、別のメッセージフォーマットのペイロード(データ)部分にカプセル化された1つ以上のデータフィールドを規定したものであり得る。
【0071】
メッセージフォーマット110は、1つ以上の参加者デバイス130との通信用に金融取引プロトコルに準拠して送信又は受信されるメッセージ内に含められ得る情報に対応したフィールド110-1...110-6を有する。本発明を限定する例ではないが、メッセージタイプフィールド110-1は、取引メッセージの種類を表す。一部の取引メッセージタイプ(「新規注文」、「注文取換」、「注文取消」などのメッセージタイプ)は参加者デバイス130から受信したメッセージに対応するものであるのに対し、他のメッセージタイプ(例えば、「新規注文受付確認」、「注文取換受付確認」、「注文取消受付確認」、「成立」、「約定報告」、「一方的(unsolicited)取消」、「トレードバスト」、各種拒否メッセージなど)は、電子システム100で生成されて参加者デバイス130に送信される取引メッセージ内に含められるメッセージに対応するものである。
【0072】
また、メッセージフォーマット110は、記号フィールド110-2を有し、記号フィールド110-2には、銘柄記号や株式ティッカーなどといった、取引される金融証券の識別子が含められる。例えば、「IBM」は、「InternationalBusiness Machines Corporation」の銘柄記号である。メッセージフォーマット110内のサイドフィールド110-3は、取引メッセージが「買い」、「売り」、それとも「空売り」であるのかなどといった、取引メッセージの「サイド」を表すのに用いられ得る。同様に、価格フィールド110-4は証券の購入や売却の希望価格を表すのに用いられ得て、数量フィールド110-5は証券の希望数量(例えば、株数等)を表すのに用いられ得る。また、メッセージフォーマット110は、注文トークンフィールド110-6を有し得て、注文トークンフィールド110-6には、参加者デバイス130と前記電子取引システムとの間でゲートウェイ120を介して確立された特定の取引セッション(すなわち、「コネクション」または「フロー」)の場面で新規注文を一意的に識別するために参加者デバイス130によって最初に提供される「注文トークン」や「クライアント注文ID」が入力され得る。
【0073】
フィールド110-1・・・110-6は大半の金融取引プロトコルによる大半のメッセージタイプに通常含められている代表的なフィールドであるが、メッセージフォーマット110には、特に、特定のメッセージタイプや特定の金融取引プロトコルをサポートするための、追加の又は代替的なフィールドが含められてもよいという点を理解されたい。例えば、多くの金融取引プロトコルによる「注文取換」や「注文取消」といったメッセージタイプでは、最初の注文と区別するため、取換対象又は取消対象の注文を表すための追加の注文トークンを入力する(supply)ことが参加者130に求められる。同様に、「注文取換」や「注文取消」は取換/取消数量フィールドも典型的に有し得て、「注文取換」は取換価格フィールドを有し得る。また、このような追加の注文取換/取消トークンフィールドや取換価格フィールドや取換/取消数量フィールドは、電子取引システム100によって送信される対応する受付確認メッセージにも含められ得る。
【0074】
また、メッセージフォーマット110は、電子取引システム100内部で内的に使用され得るものであって参加者デバイス130とやり取りされるメッセージ内のフィールドに必ずしも対応するとは限らないフィールド110-11...110-17を有する。例えば、ノード識別子フィールド110-11は、電子取引システム100内の各ノードを一意的に識別するものであり得る。一部の実施形態において、生成ノードは、電子取引システム100中に自身が導入するメッセージ内に自身のノード識別子を含め得る。例えば、各ゲートウェイ120は、参加者デバイス130からコンピュートノード140及び/又はシーケンサ150へと自身が転送するメッセージ内に自身のノード識別子を含め得る。同様に、各コンピュートノード140は、電子取引システム100内の別のノードへと送信されるように自身が生成したメッセージ(例えば、受付確認や、約定や、1つ以上の参加者デバイス130へと転送されることが最終的に意図されている種類非同期メッセージ等)内に自身のノード識別子を含め得る。したがって、電子取引システム100中に導入される各メッセージは、同メッセージ内のノード識別子フィールド110-11によって同メッセージの生成ノードと関連付けられ得る。
【0075】
また、メッセージフォーマット110は、フロー識別子フィールド110-12を有し得る。一部の実施形態では、参加者デバイス130とゲートウェイ120との間に確立された各取引セッション(すなわち、「コネクション」または「フロー」)が、電子取引システム100全体をとおして一意的であるように意図されているフロー識別子によって識別され得る。参加者デバイス130は、1つ又は複数のゲートウェイ120を介して1つ又は複数のフローによって電子取引システム100に接続され得る。そのような実施形態では、特定のフローで参加者デバイス130と電子取引システム100との間でやり取りされる全メッセージの、(電子取引システム100内のノード間で利用される)正規化メッセージフォーマット110に準拠したバージョンのメッセージのフロー識別子フィールド110-12に、そのフローに対する一意的な識別子が含められる。一部の実施形態では、フロー識別子フィールド110-12が、メッセージの生成ノードにより入力される。例えば、ゲートウェイ120は、自身が参加者130から受信して電子取引システム100中へと導入するメッセージのフロー識別子フィールド110-12に、それに対応したフローの識別子を入力し得る。同様に、コアコンピュートノード140は、自身が生成するメッセージ(すなわち、受付確認メッセージ、成立などの応答メッセージや、非同期メッセージを含むその他の下りメッセージ)のフロー識別子フィールド110-12に、それに対応したフロー識別子を入力し得る。
【0076】
一部の実施形態では、フロー識別子フィールド110-12に、高可用性目的のために実際には複数の(場合によっては、複数のゲートウェイによる)冗長的な取引セッションコネクションとして実現され得る所与の論理フローを一意的に識別する値が含められる。すなわち、一部の実施形態では、同じフローIDが、1つ以上の参加者デバイス130と1つ以上のゲートウェイ120との間の2つ以上の冗長フローに割り当てられ得る。そのような実施形態において、該冗長フロー同士は、アクティブ/スタンバイ構成、あるいは、アクティブ/アクティブ構成のいずれかとなり得る。アクティブ/アクティブ構成では、複数の冗長フローにより、機能的に等価なメッセージが並行して1つ以上の参加者デバイス130と1つ以上のゲートウェイ120との間で同時にやり取りされ得る。すなわち、取引クライアントは、電子取引システム100に対して複数の冗長フローにより機能的に等価なメッセージを並行して同時に送信すると共に該複数の冗長フローにより電子取引システム100から複数の機能的に等価な応答を並行して受信し得るのに対し、電子取引システム100は、このような機能的に等価なメッセージのうちの一つにしか処理を行わないものとされ得る。アクティブ/スタンバイ構成では、一度に複数の冗長フローのうちの一つのフローのみがアクティブフローとして指定され得る一方、複数の冗長フローのうちの残りのフローについてはスタンバイフローであると指定され得て、取引メッセージは、現行のアクティブフローでのみ実際にやり取りされ得る。冗長フローがアクティブ/アクティブとアクティブ/スタンバイのどちらの構成で構成されるのかにかかわらず、任意の冗長フローでやり取りされるメッセージ同士は、同メッセージの生成ノードによって正規化メッセージフォーマット110のフロー識別子フィールド110-12に格納された同じまたは共通のフロー識別子を使って識別され得る。
【0077】
上述したように、一部の実施形態において、電子システム100内のノード間でやり取りされるメッセージはシーケンサ150に送信されてシーケンス識別子でマークされる。そのため、メッセージフォーマット110は、シーケンス識別子フィールド110-14を有する。一部の実施形態において、「マークが付いていないメッセージ」は、シーケンス識別子フィールド110-14が空の空白(例えば、ゼロ等)の値の状態で送信されるものであり得る。他の実施形態において、マークの付いていないメッセージのシーケンス識別子フィールド110-14は、前記シーケンサがメッセージに決して割り当てないような特定の所定値、あるいは、無効な値に設定され得る。さらなる他の実施形態では、メッセージにマークが付いていないことが、メッセージがシーケンス化されているか否かを表すブーリアン値、フラグ値などといった、同メッセージの別のフィールド(図示せず)内の表示によって指定され得る。そして、シーケンサ150は、マークが付いていないメッセージを受信すると、該マークが付いていないメッセージのシーケンス識別子フィールド110-14に有効シーケンス識別子値を入力することで「シーケンスマーク付きメッセージ」を生成し得る。シーケンスマーク付きメッセージのシーケンス識別子フィールド110-4内の有効なシーケンス識別子値は、メッセージを一意的に識別すると共に、該マーク付きのメッセージの、電子取引システム100中のその他のマーク付きメッセージとの相対順序付け内での確定的位置を特定する。本例では、シーケンサ150により送信される「シーケンスマーク付きメッセージ」と該シーケンサで受信するマークの付いていない対応するメッセージとが、シーケンスマーク付きのメッセージのほうのシーケンス識別子フィールド110-14に有効なシーケンス識別子値が含まれているという点を除き、同一のものとなり得る。
【0078】
一部の実施形態において、メッセージフォーマット110は、さらに、参照シーケンス識別子フィールド110-15を有し得る。生成ノードは、自身が生成する新規メッセージの参照シーケンス識別子フィールド110-15に、生成中の該メッセージと関係する過去のメッセージのシーケンス番号の値を入力し得る。参照シーケンス識別子フィールド110-15内の値により、電子取引システム100内のノードは、メッセージを過去の関連メッセージと関連付けることができるようになる。
【0079】
参照シーケンス識別子フィールド110-15で参照される過去の関連メッセージは、同じ「注文関連(chain)」(すなわち、「取引注文関連」)の過去のメッセージであり得る。大半の金融取引プロトコルでは、メッセージが、共通のメッセージを参照するか又は共通のメッセージに「由来する」同一フロー上の一連のメッセージである所与の「注文関連」へと論理的にグループ分けされ得る。所与の注文関連は、典型的に、参加者デバイス130が送信する「新規注文メッセージ」で始まる。注文関連の次のメッセージは、典型的に、電子取引システムによる応答(例えば、前記取引システムがメッセージを受け付けた場合の「新規注文受付確認」メッセージや、(本発明を限定しない例であるが)無効な価格などの恐らくフォーマットやパラメータが無効であるといった理由から前記取引システムがメッセージを拒否した場合の「新規注文拒否」メッセージのいずれか)である。所与の注文関連には、以前に受付確認がなされた(しかし、未だオープン状態のままの、つまり、取り消されていない且つ/或いは成立していない数量が少なくとも一部含まれている)新規注文のうちの少なくとも一部の数量を取り消す、参加者デバイス130により送信された「注文取消」メッセージも含まれ得る。「注文取消」メッセージについても、同じく(also)該注文関連の一部となる「注文取消受付確認」、「注文取消拒否」メッセージのいずれかを使って、前記電子取引システムによる受付確認又は拒否が行われ得る。また、所与の注文関連には、以前に受付確認がなされた(しかし、未だオープン状態のままの)新規注文の数量および/または価格を取り替える、参加者デバイス130により送信された「注文取換」メッセージも含まれ得る。「注文取換」メッセージについても、同じく(also)該注文関連の一部となる「注文取換受付確認」、「注文取換拒否」メッセージのいずれかを使って、前記電子取引システムによる受付確認又は拒否が行われ得る。以前に受付確認がなされた未だオープン状態のままの注文は、反対側の1つ以上の逆注文(つまり、一方のサイドが「買い」であるときの、他方のサイドの「売り」又は「空売り」)とマッチングする可能性があり、すると、電子取引システム100は、(一つのマッチでオープン注文の全数量が成立した場合の)完全「成立」メッセージや(一つのマッチでオープン注文の数量の一部しか成立しなかった場合の)1つ以上の部分「成立」メッセージを生成し得るが、これらの「成立」注文も該注文関連の一部となる。一般的には、上述のように、前記参照シーケンス識別子によって、同じ注文関連内の別の先行メッセージが識別され得る。
【0080】
例えば、参照シーケンス識別子フィールド110-15の話題に戻るが、参照シーケンス番号の値は、参加者デバイス130から発信されてゲートウェイ120によって電子取引システム100中に導入された「上り」メッセージに対して前記シーケンサが割り当てられたシーケンス番号であり得て、コンピュートノード140により生成される応答メッセージなどといった、それに対応する「下り」メッセージは、応答対象となる前記上りメッセージのシーケンス番号値を参照するものとなり得る。この例では、コンピュートノード140で生成された「新規注文受付確認」メッセージや「成立」メッセージの参照シーケンス識別子フィールド110-15内に、該コンピュートノード140が「新規注文受付確認」メッセージによる応答や「成立」メッセージによる注文成立で対処しようとしている対応する「新規注文」メッセージに割り当てられたシーケンス識別子の値が、含められる。しかしながら、一般的に言って、参照シーケンス識別子フィールド110-15の値は、必ずしも、電子取引システム100が直接応答しようとしているメッセージのものである必要はなく、同じ注文関連の一部である先行メッセージのもの、例えば、「新規注文」や「新規注文受付確認」のシーケンス番号であってもよい。
【0081】
また、少なくとも一部のメッセージタイプになるが、一部の実施形態において、ゲートウェイ120は、自身が電子取引システム100中に導入するメッセージの参照シーケンス識別子フィールド110-15に、先行する関連メッセージのシーケンス識別子の値を入力し得る。例えば、ゲートウェイ120は、「注文取消」や「注文取換」メッセージ内の参照シーケンス識別子フィールド110-15に、それ以前の対応する「新規注文」や「新規注文受付確認」メッセージに割り当てられたシーケンス識別子の値を入力し得る。また、同様に、コアコンピュートノード140も、対応する「注文取消受付確認」メッセージや「注文取換受付確認」メッセージのシーケンス識別子フィールド110-15に、該コンピュートノード140が直接応答しようとしているメッセージのシーケンス識別子の値ではなく(例えば、「注文取消」や「注文取換」メッセージのシーケンス識別子ではなく)「新規注文」や「新規注文受付確認」のシーケンス識別子の値を入力するものとされてよい。再び述べるが(Again)、参照シーケンス識別子フィールド110-15により、電子取引システム100内のノード全般が、メッセージを同じ注文関連の1つ以上の過去のメッセージと関連付けることができるようになる。
【0082】
また、生成ノードは、自身が電子取引システム100中に導入するメッセージ内に、ノード固有タイムスタンプフィールド110-13を含め得る。シーケンサ150によって出力されたシーケンスマーク付きメッセージのシーケンス識別子フィールド110-14に含まれているシーケンス識別子は電子取引システム100全体で一意的なものとなるように意図されているのに対し、ノード固有タイムスタンプフィールド110-13内の値は、一部のメッセージ同士、すなわち、特定の生成ノードによって電子取引システム100中に導入されるメッセージ同士の中でのみ一意的なものとなり得る。本明細書では「タイムスタンプ」と称しているものの、ノード固有タイムスタンプフィールド110-13に配される値は、そのノードで生成されるメッセージ同士の中で一意的となる適切な値であれば、どのような値であってもよい。実際には、前記ノード固有タイムスタンプは、例えば、タイムスタンプであってもよいし単調増加又は単調減少する任意の適切な値であってもよい。
【0083】
一部の実施形態は、前記メッセージフォーマット内に、別のタイムスタンプフィールドを有し得る。例えば、メッセージフォーマットは、参照タイムスタンプフィールドを有すし得る。該参照タイムスタンプフィールドは、過去の関連メッセージの生成ノードによって割り当てられたタイムスタンプ値であり得る。このような実施形態において、コンピュートノード140は、自身が生成するメッセージのノード固有タイムスタンプフィールド110-13に新たなタイムスタンプ値を含め得ると共に、自身が生成する同メッセージの参照タイムスタンプフィールドに関連メッセージのタイムスタンプ値を含め得る。例えば、前記コンピュートノードにより生成される「新規注文受付確認」メッセージは、該「新規注文受付確認メッセージ」の参照タイムスタンプフィールドに、自身が応答しようとしている「新規注文」のタイムスタンプ値を含め得る。また、一部の実施形態において、コンピュートノード140は、自身が生成するメッセージのノード固有タイムスタンプフィールド110-13に新たなタイムスタンプ値を含め得ることなく、該ノード固有タイムスタンプフィールド110-13に過去の関連メッセージのタイムスタンプ値を単に入力し得る。
【0084】
メッセージフォーマット110は、時間ベース値(TBV)フィールド110-118を有し得る。別の箇所でさらに詳しく説明するが、該TBVフィールドは、上りメッセージがゲートウェイ120-1で受信された時間(ここでは、受入時間や到着時間と言う)に相当し得るが、別の実装では、対応する応答メッセージが前記システムにより返送される所望の退出時間(本明細書では送出時間や退出時間Texと言う)に相当し得る。その場合、TBVは、(後で詳しく説明するように)受信時間に何らかの確定的時間遅延値を加えた時間から求められる。そのため、典型的な一実施形態における前記TBVは、典型的に、これまでに触れた「ノード固有タイムスタンプ」フィールド110-13やシーケンス番号と同じフィールドではない(例えば、シーケンスID110-14や参照シーケンスID110-15とは異なるフィールドである)。
【0085】
また、メッセージフォーマット110は、エンティティタイプフィールド110-16およびエンティティカウントフィールド110-17を有し得る。メッセージのエンティティタイプは、それがゲートウェイ120、コンピュートノード140のどちらで電子取引システム100中に導入されるものであるのか、すなわち、該メッセージが参加者デバイス130からゲートウェイ120で受信される上りメッセージであるのか、それとも、コンピュートノード140によって生成されて参加者デバイス130へと送信される下りメッセージであるのかに左右され得る。例えば、一部の実施形態では、上りメッセージのエンティティタイプが「フロー」であると見なされる(そして、上りメッセージのエンティティタイプフィールド110-16には、ゲートウェイ120により、タイプ「フロー」を表す値が入力される)のに対し、下りメッセージのエンティティタイプが「記号」であると見なされる(そして、下りメッセージのエンティティタイプフィールド110-16には、コンピュートノード140により、タイプ「記号」を表す値が入力される)。このような実施形態では、タイプ「フロー」のエンティティのカウントがゲートウェイ120によって維持されると共に、タイプ「記号」のエンティティのカウントがコンピュートノード140によって維持される。
【0086】
エンティティタイプ「フロー」について考える。ゲートウェイ120は、該ゲートウェイ120上のアクティブな各フローで該ゲートウェイ120により受信される上りメッセージをカウントすることで、各フローごとの上りメッセージのカウントを維持し得る。例えば、ゲートウェイ120上で4つの非冗長フローがアクティブとなっている場合、前述したように、それぞれのフローに対して一意的なフロー識別子が割り当てられれて、該ゲートウェイ120は、それら4つの各フローで受信される上りメッセージの数をカウントすることにより、各フローごとの上りメッセージのカウントを維持する。このような実施形態では、ゲートウェイ120が、上りメッセージのエンティティカウントフィールド110-17に、(該メッセージのフロー識別子フィールド110-12に入力されたフロー識別子値によって電子取引システム100全体をとおして識別される)該上りメッセージのフローに対応した、各フローごとの上りメッセージのカウントを入力する。
【0087】
アクティブ/アクティブ構成の冗長フローの場合(すなわち、前述のように、1つ以上のゲートウェイ120を介して接続された1つ以上の参加者デバイス130から並行して同じメッセージ又は少なくとも機能的に等価なメッセージを複数のフローが受信する場合)、各基礎冗長フローに同じフロー識別子が割り当てられ得るが、特に、該冗長フロー同士が別々のゲートウェイ120上に実現されている場合には、各冗長フローごとのフロー別の上りメッセージのカウントが各基礎冗長フローごとに個別に維持されることになり得る。参加者デバイス130は同じ順序(すなわち、シーケンス)で同じ一連のメッセージを各々の冗長フローを介して電子取引システム100に送信するものと予想されるので、別々の冗長フローで受信した機能的に等価なメッセージに振り当てられるエンティティカウントも同一になると予想される。
【0088】
機能的に等価なこれらの上りメッセージは、1つ以上のゲートウェイ120によってシーケンサ150及びコンピュートノード140へと転送され得る。つまり、このような実施形態において、シーケンサ150およびコンピュートノード140は、同じフロー識別子が対応付けられた機能的に等価な上りメッセージを複数受信することになり得るが、該シーケンサ150および該コンピュートノード140は、同じフロー識別子を有する複数のメッセージのエンティティカウントが同一である場合、該メッセージ同士が機能的に等価であると識別することができる。
【0089】
一部の実施形態において、シーケンサ150およびコンピュートノード140は、各フローに対応した上りメッセージのエンティティカウントフィールド110-17に含められたエンティティカウントの最大値を、各フローごとに追跡し得る。これにより、シーケンサ150およびコンピュートノード140は、各ノードが受信した複数の機能的に等価な上りメッセージのうちの最初に到着したメッセージに対してのみ処理を行い、その他の後から到着した機能的に等価な上りメッセージを無視することができる。一部の実施形態では、例えば、シーケンサ150が、最初に到着した該機能的に等価な上りメッセージのみをシーケンス化し得ると共に、コンピュートノード140が、最初に到着した該機能的に等価なメッセージに対してのみ処理を開始し得る。ノード(すなわち、シーケンサ150またはコンピュートノード140)が受信した上りメッセージのエンティティカウントが、そのノードで同フローについて確認されたエンティティカウントの最大値と同じ又はそれを下回る場合、該ノードは、その上りメッセージが、過去に受信した別の上りメッセージと機能的に等価であると判定し得ると共に、後続受信の機能的に等価な上りメッセージを単に無視し得る。
【0090】
次に、エンティティタイプ「記号」の場合について考える。コンピュートノード140は、該コンピュートノード140が取り扱う(serviced by)各記号について、該コンピュートノード140により生成されて該コンピュートノード140から送信される下りメッセージをカウントすることで、各記号ごとの下りメッセージのカウントを維持し得る。例えば、コンピュートノード140が4種類の記号(例えば、MSFT、GOOG、IBM、ORCL等)を取り扱うものである場合、それぞれの記号に対し、前述のように、メッセージの記号フィールド110-2に入力される記号識別子が割り当てられると共に、該コンピュートノード140は、自身が生成・送信する、それら4種類の各記号を取り扱った下りメッセージの数をカウントすることで、各記号ごとの下りメッセージのカウントを維持する。このような実施形態では、コンピュートノード140が、上りメッセージのエンティティカウントフィールド110-17に、下りメッセージの(該メッセージの記号識別子フィールド110-2に入力された値によって電子取引システム100全体をとおして識別される)記号に対応付けられた、各記号ごとの下りメッセージカウントを入力する。
【0091】
後でさらに説明するように、一部の実施形態において、コンピュートノードは、高可用性の理由から複数のコンピュートノードが並行して特定の記号を取り扱うものとなるように構成され得る。複数のコンピュートノードが同じ(given)記号を取り扱う場合も、シーケンサ150によって電子取引システム100全体をとおしてメッセージ同士が確定的に順序付けされていることから、どのコンピュートノードであっても、同一記号を参照した上りメッセージ同士を同じ順序(すなわち、シーケンス)かつ同じ様式で処理し、これにより、機能的に等価な応答メッセージを確実に並行して生成することが可能となる。特定の記号についての下りメッセージを複数のコンピュートノード140をとおして送出する場合について考えるが、その記号を参照した各下りメッセージと機能的に等価なメッセージが、その記号を取り扱うその他のアクティブな(actively)各コンピュートノード140からも送出されているはずである。これらの下りメッセージは、いずれも、コンピュートノード140からシーケンサ150やゲートウェイ120へと送信され得る。したがって、このような実施形態でのシーケンサ150やゲートウェイ120は、同じ記号に関する複数の機能的に等価な上りメッセージを受信することになり得るが、該シーケンサ150および該ゲートウェイ120は、同じ記号識別子を有する複数のメッセージの前記エンティティカウントが同一である場合に、該メッセージ同士が機能的に等価であると識別することができる。一部の実施形態において、シーケンサ150およびゲートウェイ120は、各記号ごとに、同記号に関する下りメッセージのエンティティカウントフィールド110-17に含められたエンティティカウントの最大値を追跡し得る。これにより、シーケンサ150およびゲートウェイ120は、各ノードが受信した機能的に等価な複数の下りメッセージのうちの最初に到着したメッセージに対してのみ処理を行い、機能的に等価な後から到着したその他の下りメッセージを無視することができる。一部の実施形態では、例えば、シーケンサ150が、最初に到着した該機能的に等価な下りメッセージのみをシーケンス化し得る。同様に、ゲートウェイ120は、最初に到着した該機能的に等価なメッセージに対してのみ処理を開始し得る。ノード(すなわち、シーケンサ150またはゲートウェイ120)が受信した下りメッセージのエンティティカウントが、そのノードで同記号についてこれまでに確認されたエンティティカウントの最大値と同じ又はそれを下回る場合、該ノードは、その下りメッセージが、過去に受信した別の下りメッセージと機能的に等価であると判定し得ると共に、後続受信の機能的に等価な下りメッセージを単に無視し得る。
【0092】
複数の機能的に等価なメッセージのうちのシーケンサ150に最初に到着したメッセージのみを該シーケンサ150がシーケンス化する実施形態において、該シーケンサがこれを行う方法には、様々なものが有り得る。一例では、最初に到着した該機能的に等価なメッセージと機能的に等価な、後から到着したその他の到着メッセージが、前記シーケンサによって単に無視され得る(その場合、機能的に等価な一連のメッセージについては、シーケンスマーク付きの一つのメッセージのみが前記シーケンサによって出力され得る)。別の可能性として、前記シーケンサは、例えば、機能的に等価な最初のメッセージの(エンティティタイプ「フロー」や「記号」を有するメッセージである場合の)エンティティカウント、フロー識別子又は記号識別子と、そのシーケンス番号との関連付けを行うことにより、自身が該メッセージに割り当てたシーケンス番号の追跡を行う。これにより、前記シーケンサ150は、該シーケンサで受信した機能的に等価なメッセージのうち最初に到着したメッセージに該シーケンサが割り当てた値と、シーケンス化後のバージョンの機能的に等価な全メッセージのシーケンス識別子フィールド110-14の値が同じになるようにして、シーケンス化後のバージョンの機能的に等価な各メッセージを出力し得る。
【0093】
他の実施形態において、シーケンサ150は、メッセージ同士が機能的に等価であるか否かを追跡せず、該シーケンサ150に到着するシーケンス化されていない各メッセージに対し、同メッセージが機能的に等価な複数のメッセージのうちの一つであるか否かにかかわらず、一意的なシーケンス番号を割り当て得る。このような実施形態では、機能的に等価な複数のメッセージのうちのシーケンス化後のバージョンの各メッセージに対し、相異なるシーケンス識別子が、シーケンサ識別子フィールド110-14の値として前記シーケンサによって割り当てられる。このような実施形態において、シーケンス化された機能的に等価なメッセージの受信ノードは、シーケンス化された機能的に等価なメッセージ同士の中で該ノードに最初に到着したシーケンス化後のバージョンのメッセージのシーケンス識別子を用いて、機能的に等価な一連のメッセージ同士の中での実効シーケンス識別子を求め得る。電子取引システム100内のノード間にポイントトゥポイント型のダイレクトコネクションが存在する実施形態では、シーケンス化後のバージョンのメッセージがシーケンサ150によってシーケンス化順に送出されることから、それに応じて、該シーケンサに直接接続されたどのノードでも、シーケンス化後のバージョンのメッセージが同じシーケンス化順に受信されるはずである。したがって、シーケンス化されたメッセージを前記シーケンサとのポイントトゥポイント型のダイレクトコネクションによって各自受信するどのノードでも、シーケンス化された機能的に等価な複数のメッセージのうちの最初に到着するシーケンス化メッセージのシーケンス識別子フィールド110-14の値は同じになるはずである。
【0094】
これからの説明から明白かもしれないが、メッセージフォーマット110のようなメッセージフォーマットを備える実施形態では、メッセージのシーケンス識別子以外にも、電子取引システム100全体をとおしてメッセージを一意的に識別するための方法が他に複数存在し得る。例えば、メッセージがノード識別子とノード固有タイムスタンプの両方を有する実施形態では、メッセージ内にこれら2種類の識別子が存在するだけで、電子取引システム100全体をとおして該メッセージを一意的に識別するのに十分であり得る。これらのようなフィールドは、メタデータを含んでいると解釈され得て、該メタデータが同一である複数のメッセージは、共通のメタデータを含んでいると解釈され得る。同様に、電子取引システム100全体をとおしてフロー識別子が一意的なものとなる実施形態では、メッセージのフロー識別子とノード固有タイムスタンプとの組合せだけで、電子取引システム100全体をとおしてメッセージを一意的に識別するのに十分であり得る。また、フロー識別子とエンティティカウントの組合せだけで、エンティティタイプ「フロー」のメッセージを一意的に十分識別することが可能であり、記号識別子とエンティティカウントの組合せだけで、エンティティタイプ「記号」のメッセージを一意的に十分識別することが可能である。
【0095】
しかし、メッセージに割り当てられたシーケンス識別子以外に電子取引システム100全体をとおしてメッセージを一意的に識別する方法が有り得たとしても、シーケンス識別子は、電子取引システム100中のその他のノードによって生成されるその他のメッセージ同士の中での該メッセージの相対順序付けを公平的かつ確定的に指定するのに依然として必要となるという点に留意されたい。例えば、ノード固有タイムスタンプが実際にタイムスタンプ値として実現されている場合、ノード間のシステムクロックが完璧に同期していたとしても、別々のノードによって各自生成された2つの異なる各メッセージに対し、各々の生成ノードによって同一のタイムスタンプ値が割り当てられるという可能性があり、その場合、これら2つのメッセージの相対順序は曖昧になってしまう。たとえメッセージを一意的に識別することが可能であるしても、両メッセージの受信ノードは、メッセージに対して何らかの(possible)処理を行う前に、何らかの方法によってこれら2つのメッセージの相対順序付けを求める必要がある。
【0096】
この曖昧さを受信ノードが解決するための方法の一候補として、例えば、所与のメッセージをランダムに選び出して該メッセージが電子取引システム100全体のメッセージの相対順序付けの中で別の所与のメッセージよりも先行していると見なすというランダム性を利用した方法が有り得る。しかしながら、ランダム性を使って曖昧さを解決するという構成は、電子取引システム100全体の「状態確定性」をサポートしない。共通の一連のメッセージに対して別々の受信ノードが別々の相対順序付けをランダムに決定した場合、電子取引システム100内の動作(behavior)が予測不可能かつ非確定的なものとなってフォールトトレランス、高可用性、災害復旧性などの重要機能の適切(correct)な実現を妨げる可能性がある。
【0097】
順序付けの曖昧さを受信ノードが解決するための別の方法として、例えば、メッセージに対応付けられたノード識別子を基にして所定の優先順位付けを行うという方法によるものが挙げられる。しかしながら、このような方法は、電子取引システム100中にメッセージを導入したノードのノード識別子に単純に基づいて一部のメッセージに高い優先順位を与えるため、公平性という重要な目標に反することになる。例えば、たまたま所定の優先順位付方法でより高い優先順位であると見なされているゲートウェイ120を介して電子取引システム100に接続されているという理由だけで、所与の参加者装置130がより有利に扱われる(favored)ことになり得る。
【0098】
エンティティカウントと(メッセージのエンティティタイプが「記号」、「フロー」のどちらであるのかに応じて)記号識別子又はフロー識別子とによってメッセージが一意的に識別される場合には、(エンティティタイプが「記号」であるメッセージの場合は)同記号又は(エンティティタイプが「フロー」であるメッセージの場合は)同フローに関するその他のメッセージ同士との間で、順序付けが確定的なものとなり得る。しかし、別の記号やフローに関するその他のメッセージとの間では、依然として順序付けが非確定的なままである。
【0099】
したがって、メッセージフォーマット100内の、シーケンサ150によってメッセージに割り当てられたシーケンス識別子以外のフィールドだけでも、電子取引システム100全体をとおしてメッセージを一意的に識別するのに十分かもしれないが、該シーケンス識別子は、電子取引システム100内のその他のメッセージに対する所与のメッセージの順序付けを公平的かつ確定的に特定するのに依然として必要になり得る。このような実施形態において、シーケンサ150(あるいは、シーケンサ150が複数存在する場合であれば現行アクティブな一つのシーケンサ)は、電子取引システム100全体でのシーケンスマーク付きメッセージ同士の純粋に(truly)確定的な順序付けを行う権限を有する権限元(authoritative source)として機能する。
【0100】
一部の実施形態において、電子取引システム100内のノードは、生成ノードによって電子取引システム100中に導入されたシーケンス化されていない(マークが付いていない)バージョンのメッセージと、シーケンサ150によってシーケンス識別子が割り当てられた(マークが付いた)バージョンのメッセージの、2種類のバージョンのメッセージを受け取り得る。これは、生成ノードが、マークの付いていないメッセージを1つ又は複数の受信ノードだけでなくシーケンサ150にも送信する実施形態で起こり得る。その後、シーケンサ150は、それと同じ受信ノードを含む一連のノードに対して、シーケンスマークが付いたバージョンの同メッセージを送信し得る。
【0101】
前述したように、シーケンスマーク付きバージョンのメッセージが電子取引システム100におけるその他のマーク付きメッセージ同士の中での該メッセージの相対処理順序(すなわち、シーケンス内での位置)を決定するのに役立つ一方、マークが付いていないバージョンのメッセージを受信ノードに受信させるという構成も有用であり得る。例えば、マーク付きバージョンのメッセージは、シーケンサ150という仲介ホップを介して送信されることから、(例えばノード間にダイレクトコネクションが存在する実施形態では)マークの付いていないバージョンのメッセージがマーク付きバージョンのメッセージよりも先に受信されることが、想定外ではあるものの十分に起こり得る。つまり、一部の実施形態において、受信ノードは、その他のマーク付きメッセージ同士の中での相対順序付けを決める権限を有するマーク付きバージョンのメッセージを受信するよりも先にマークが付いていないメッセージを受信することで、該マークが付いていないメッセージの処理をアクティベートするという機会を享受することになる。
【0102】
同じメッセージについてマーク付きのバージョンとマークが付いていないバージョンの両方を受信したノードは、双方のバージョンのメッセージ内の共通の識別情報又は「共通のメタデータ」を使って、これら2つのバージョンのメッセージを互いに関連付け得る。例えば、生成ノードは、前述したように、自身が生成するメッセージ(すなわち、マークが付いていないメッセージ)に、電子取引システム100全体での各メッセージの一意的な識別を協力して行い得るノード識別子とノード固有タイムスタンプとを含め得る、シーケンサ150によって割り当てられたシーケンス識別子を除いてメッセージのマーク付きバージョンとマークの付いていないバージョンが本質的に同一である実施形態では、マーク付きメッセージにも、対応するマークが付いていないほうのメッセージにも含まれているものと同じノード識別子およびノード固有タイムスタンプが含められ得ることから、両方のバージョンのメッセージの受信ノードは、マークが付いたバージョンとマークが付いていないバージョンとを関連付けることが可能となる。これにより、マーク付きメッセージは、そのままでも(directly)電子取引システム100中のその他のマーク付きメッセージに対する自身の相対順序付けが定まるようになっているが、同じメッセージのマークが付いていないバージョンとマーク付きバージョンとの間でなされ得る前記関連付けにより、(前述したその関連付けを少なくとも使って)電子取引システム100中の(マークが付いたもの、マークが付いていないものにかかわらず)その他のメッセージに対する同マーク付きメッセージの相対順序付けが定まるようになる。また、電子取引システム100内のノードは、メッセージを一意的に識別する前述のその他の方法によって、シーケンスマーク付きのものをマークの付いていないバージョンのメッセージと関連付けるものであってもよいという点を理解されたい。例えば、シーケンスマーク付きメッセージとマークが付いていないメッセージとの関連付けが、フロー識別子とノード固有タイムスタンプとの組み合わせによって行われてもよい。これに加えて又はこれに代えて、エンティティタイプ「記号」、「フロー」を各自有するメッセージの場合、そのような関連付けは、メッセージのエンティティカウントと該メッセージ内の記号識別子又はフロー識別子とによって行われてもよい。
【0103】
マイクロ秒、さらには、ナノ秒さえも必然的である高速取引の時代では、電子取引システム100とメッセージをやり取りする参加者デバイス130がレイテンシの影響を極めて受け易い場合が多く、予測可能な低レイテンシが好まれる。図1Aに示す配置構成は、少なくとも各ゲートウェイ120と各コンピュートノード140との間にポイントトゥポイントメッシュ172のアーキテクチャを設けることで、この要件に応えている。一部の実施形態では、メッシュ172内の各ゲートウェイ120が、コンピュートノード140およびシーケンサ150への専用の高速ダイレクトコネクション180を有するものとされ得る。
【0104】
例えば、第1ゲートウェイ120-1と第1コアコンピュートノード140-1との間に専用コネクション180-1-1が、第1ゲートウェイ120-1と第2コアコンピュートノード140-2との間に専用コネクション180-1-2が…というように設けられていくことにより、ゲートウェイ120-gと第cコアコンピュートノード140-cとの間にコネクション例180-g-cが、そして、シーケンサ150と第cコアコンピュートノード140-cとの間にコネクション例180-s-cが設けられる。
【0105】
一部の実施形態では、ポイントトゥポイントメッシュ172の専用コネクション180のそれぞれが、共有スイッチを利用しないポイントトゥポイント型のダイレクトコネクションになるという点を理解されたい。本明細書では、専用コネクション又はダイレクトコネクションのことをダイレクト「リンク」や専用「リンク」といった風に、互換可能に称する場合があるが、これは、2つのエンドポイント間での通信専用(例えば、非共有)のダイレクトコネクションのことである。このような専用/ダイレクトリンクは、後でさらに開示するような適切な相互接続部やインターフェースであれば、どのようなものであってもよく、有線イーサネットネットワーク接続やその他の種類の有線又は無線ネットワークリンクのようなネットワークリンクに限定されない。本明細書では、専用/ダイレクトコネクション/リンクが、2つのエンドポイント間のエンドトゥエンドパスと称される場合がある。このようなエンドトゥエンドパスは、単一のコネクション/リンクであってもよいし、一連のコネクション/リンクからなるものであってもよい。ただし、専用/ダイレクトコネクション/リンクの帯域幅は、その全体、つまり、1つのエンドポイントから別のエンドポイントにかけて非共有であり、専用/ダイレクトコネクション/リンクの帯域幅もレイテンシも、トラバース対象の1つ以上の要素のリソース利用の影響を受け得ないものとされる。例えば、専用/ダイレクトコネクション/リンクは、1つ以上のバッファや、利用によって帯域幅やレイテンシに影響が出ないその他の要素をトラバースしている場合がある。ただし、該専用/ダイレクトコネクション/リンクは、利用の共有によって帯域幅および/またはレイテンシに影響を及ぼし得る共有ネットワークスイッチをトラバース対象としない。
【0106】
例えば、一部の実施形態において、ポイントトゥポイントメッシュ172における専用コネクション180は、10ギガビットイーサネット(GigE)、25GigE、40GigE、100GigE、InfiniBand、PeripheralComponent Interconnect-Express(PCIe)、RapidIO、スモールコンピュータシステムインターフェース(SCSI)、FireWire、ユニバーサルシリアルバス(USB)、高精細マルチメディアインターフェース(HDMI)、カスタムシリアル又はパラレルバスなどの数多くの方法で行われ得る。
【0107】
したがって、コンピュートエンジン140、ゲートウェイ120、シーケンサ150、およびその他のコンポーネントは、本明細書において「ノード」と称している場合があるものの、それ以外の種類の相互接続やインターフェースも可能であることから、「コンピュートノード」や「ゲートウェイノード」や「シーケンサノード」や「メッシュノード」といった用語を使っているからといって、特定のコンポーネントの接続がネットワークリンクを利用して行われる必要があるという意味に解釈されるべきでない。また、本明細書で開示する「ノード」とは、該ノードについて説明した各機能を実行するように構成された適切なハードウェア、ソフトウェア、ファームウェアコンポーネント、またはこれらの組合わせであれば、どのようなものあってもよい。詳細に後述するように、ノードは、プログラムされた汎用プロセッサであり得るが、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、その他のハードウェアデバイスやデバイス群などといった専用のハードウェアデバイスであってもよいし、ハードウェアデバイス内、プリント回路基板(PCB)内またはその他のハードウェアコンポーネント内の論理であってもよい。
【0108】
本明細書で開示するノード同士は、別々の要素であってもよいし、単一の要素内、例えば、本明細書で説明する該ノードの機能を実行するための論理を実装するように構成された単一のFPGA、ASICまたはその他の要素内に一緒に集積されたものであってもよいという点を理解されたい。また、ノードは、汎用コンピュータ及び/又は前述した任意のデバイスにより実行される論理を実装したソフトウェアのインスタンス化であってもよい。
【0109】
コンピュートエンジン140、ゲートウェイ120、シーケンサ150などのコンポーネントを1つ以上の共有スイッチを介して接続するという従来のアプローチでは、レイテンシが最小限のものにならない。また、このような従来のアプローチでは、メッセージトラフィックの重い期間中に、レイテンシの予測不可能なスパイクも生じる。
【0110】
また、例示的な一実施形態において、専用コネクション180は、各ゲートウェイ120と各シーケンサ150との間、および各シーケンサ150と各コアコンピュートノード140との間に直接設けられている。また、一部の実施形態では、専用コネクション180が全シーケンサ間にも設けられており、これにより、シーケンサ例150-1はその他の各シーケンサ150-2,...,150-sとの間に専用コネクション180を有する。図1Aには描かれていないが、一部の実施形態では、専用コネクション180が、全ゲートウェイ120間にも設けられ得て、これにより、各ゲートウェイ120-1はその他の各ゲートウェイ120-2,...,120-gとの間に専用コネクション180を有する。同様に、一部の実施形態では、専用コネクション180が全コンピュートノード140間にも設けられており、これにより、コアコンピュートノード例140-1はその他の各コアコンピュートノード140-2,...,140-cとの間に専用コネクション180を有する。
【0111】
また、一部の実施形態において、2つのノード間(例えば、任意の2つのノード120,150,140間)の専用コネクション180は、冗長性および信頼性を高めるため、同じ2つのノード間の複数の冗長的な専用コネクションとして実現されてもよいという点を理解されたい。例えば、ゲートウェイ120-1とコアコンピュートノード140-1(例えば、第1コア)との間の専用コネクション180-1-1は、一対の専用コネクションとして実際には実現され得る。
【0112】
また、一部の実施形態において、所与のノードによって送出される全メッセージは、ポイントトゥポイントメッシュ172内で該ノードに直接接続されている全ノードに並行して送出される。ポイントトゥポイントメッシュ172内の各ノードは、メッセージの受信時に何らかの処理を行うべきか否か、あるいは、そうではなく単に同メッセージを無視すべきか否かを、例えば該ノードの構成に基づいて自分自身で判断し得る。一部の実施形態において、ノードは、自身の構成がメッセージの受信時に実質何の処理も行わないような構成であったとしても、同メッセージを完全に無視し得るのではなく、シーケンサ150によって同メッセージに割り当てられた任意のシーケンス番号を利用する(consuming)などといった、少なくとも最小限の処理を行うものとされ得る。すなわち、このような実施形態において、該ノードは、受信した最新シーケンス番号を追跡するものとされ得る。これにより、もっと具体的な(substantial)処理を該ノードがメッセージに対して行う際に、同処理が適切なシーケンス順で行われることが確実となり得る。
【0113】
例えば、「マイクロソフト社株を190ドルで10株売る」という取引注文を含むメッセージが、トレーダのパーソナルコンピュータといった参加者デバイス130-1から発信されてゲートウェイ120-1(すなわち、第1GW)に到着したとする。同メッセージは、たとえコアコンピュートノード140-2だけが現在マイクロソフト社の注文についてのマッチングを実行しているとしても、全コアコンピュートノード140-1,140-2,...,140-cに送信される。140-2以外の(other)全てのコアコンピュートノード140-1,140-3,...,140-cは、受信時に同メッセージを無視するか、あるいは、同メッセージに対して最小限の処理しか行わないものとされ得る。例えば、140-1,140-3,...,140-cが行う唯一の処理は、シーケンサ150-1によって同メッセージに割り当てられたシーケンス番号を利用する(consume)ことであり得る。さらに、同メッセージは、メッシュに従事する現行アクティブなシーケンサが一つ(本例では、シーケンサ150-1)だけであったとしても、全てのシーケンサ150-1,150-2,...,150-sに送信される。150-1以外の(other)シーケンサ150-2,...,150-sも同メッセージを受信するという構成により、シーケンサ150-1(現行アクティブなシーケンサ)が故障した場合や、別のアクティブなシーケンサに換えたほうが電子取引システム100の総合的な信頼性が向上するような場合に、該シーケンサ150-2,...,150-sが現行アクティブなシーケンサを引き継ぐという機会が得られる。また、150-1以外の(other)1つ以上のシーケンサ(例えば、シーケンサ150-2)は、システム状態の災害復旧サイト155への継承を担うものであり得る。災害復旧サイト155は、電子取引システム100の個々のコンポーネントの一部又は全ての物理的又は仮想的なインスタンス化を含んだ該電子取引システム100のレプリカを別の物理的な場所に備えたものであり得る。
【0114】
各メッセージを直接接続された全ノードに並行して送出するという構成により、システム100は、複雑性を抑えると共に冗長性と高可用性を促す。直接接続された全ノードが初期設定で全メッセージを受信するようになっている場合、複数のノード同士が、同じメッセージを冗長的に処理するように構成され得る。Microsoft社株を190ドルで10株売る」という前述の注文例に戻ると、一部の実施形態では、複数のコアコンピュートノード140が、Microsoft社の注文についてのマッチングを同時に実行することになり得る。例えば、コアコンピュートノード140-1とコアコンピュートノード140-2の両方が、Microsoft社のメッセージについてのマッチングを同時に行い得るほか、前記「売り」注文の上りメッセージを受信した後、それぞれ独立して受付確認メッセージ、約定メッセージなどの応答メッセージを生成し、コアコンピュートノード140-1とコアコンピュートノード140-2の各々がそれを1つ以上のシーケンサ150を介してゲートウェイ120へと送信し、1つ又は複数の参加者デバイス130へと受け渡させ得る。
【0115】
1つ以上のシーケンサ150により厳密な順序付けおよび状態確定性が確保されていることから、コアコンピュートノード140-1,140-2によってそれぞれ独立して生成・送信される対応するどの応答メッセージも、実体的かつ機能的に確実に等価なものとなることができる。このように、電子取引システム100のアーキテクチャは、メッセージの冗長処理を簡単にサポートして該システムの可用性とレジリエンスを高める。このような実施形態において、ゲートウェイ120は、コアコンピュートノード140から、対応する同じ上りメッセージについての複数の対応する下りメッセージを受信し得る。これら複数の対応する応答メッセージ同士は、確実に等価なものとなることができるため、ゲートウェイ120は、同じ上りメッセージに対応する下りメッセージのうちの最初に受信したものだけを単純に処理し、後続のものについては無視し得る。一部の実施形態において、「最初」と「後続」のメッセージは、シーケンスマーク付きのメッセージの可能性があり、対応付けられたシーケンス番号によって識別が行われ得る。しかし、シーケンサ150が複数の機能的に等価なメッセージ同士で一つのシーケンス識別子しか割り当てないような他の実施形態では、図1Cとの関連で詳しく先述したように、エンティティタイプフィールド110-16の値やエンティティカウントフィールド110-17の値などのメッセージ内の別の識別情報に基づいて、メッセージ同士が機能的に等価なものであることが識別され得る。
【0116】
また、これにより、複数の機能的に等価な対応するメッセージのうちの最初にゲートウェイ120に到着したメッセージにのみ該ゲートウェイ120が処理を行うことが可能となるので、電子取引システム100の全体的なレイテンシが改善し得る。また、任意の上りメッセージに対して複数のコンピュートノード140が処理を行って、該複数のコンピュートノード140のそれぞれが等価な応答メッセージを生成し、最初に到着した応答メッセージがゲートウェイ120によって処理され得るように電子取引システム100を構成するということも簡単に行われる。このようなアーキテクチャであれば、あるコンピュートノード140が(システム障害、ノードの再構成、保守作業のいずれの原因にしろ)上りメッセージに一定期間対処しなかった場合でも、認識できる程度の影響がレイテンシに生じるようなことにならず、高可用性がもたらされる。
【0117】
システム100のこのようなポイントトゥポイントメッシュ172アーキテクチャは、メッセージの予測可能な低レイテンシと冗長処理をサポートすることに加えて、複数の冗長パスがそれ自体に組み込まれている。一目瞭然であるが、任意のゲートウェイ120と任意のコンピュートノード140との間には、複数の経路が存在している。たとえゲートウェイ120-1とコンピュートノード140-1との間のダイレクトコネクション180-1-1が利用できなくなったとしても、代わりにシーケンサ150のうちの一つをトラバースするなどといった別の経路により、それら2つの要素間でのやり取りが引き続き可能となる。つまり、より一般的に言うならば、ポイントトゥポイントメッシュ172内の任意のノードと任意のその他のノードとの間に複数の経路が存在している。
【0118】
さらに、このポイントトポイントメッシュ型のアーキテクチャは、その性質上(inherently)、金融取引システムの別の重要な目標、すなわち、公平性についてもサポートしている。ノード同士のダイレクトコネクションを備えたポイントトゥポイント型の同アーキテクチャにより、任意のゲートウェイ120と任意のコアコンピュートノード140との間の経路のレイテンシやシーケンサ150と任意のその他のノードとの間の経路のレイテンシが、どれも確実に同一または少なくとも極めて類似したものになる。これにより、2つの異なるゲートウェイ120から同時にシーケンサ150へと送出された2つの上りメッセージが、実質同時に該シーケンサ150に到達するはずである。同様に、コアコンピュートノード140から送出される下りメッセージは全ゲートウェイ120へと同時に送られ、実質同時に各ゲートウェイで受信されるはずである。ポイントトゥポイントメッシュ型のトポロジーは、どれか一つのゲートウェイ120だけを有利に扱う(favor)ことがないので、特定のゲートウェイ120に接続された参加者デバイス130が不当に有利又は不利な立場になるという可能性が最小限になる。
【0119】
また、システム100のポイントトゥポイントメッシュ型のアーキテクチャによれば、ノードの機能、すなわち、ノードを現在ゲートウェイ120として機能させるのか、コアコンピュートノード140として機能させるのか、それとも、シーケンサ150として機能させるのかを容易に再構成することが可能になる。ポイントトゥポイントメッシュ内の各ノードとそれ以外の各ノードとの間がダイレクトコネクションである実施形態では、そのような再構成の実行が極めて簡単になる。ポイントトゥポイントメッシュ172内で各ノードがその他の各ノードとダイレクトコネクションによって接続されている場合、同メッシュ内のノードの機能を変更する(例えば、ノードの機能をコアコンピュートノード140からゲートウェイ120に、あるいは、ゲートウェイ120からシーケンサ150に変更等する)のに、配線やケーブルで同メッシュ内の(物理的、仮想的なものを問わず)コネクション180の再接続を行う必要がない。このような実施形態では、ポイントトゥポイントメッシュ172内部で必要な再構成が、遠隔的に実施するコンフィギュレーション変更によって容易に達成され得る。ノードが新たにゲートウェイ120として機能するように再構成されたりゲートウェイ120としての機能から別の機能へと再構成されたりする場合には、ポイントトゥポイントメッシュ172外部である程度の補助的なネットワーク変更が必要となることがあるが、同メッシュの内部配線は何もせずにそのまま維持され得る。
【0120】
そのため、一部の実施形態では、ノードの機能の再構成が、取引時間中に実時間で(live)、さらには、動的に達成され得る。例えば、電子取引システム100の負荷の特性の変化や新たな需要により、コアコンピュートノード140-1のうちの一つを再構成によって追加のゲートウェイ120として代わりに機能させたほうが役立つ場合がある。別のコンピュートノード140への状態又は構成(設定)の何らかの再配分後、この新たなゲートウェイ120は、参加者デバイス130からの新たなコネクションの受付け開始が可能な状態となり得る。
【0121】
一部の実施形態では、ゲートウェイ120間および/またはコアコンピュートノード140間を含むシステムコンポーネント間に、より低速で潜在的に高レイテンシの共有コネクション182が設けられ得る。これらの共有コネクション182は、保守、制御操作、管理操作、かつ/あるいは、ポイントトゥポイントメッシュ172内の専用コネクション180を介して運ばれる取引活動関連のメッセージのようにまたは該メッセージとは対照的に超低レイテンシの通信を必要としないその他諸々の(similar)操作に利用され得る。取引活動に関するトラフィックを運ぶ第1ダイレクトコネクション180-1-1、第2ダイレクトコネクション180-gw1-s1、及び第3ダイレクトコネクション180-c1-s1とは対照的に、共有コネクション182-g,182-cは、取引活動以外の種類のトラフィックを運ぶ。取引活動以外のトラフィックを運ぶ共有コネクション182は、1つ以上の共有ネットワークおよび1つ以上のネットワークスイッチを介したものであり得て、これら共有ネットワーク間では、前記メッシュ内のノードが様々な分布様式を呈し得る。例えば、一部の実施形態では、全ゲートウェイ120がゲートウェイ間(gateway-wide)共有ネットワーク182-g内にあり得て、コンピュートノード140同士がそれら自身のコンピュートノード間(computer node-wide)共有ネットワーク182-c内にあり得て、シーケンサ150同士がそれら自身の別のシーケンサ間(sequencer-wide)共有ネットワーク182-s内にあり得る。一方で、他の実施形態では、レイテンシの影響を受け難い上記のような(these)操作処理(operation)の場合、前記メッシュ内の全てのノードが同じ共有ネットワーク上で通信を行い得る。
【0122】
電子取引システム100のような分散型コンピューティング環境は、各コンポーネント同士の厳密な同期を維持するため、高分解能クロックを利用する(rely on)場合がある。この目的のために、一部の実施形態において、1つ以上のノード120,140,150には、高分解能グローバルポジショニング(GPS)クロック195などのクロックへのアクセスが設けられ得る。
【0123】
図1Aを参照するが、以降の説明上の目的から、メッシュ172内で接続されたゲートウェイ120、コンピュートノード140およびシーケンサ150のことを「メッシュノード」と称する場合がある。図2に、電子取引システム100のポイントトゥポイントメッシュ172型アーキテクチャにおけるメッシュノード200の例示的な一実施形態を示す。メッシュノード200とは、例えばゲートウェイ120、シーケンサ150、コアコンピュートノード140等のことを表し得る。本例ではメッシュノード200の機能がハードウェアとソフトウェアの両方に分散したものとなっているものの、該メッシュノード200は、純粋なハードウェア実装や純粋なソフトウェア実装を含め、ハードウェアとソフトウェアとのあらゆる適切な組合せで実現されてよく、一部の実施形態では、ゲートウェイ120及び/又はコンピュートノード140及び/又はシーケンサ150のいずれか又は全てが、商用オフザシェルフのコンポーネントで実現され得る。
【0124】
図2により示される実施形態では、低レイテンシを達成するため、一部の機能が固定論理デバイス(Fixed Logic Device)230のハードウェアで実現されると共に、他の機能はデバイスドライバ220及びメッシュソフトウェアアプリケーション210のソフトウェアで実現されている。固定論理デバイス230は、特定用途向け集積回路(ASIC)や組み込みプロセッサやフィールドプログラマブルゲートアレイ(FPGA)を含む、任意の適切な様式で実現されたものであり得る。メッシュソフトウェアアプリケーション210およびデバイスドライバ220は、中央演算処理装置(CPU)などの1つ以上のプログラマブルデータプロセッサ上で実行される命令として実現され得る。メッシュノード200には、その役割に応じて、メッシュソフトウェアアプリケーション210の異なるバージョン又は構成のものがインストールされ得る。例えば、メッシュノード200がゲートウェイ120として機能するのか、シーケンサ150として機能するのか、それとも、コアコンピュートノード140として機能するのかに基づいて、メッシュソフトウェアアプリケーション210の異なるバージョン又は構成のものがインストールされ得る。
【0125】
(ファイバや銅ケーブルによるUSB、Peripheral Component Interconnect(PCI)-Express、高精細マルチメディアインターフェース(HDMI)、10ギガビットイーサネット(GigE)、25GigE、40GigE、100GigE、又はInfiniBand(IB)を含む)適切なあらゆる物理通信リンク層が採用されてもよいが、本例のメッシュノード200は、複数の低レイテンシ10ギガビットイーサネットSFP+コネクタ(インターフェース)270-1,270-2,270-3,・・・,270-n(これらをまとめたものは、コネクタ270として知られる)を具備したものとされる。コネクタ270は、例えば、前記ポイントトゥポイントメッシュ内の別のノードに対し、専用コネクション180で直接接続され得て、かつ/あるいは、共有コネクション182を介して接続され得て、かつ/あるいは、ゲートウェイ120を介して参加者デバイス130に接続され得る。本例では、これらのコネクタ270が、10GigEMACコア260-1,260-2,260-3,...,260-n(これらをまとめたものは、GigEコア260として知られる)にそれぞれ電子的に結合されている。この実施形態において、10GigEMACコア260は、レイテンシが確実に最小限になるように固定論理デバイス230により実現されたものである。他の実施形態では、10GigEMACコア260が、固定論理デバイス230外部の機能、例えば、PCI-Eネットワークインターフェースカードアダプタの機能により実現されたものであり得る。
【0126】
一部の実施形態では、固定論理デバイス230が、それ以外の構成要素も含み得る。図2の例の固定論理デバイス230は、さらに、固定論理240コンポーネントを含む。一部の実施形態において、固定論理コンポーネント240は、メッシュノード200の役割に応じて、例えば、該メッシュノード200がゲートウェイ120であるのか、シーケンサ150であるのか、それとも、コアコンピュートノード140であるのかに応じて、異なる機能を実現し得る。固定論理デバイス230には、その他にも、固定論理240によって最小限のレイテンシでアクセスされるメモリであり得る固定論理メモリ250が含まれる。固定論理デバイス230は、さらに、PCIExpress機能を実現し得るPCI-Eコア235を含む。本例では、PCI Expressが、ハードウェアとソフトウェアとの間、具体的には、固定論理デバイス240とメッシュソフトウェアアプリケーション210との間で、デバイスドライバ220によってPCIExpressバス233を介してデータを転送するための導通機構として用いられる。しかしながら、ダイレクトメモリアクセス(DMA)や共有メモリバッファやメモリマッピングを含め、ハードウェアとソフトウェアとの間のあらゆる適切なデータ転送機構が用いられてよい。
【0127】
一部の実施形態では、メッシュノード200が、それ以外のハードウェアコンポーネントも含み得る。例えば、一部の実施形態において、メッシュノード200は、電子取引システム100におけるその役割に応じて、該電子取引システム100内のノード間の高分解能クロック同期実施に用いられる高分解能クロック195(図1Aに図示;図1Aとの関連で説明済み)も含み得る。また、メッシュノード200内には、固定論理メモリ250と連動する追加メモリとして、動的ランダムアクセスメモリ(DRAM)280も含まれ得る。DRAM280は、1つ以上のランダムアクセスメモリバンクや1つ以上のハードディスクや1つ以上のソリッドステートディスクを含め、あらゆる適切な揮発性又は不揮発性メモリであってもよく、任意の適切なメモリインターフェース又はストレージインターフェースを介してアクセスされ得る。
【0128】
(確定的レイテンシ)
【0129】
前述のように、システム100のアーキテクチャは、その性質上、金融取引システムの別の重要な目標、すなわち、公平性をサポートしている。基本概念として、同システムによる遅延は、任意の一つのゲートウェイ120又はコア140のユーザだけが有利とならないため、特定のゲートウェイ120に接続された任意の参加者デバイス130が、それ以外のデバイスよりも不当に有利又は不利な立場になるという可能性が最小限になっている。この目的は、レイテンシ、すなわち、メッセージが同システム内に到着した時間からそれに対応したメッセージが同システムから離れ去ることを許可される時間までの間の時間を制御することによって達成される。
【0130】
図3Aに注目する。インバウンド要求メッセージが、ゲートウェイ120-1で受信されたとする。ゲートウェイ120-1は、該要求メッセージを処理し、1つ以上のコア140を宛先とする内部メッセージIBmsgを生成する。IBmsgは、該要求メッセージに時間ベース値(TBV)などの1つ以上のフィールドを追加したものである。同TBVは、(図1Cとの関連で説明したように)標準メッセージのうちの所与の未使用フィールドに挿入され得るか、あるいは、所与のプロプライエタリな内部プロトコルに従ってIBmsg内で符号化され得る。
【0131】
一実装では、時間ベース値TBVが、ゲートウェイ120-1内の固定論理240で求まり得る。同TBVは、前記要求メッセージがゲートウェイ120-1で受信された時間(ここでは、受入タイムスタンプ又は到着時間Tarと言う)に相当するものであってもよいが、他の実装では、システム100により返送される対応する応答メッセージの所望の退出時間(本明細書では、送出時間又は退出時間Texと言う)に相当するものとされ得る。その場合、TBVは、受信時間Tarに何らかの確定的時間遅延値(後で詳述するがTdと言う)を加えたものから求まる。そのため、典型的な一実施形態では、同TBVが、典型的に、これまでに触れた「ノード固有タイムスタンプ」フィールド110-13やシーケンス番号と同じフィールドにならない(例えば、シーケンスID110-14や参照シーケンスID110-15とは異なるフィールドになる)。
【0132】
そして、インバウンドメッセージIBmsg及びこれに対応した時間ベース値TBVが、前記メッシュ内の経路310-1に沿ってコア140へと転送されて処理される。典型的には、次に、コア140-2などの所定のコアが、IBmsgをさらに処理し、所与の応答データとTBV(あるいは、TBVに依存する別の何らかの値)とを含んだアウトバウンドメッセージOBmsgを生成する。アウトバウンドメッセージは、経路310-2などの経路に沿ってゲートウェイ120-1へと返送される。そして、ゲートウェイ120-1は、システム100からのOBmsgの退出をスケジューリングし、正確な退出時間Texで参加者130-1へと送信する。送出サービス品質(QoS)シェーパ320と称される要素が、アウトバウンドメッセージOBmsgの退出時間を制御する。
【0133】
厳密な退出時間Texは、IBmsg及びOBmsgにより保持される時間ベース値TBVと所望の確定的遅延(すなわち、レイテンシTd)とから求められる。確定的遅延Tdは、任意の特定の応答がコア140からゲートウェイ120へと返送されるのにかかる実際の時間量に必ずしも直接依存するわけではない。後で詳述するように、Tdは、任意のインバウンドメッセージIBmsgがシステム100で完全に処理されるのに必要な最大予想時間に依存し得る。
【0134】
退出時間Texはゲートウェイ120でTBVから(到着時間Tarを使って)求めることができると説明したが、該退出時間Texは、シーケンサ150などで他の方法によって決定されることも可能である。
【0135】
時間ベース値TBVは、様々な形態を取り得る。時間ベース値TBVは、単に、対応するインバウンド要求メッセージがゲートウェイ120-1で最初に受信された時間Tarであってもよい。その場合、TBVに時間遅延値(Td)が加えられることで、アウトバウンドメッセージOBmsgがゲートウェイ120-1を退出することになる退出時間Texが求まる(arrive at)。確定的遅延Tdが固定時間である構成では、この固定値が、コンフィギュレーション(構成)時にゲートウェイ120(又はシーケンサ150)に記憶又は実装され得る。
【0136】
しかし、他の実装では、IBmsg及びこれに対応するOBmsgにより保持される時間ベース値TBVが、実際の所望時間退出値Tex(つまり、到着時間Tarに対する代替案)とされてもよい。
【0137】
また、所与のインバウンドメッセージIBmsgが必ずしもコア140まで転送されるとは限らないという点に留意されたい。例えば、チェックサムが不正等の理由から有効でない場合や、IBmsgの送り宛先となるコア140をゲートウェイ120-1が決定することのできないようなその他の場面で、ゲートウェイ120内の固定論理が同IBmsgを拒否する可能性がある。そのため、アウトバウンドメッセージOBmsgは、所与のコア140からではなくゲートウェイ120-1から実際に発信される場合があるという点を理解されたい。しかしながら、そのような場面であっても、元々の要求メッセージが時間Tarで受信されてからの確定的遅延Tdに相当する退出時間Texにて、OBmsgが依然として送信されるのが望ましくあり得る。
【0138】
場合によっては、複数の受信デバイス130が、アウトバウンドメッセージOBmsgの宛先となり得る。このような場面でも、OBmsgは、ちょうど同じ退出時間Texで、複数のそのような応答消費者の全てに送信される。前述したように、前記システムのコンポーネント同士は、典型的に、高度に同期されたハードウェアコンポーネントとして実現されることから、メッセージ同士がちょうど同じ退出時間で複数の受信先に送信されることができる点は疑いない。
【0139】
図3Aを引き続き参照するが、一例において、前記インバウンド要求メッセージは、取引内の買い手である参加者デバイス130-1から発信され得る。ゲートウェイ120-2に接続された参加者デバイス130-2は、同取引内の売り手であり得て、ゲートウェイ120-3に接続された参加者デバイス130-3は、このような取引を報告する市場データフィードなどのサービスであり得る。
【0140】
これらの買い手、売り手及び市場フィードは、それぞれ異なるゲートウェイに接続されたものとして描かれているが、配置構成自体は重要ではないという点を理解されたい。これら3つの参加者が全て同じゲートウェイ120-2に接続される場合もあれば、買い手と売り手だけが同じゲートウェイ120-1に接続されて市場データフィードが別のゲートウェイ120-3上などにある場合もある。
【0141】
メッセージの種類や分散型システムのその時点のまたは現在のまたは最新の(current)負荷にもよるが、前記システムが応答メッセージを返信する(あるいは、インバウンドメッセージを処理する)のにかかる総時間(すなわち、メッセージがゲートウェイに入った時点Tarから、対応する応答メッセージの同ゲートウェイを介した送出準備が整う時点までの、システム100内に同メッセージが留まる総時間)は、例えば、400~800ナノ秒の範囲内となり得る。しかしながら、送出QOSシェーパ320は、1000ナノ秒(1マイクロ秒)の厳密な間隔で、対応したあらゆる応答を送信するように構成され得る。つまり、アウトバウンドOBmsgメッセージは、ゲートウェイノード120-1に到達して取引参加者130-1への送出準備が整えられたのち、送出QOSシェーパ320-1に入る。一実装において、OBmsgは、その元々の要求メッセージがゲートウェイ120-1で受信されてからの経過時間がちょうど1マイクロ秒になるまで、送出シェーパ320内に数百ナノ秒間留まり得る。このように、設定レイテンシ間隔が(どのようなインバウンドメッセージであっても分散型システム全体が同間隔内に余裕をもって(comfortably)確実に処理できるような)十分に高い値に設定されている限り、OBmsgなどの応答メッセージは、インバウンドメッセージIBmsgの受信からの厳密な確定的時間間隔で確実な返信が常に行われることになる。
【0142】
また、QOSレベル(すなわち、確定的レイテンシ間隔Td)は、個々のコネクション毎に、ゲートウェイ毎に、又はシステム全体につき、調整され得る。一部の実施形態において、QOSレベルは、参加者毎に又はコネクション毎に、任意で、様々な加入利用者課金レベルに対応して設定され得る。別々の参加者130が別々のQOSレベルに応じて支払うことを可能にすると、公平性の目標に逆行する(mitigates against)ことになるが、このような構成は、配信(distributed)サービスを追加の収入源としているプロバイダにとって望ましくあり得る。
【0143】
また、システム全体QOSレベルは、手動で、あるいは、動的に設定され得る。例えば、システム100は、通常(typical)レイテンシ間隔Tdを同システムが確保(satisfy)できなくなる恐れがある例外的事象が発生した場合に、同システム100全体として確定的レイテンシ間隔Tdを動的に一時的に増加させるようにしてもよい。このような場合(this)としては、分散型システム内の1つ又は複数のコンポーネントやノードの障害などといった内部事象が挙げられ、同システムは、問題のあるコンポーネントをホットスワップで交換したり新たなコンピュートノードをオンラインに投入したりできるまで、性能を一時的に低下せざるを得なくなる。例外的事象は、分散型システム上の活動や分散型システムに対する需要の急増を引き起こすニュースイベントなどのように、分散型システム外部を起源とする場合もある。例外的事象が解消すると、レイテンシ間隔Tdは通常レベルにまで調整によって動的に下げられ得る。
【0144】
一部の実施形態では、単一のクライアント130(市場参加者)からのメッセージにより、受付確認応答やその他の種類の応答メッセージを、複数の参加者130へと且つ/或いは複数の参加者コネクションを介して、生成・送信する必要性が生じる場合がある。複数のメッセージの内容が複数の参加者間で実質同一になる場合もあれば、任意のインバウンドメッセージIBmsgにより、各参加者で固有又は一部の参加者ごとに固有となり得る内容の、関連し合うが別物である複数の応答メッセージOBmsgsが生成される場合もある。
【0145】
一例として、多くのプロトコルでは、取引のマッチが生じると、マッチの各当事者ごとに別々の約定メッセージが生成され得る。各約定メッセージには、クライアントが注文識別のために振り当てる「注文トークン」などの、その当事者固有の情報が含まれる。両者の(two)約定メッセージは、一意的な市場割当て「約定ID」や「マッチ番号」など、一部の情報が共通しているという範囲内で関連し合う。両者の(two)約定メッセージは同じコンピュートコア140によって生成され得て、それらの送出時間Texは、両者の(two)メッセージが同時に送信されるように同じであるのが望ましい。
【0146】
つまり、一部の実施形態では、複数の参加者のコネクションが同じゲートウェイ上にあるのか別のゲートウェイ上にあるのかに関係なく、2つ以上の関連する応答メッセージが、同じ厳密な確定的時間間隔で複数の参加者130へと同時に送信される。関連する各応答メッセージには、同応答の基になった(triggered)上りメッセージIBmsgに対応する元々のタイムスタンプ値(あるいは、所望の送出時間、または対応する受入時間に関係するその他の何らかの時間ベース値TBV)であるTBVが含まれているはずである。このため、各ゲートウェイの内部クロックが同期していることを前提とするが、各ゲートウェイのQOSシェーパ320により、関連する応答のそれぞれを同じ正確な時間間隔で確実に送信することができ、当該関連する応答の受信に関わる全クライアント130同士の公平性が確保される。
【0147】
一部の実施形態において、コア140からの応答は、1つ以上のゲートウェイ120に到着する単一のアウトバウンドメッセージOBmsgであり得る。しかしながら、その際、1つ以上のゲートウェイ120は、2つ以上の関連するが同一でないメッセージを生成することになる。該関連するメッセージ同士は、宛先アドレスが異なり、且つ/或いは、参加者130に対応したプロトコルの結果としての各々の(their)符号化情報(encoding)内における、注文トークンなどのその他の何らかのクライアント固有識別子などが異なる。
【0148】
コア140は、証券の買い注文と同証券の対応する売り注文とのマッチを生成し得る、金融取引システムのマッチングエンジンを提供するものであり得る。これらの2つの注文が2つの別々の当事者によって別々の時間に行われるという典型的な場合でも、マッチが成立する(successful match)と、同マッチ内の両方の相手側当事者(例えば、買い手と売り手)に対し、受付確認や約定メッセージの送信が行われる。相手側当事者のそれぞれに向かう約定メッセージOBmsgにはその特定のクライアントの取引内容(trade)固有の情報が含まれているが、このような約定メッセージが両(two)当事者に丁度同時に送信されることで、公平性が確保される。本例では、マッチに関わった一方の注文(例えば、両注文のうち、インバウンド要求メッセージとして最後に到着した注文)の上り方向タイムスタンプに基づいて、結果として得られる関連し合う両応答のレイテンシ間隔が設定され得る。
【0149】
金融システムのマッチングエンジンについての関連実装の別の例では、クライアント装置130が、典型的に、前記マッチングエンジンから送信される市場データメッセージのストリームに加入しているものであり得て、加入利用者には、第三者同士の二者間の最新の約定などといった、自身が関与当事者ではない活動を含む、市場全体にわたるリアルタイム活動が知らされる。一部の実施形態において、このような市場データメッセージは、送出QOSシェーパ320が処理するメッセージ内のタイムスタンプ値に基づいて、全加入利用者に同時に送出される。一部の実施形態では、加入利用者への市場データメッセージの送信時間が、加入利用者に送信される同市場データメッセージ内に反映されている活動の直接の当事者である市場参加者に対して送信される受付確認メッセージや約定メッセージの送信時間と一致するように設定される。二者の市場参加者(買い手と売り手)間のマッチ例に戻ると、一対の約定メッセージOBmsgが両相手側当事者に送信されることになるが、このマッチ活動は、市場データ加入利用者にも報告され得る。
【0150】
一部の実施形態において、システム100は、相手側当事者同士への両受付確認メッセージが同時に送信されるだけでなく、市場データ加入利用者にも、該受付確認メッセージが、この遂行を反映した市場データメッセージとして同時に送信されるように確実に時間設定されていることで、どの市場参加者も抜け駆けで有用な金融情報にアクセスしないことを確実とする。
【0151】
より一般的に言えば、システム100は、アウトバウンドメッセージがいつ送信されるのかについての正確な制御を行う。場合によっては、全員に対する公平性を重要視して、複数の受信先への応答メッセージが同時に放出され得る。一方、他の実施形態において、前記システムは、取引の当事者である参加者130-1,130-2に対して、市場フィード130-3よりも少し早く応答を放出するように構成され得る。あるいは、場合によっては(perhaps)、市場フィード130-3が取引の参加者130-1,130-2よりも早く応答を受け取るものとされる。さらなる他の構成では、システム100が、「流動性資産追加者」である参加者130には早く知らせるという報酬を与え、「流動性除去者」は後回しにして後で知らせるようにする。
【0152】
図3Bは、1つ以上のゲートウェイ120の内部に設けられ得る送出QOSシェーパ320の一例である。各OBmsgは、それに対応する時間ベース値TBVと共に受信される。そして、TBVを所望のレイテンシTdと共に用いることで、メッセージがゲートウェイ120外へ送出される退出時間Texが求められる。詳細には、TBVが対応するインバウンドメッセージIBmsgの受信時間であるとき、対応する確定的遅延TdをTBVに加えることで、Texが求められ(arrive at)得る。
【0153】
送出QOSシェーパ320は、一連のインデックス化記憶場所380-1,380-2,...,380-n(すなわち、「バケット」)へと組織化された「パケットスケジューラ」として実現され得て、場所380には、離散的な高精度送出タイミング間隔Tex1,Tex2,...,Texnがそれぞれ対応付けられている。特定のバケット380に置かれた各メッセージは、該バケットに対応付けられた正確な時間間隔で放出される。各バケットには、ゼロ又は1つ以上のアウトバウンドメッセージOBmsg一式が含まれ得る。
【0154】
先述したように、代替的な一実装では、ゲートウェイ内の各到着メッセージに対応したTBVとしてインバウンドタイムスタンプを割り当てるのに代えて、TBVが、パケットスケジューラ320の所望のアウトバウンドインデックス化場所(すなわち、バケット)として振り当てられ得る。よって、所望の退出時間がTBVとして利用される場合のTBVは、退出時間Texと直接相関していると見なすことができる。
【0155】
メッセージスケジューラ320は、巻回するリングデータ構造とされ得るが、それ以外の実装も可能である。例えば、メッセージスケジューラ320は、ポインタを使った一連の連結リストとして実現されてもよく、例えば、各退出時間Texごとに一つの連結リストが設けられる。なお、到着時間にしろ退出時間にしろ「時間」値は、絶対時間、相対時間のいずれを基準としたものとされ得る。
【0156】
図4は、市場参加者130からゲートウェイ120にインバウンドメッセージIBmsgが到着し、1000時間単位(ここで、時間単位はナノ秒であり得る)の確定的レイテンシ(例えば、Td)で返信がアウトバウンドメッセージOBmsgとして送信されるという例である。
【0157】
初期状態401では、要求メッセージがゲートウェイ120に到着し、これにタイムスタンプTBVが付加されて、内部メッセージD1(例えば、IBmsg)が生成される。この状態401は、時刻T17356に発生し得る。次に、時刻T17358にて、タイムスタンプTBVを含むメッセージD1がゲートウェイ120によって所与のコア140に送信される。その後の、時刻T17918などの状態403にて、同じタイムスタンプTBVを含む、コア140から返された応答メッセージ(R1)が、ゲートウェイ120で受信される。次に、(時刻T17922に発生し得る)状態404にて、前記タイムスタンプを含む内部応答メッセージR1がパケットスケジューラ320に出力され(fed)、適切な下り方向タイムスロット(本例では、到着時刻T17356+1000、すなわち、時刻T18356)が決まる。最後に、状態405にて、時刻T183568丁度に達すると、前記パケットスケジューラが、前記ゲートウェイからの応答メッセージ(R1)の、システムレベルのアウトバウンドメッセージOBmsgとしての退出を許可する。
【0158】
図4の例では、インバウンドメッセージIBmsgとそのTBVがゲートウェイノード120から所与のコア140に直接(例えば、図1Bのアクティベーションリンク180-1-1を介して)転送される様子が描かれているが、他の配置構成も可能であるという点を理解されたい。別の例として(alternatively)、TBVを含むIBmsgは、例えば、シーケンサ150を介して所与のコア140へと(例えば、図1Bの順序付けパス117を介して)移動する場合もあれば、両方の経路に沿って(例えば、ゲートウェイノード120からコア140に直接移動すると共にゲートウェイノード120からシーケンサ150経由でコア140へと)移動する場合もある。TBVを含むIBmsgがシーケンサ150を介して移動する実施形態では、マークが付いていないメッセージとシーケンスマーク付きのメッセージの双方にTBVが含まれ得る。このような実施形態では、マークの付いていないメッセージに含まれるTBVが、対応するシーケンスマーク付きメッセージに含まれるTBVと同じ値とされ得る。そのため、前述したように、TBVは、メッセージ内の、該メッセージのシーケンス識別子とは異なる(例えば、シーケンスID110-14や参照シーケンスID110-15と異なる)フィールドとされる。
【0159】
図5に、アウトバウンドメッセージOBmsgが、何らかのインバウンド「要求」メッセージに対する「応答」ではなくシステム100内部のイベントから生じたものである例示的な一実施形態を示す。本例のOBmsgは、対応するどのインバウンドメッセージに対しても「非同期」なものである。このような非同期メッセージにも、予定送出時間Texがマークされて処理されるのが望ましい。
【0160】
取引システムでの非同期メッセージの一例は、タイマによってトリガされた注文取消であり得る。前記コア内のマッチングエンジンは、動きのない注文に関連付けられた「有効期限」が切れると、そのような取消メッセージを生成し得る。該取消メッセージは、複数のクライアント/参加者(例えば、注文の開始者と市場データフィードの両方)に対して配信されるものであるため、全ゲートウェイから全宛先参加者に向けて同時に退出する必要がある。
【0161】
この場合、退出時間Texは、該メッセージの生成元であるコア140によって決定され得る。他の実装において、退出時間Texは、OBmsgが通過するシーケンサ150のうちの一つによって決定され得る。
【0162】
つまり、複数の参加者に送信される必要があるアウトバウンドメッセージは、該アウトバウンドメッセージが要求応答の一部として生成されたものであるのか、それとも、前記メッシュ内部生成の非同期メッセージなのかにかかわらず、確定的レイテンシを確保する一環として共通の退出時間Texで送信される。
【0163】
また、確定的レイテンシを有するという概念には、単なる固定時間以上のものも含まれるという点を理解されたい。つまり、他の実装では、確定的レイテンシが、公平性の基準に準ずる範囲に一様に分布した複数の固定時間値一式を用いることからなり得る。具体的な時間値の系列は、同範囲に統計的に一様かつランダムに分布したものとされ得る。
【0164】
すなわち、システム100は、一様長のレイテンシ値範囲内でレイテンシ値Tdを順序ランダム化させるこという、確定的レイテンシの変化もサポートしたものとなる。このような実施形態では、これまでの説明と大体同じ方法でインバウンドメッセージIBmsgにタイムスタンプが対応付けられる一方で、送出QOSシェーパにより、境界範囲内で順序ランダム化されたレイテンシ値に依存するタイムスロットにメッセージが割り当てられるという違いが設けられている。
【0165】
このような実施形態の送出QOSシェーパ320は、トランプカード一式からカードを配るのと似たやり方で下り方向タイムスロットを割り当てるものであると見なされることができ、前記範囲内に一度あるレイテンシ値が割り当てられてしまえば、該範囲内のそれ以外の全ての値の割当てが済んで「カード一式」が再びシャッフルされない限りは、その特定のレイテンシ値の再割当てが行われない。一実施形態では、QOSシェーパ320が順序ランダム化されたレイテンシ値の割当てを担うが、他の実施形態では、ゲートウェイ120、シーケンサ150などの別のコンポーネントが、インバウンドメッセージの受信時にこれらの値の割当てを行うものとされ得る。
【0166】
可変であるが確定的でもある確定的遅延Tdが何らかの所定のパターンに従う一実装では、各インバウンドメッセージIBmsgに対するTdが必ずしも同じになるとは限らない。そのため、各メッセージに割り当てられたTd値は、それに対応した受入時間Tarと共に、各メッセージの「時間ベース値」TBVとして運ばれるのが望ましくあり得る。これにより、ゲートウェイ120は、対応する1つ以上のアウトバウンドメッセージOBmsgの送出時間にて、正確な退出時間Texを求めることができる。しかしながら、他の実施形態では、可変であるが確定的でもある遅延Tdがちょうど受入時間の時点で到着時間Tarに加えられてもよく、これにより、TBVは単一の値Texとなる。すなわち、可変する遅延の場合、退出時間TexをTBVに用いることにより、各メッセージに遅延値Tdと受入時間Tarの両方を保持させる必要がなくなる。
【0167】
図6Aに、前記システムが、1000~5000時間単位の確定的範囲から選び出された2000時間単位の確定的レイテンシ(Td)を特定のメッセージに割り当てるという一例を示す。図4の例と同様に、インバウンドメッセージがゲートウェイ120-1に到着する時刻T17356にて、状態602となる。このメッセージには、TBV=17356のタイムスタンプが押される。状態603にて、該タイムスタンプを含むインバウンドメッセージが、ゲートウェイによってコアに送信される(時刻T17358)。状態604(時刻T17918)にて、同じタイムスタンプを含む、コア140から返された応答メッセージが、ゲートウェイで受信される。状態605(時刻T17922)にて、このタイムスタンプを含んだ応答メッセージが、ゲートウェイ120-1内のパケットスケジューラのキューに入れられる。そして、この特定のメッセージには、1000~5000時間単位の範囲内の一連の値から2000時間単位のレイテンシが割り当てられていることで、状態606(時刻T19356)にて、ゲートウェイから1つ以上の応答メッセージが送出される。メッセージに割り当てられるその特定のレイテンシ値(すなわち、前記パケットスケジューラ内での場所)は、該メッセージの受信時に前記ゲートウェイにより決定され得るか、あるいは、別の箇所で説明したような別の方法で決定され得る。
【0168】
図6Bは同様の例であるが、ここでは、同メッセージに割り当てられる確定的遅延が、(1000~5000単位の同じ範囲から選び出された)3500時間単位となるように前記システムによって決定されている。確定的遅延は異なるものの、それ以外の処理は図6Aと同様である。開始状態612として、同メッセージは、時刻T17356にてゲートウェイに到着すると共にタイムスタンプが押される。状態614(時刻T17358)にて、同メッセージは、該ゲートウェイを出てコアに転送される。状態616(時刻T17918)にて、該コアから、同タイムスタンプを含む応答メッセージが該ゲートウェイに返送される。次に、状態618(時刻T17922)にて、同タイムスタンプを含む応答メッセージがパケットスケジューラのキューに入れられ、状態620(時刻T20856)になるまでは、この応答メッセージが該ゲートウェイから退出しない。
【0169】
図7は、順序ランダム化済みの一連の値のようなパターンが確定的レイテンシに割り当てられる様子の一例である。このときの境界範囲は、1000~5000時間単位であり、スロット間のインクリメントは、500時間単位とされる。前記QOSシェーパにより、2000、3500、2500、1500、4000、5000、4500、3000および1000の、一様に分散した9種類のTex値の系列が生成されたとする。最初の数値系列が使い切られると、前記QOSシェーパは、この処理を繰り返し、好ましくは、9種類の値による別の一様に分散した所与のランダムなパターンを生成する。
【0170】
しかしながら、複数のトランプ一式に似た概念のものや、さらには、標準的な疑似乱数発生器を使うことを含め、別のランダム化方式によって確定的遅延の系列を求める(arrive at)ことも可能である。
【0171】
メッセージへのレイテンシ値範囲の割当ては、システム全体につき、マッチングエンジン毎に、アカウント/参加者毎に、又はフロー/コネクション毎に行われ得る。場合によっては、レイテンシの分布が、完全なランダムではない、あるいは、レイテンシ範囲全体にわたって完全に一様な間隔ではないのが望ましい場合がある。例えば、連続した低レイテンシ値の割当数および/または連続した高レイテンシ値の割当数を制限したほうが望ましい場合がある。つまり、QOSシェーパ320内でのレイテンシ割当て手法は、参加者への応答に対して連続で割り当てられる5つのレイテンシごとに、そのうちの2つ以上のレイテンシを高レイテンシ範囲内に、残りのうちの2つのレイテンシを低レイテンシ範囲内に確実に位置させるなどして、比較的少数のレイテンシの中でもレイテンシを一様に分布させるようにするものとなり得る。アプリケーションにもよるが、極めて混雑する期間では、連続した同様の(すなわち、全部高いか又は全部低い)レイテンシ数を制限することが極めて望ましくあり得る。例えば、市場が開く前後の時間と市場が閉まる前後の時間は、金利調整発表のように金融的影響を及ぼし得るニュース報道後の時間と同じく、活動レベルが高くなる傾向がある。このような際には、レイテンシの分布を通常時よりも厳格に制御する必要があり得る。
【0172】
数値範囲の選択では、少なくともゲートウェイ120やコア140を含む、前記システムのコンポーネントについて、その性質上予想される遅延が考慮されなければならない。例えば、メッセージの種類や分散型システムのその時点の(current)負荷にもよるが、メッセージを処理するのにかかる時間は400~800ナノ秒の範囲内となる一方で、前記送出QOSシェーパは、1000~5000ナノ秒の範囲内でランダム化された間隔により、任意の対応する応答を送信するように構成され得る。つまり、応答メッセージは、ゲートウェイノードに到達して取引参加者への送出準備が整えられたのちに前記送出QOSシェーパに入り、元々のメッセージが該ゲートウェイノードへの進入時にタイムスタンプを押されてからの経過時間が前記ランダム化された間隔にちょうど(precise)達するまでの期間のあいだそこに留まる。ランダム化されつつも一様に分布しているジッターをレイテンシに追加するこという構成は、設定したレイテンシ境界内でランダム化された任意のジッターが各取引メッセージに同等の確率で割り当てられることになるから、公平性が確保される。また、ジッターの追加により、前記システムは、完全に一貫したレイテンシの予測可能性を悪用しようとする参加者の行動を抑制する。
【0173】
また、固定レイテンシについて既述した概念の多くも、本実施形態に適用されることが可能であるという点を理解されたい。例えば、一つの上り方向参加者メッセージによってトリガされた全ての関連する応答メッセージは、同時に送信したほうが望ましくあり得る。また、QOSレベル一式を、参加者/コネクション毎に、あるいは、システム全体につき調整できるようにしたほうが望ましい場合もある。
【0174】
図8は、Tdの適切な固定値を決める際に考慮され得る検討事項を一部図示したものであり、Tdは、コア140を介した遅延の最悪の場合のもの(Tcore)とゲートウェイ120-コア140間の(インバウンメッセージ、アウトバウンドメッセージ双方の)経路の遅延の最悪の場合のもの(Tpath)との合算よりも大きくなるよう選択されるのが望ましい。
【0175】
具体的に述べると、同期メッセージ(すなわち、アウトバウンドメッセージがインバウンドメッセージへの応答である場合)についてのTdを決めるための検討事項の一部には、次のようなものが含まれ得る:
- ゲートウェイ受入時間
- ゲートウェイからコアへの伝送時間
- コア内にいる時間
- コア-ゲートウェイ間の伝送時間、または
- ゲートウェイ送出時間。
【0176】
同様に、非同期メッセージ(インバウンドメッセージへの特定の応答でないメッセージ)についてのTdを決めるための検討事項には、次のようなものが含まれ得る:
- コア内にいる時間
- コア-ゲートウェイ間の伝送時間、または
- ゲートウェイ送出時間。
【0177】
例示的な一実施形態において、コア140は、大部分がハードウェア(例えば、固定論理のFPGAベース)で実現されていると予想されることから、タスク実行のための「コア内にいる時間」は比較的一定の、予測可能なものとなる。しかしながら、コア140で実行される一部のタスクは、他のものよりも時間がかかる可能性があるという点を理解されたい。例えば、コア140による応答は、注文追加への応答よりも取消要求への応答のほうが遥かに高速なものになり得る。異なる追加注文要求間でも、頻繁に取引される証券(したがって、取引を約定するために必要なデータが該証券専用のコア140のローカルキャッシュに保持される)の注文であるのか、それとも、頻繁に取引されない証券(このとき、注文を約定するために必要なデータがコア140のローカルキャッシュ外の場所から取り出される)の注文であるのかによって、必要な処理時間が異なり得る。したがって、送信予定のメッセージの種類もTdの選択にあたって考慮され得る。
【0178】
経路関連の遅延Tpathも、全てのゲートウェイ120-コア140同士が全部接続されているメッシュを用いたアーキテクチャでは、前述のように、比較的小さく予測可能な値の前後に固まるものと予想される。
【0179】
そのため、参加者デバイス130を介する市場からTcoreやTpathなどの変動性を「分からなくする」ように時間Tdを選択するという目標から、Tdは、そのようなシステム内部遅延の合算よりも大きくなるように選択されるのが望ましい。最悪の場合のTd一式がシステム遅延の想定(possible)最大値以上である限り、システム100は、全ての参加者デバイス130に対して確定的レイテンシを確保することができる。
【0180】
Tdは、前記システムの設計時に決定されてもよい。しかしながら、別のアプローチでのTdは、インバウンドメッセージとこれに対応するアウトバウンドメッセージとの間の時間差を監視して、該Tdが最大の時間差(Δ)よりも確実に常に大きくなるように動的に調整され得る。この態様では、システム100が、特殊なモード内に置かれて一連のテスト要求メッセージ(様々な追加注文、取消など)を受けると共に、参加者コネクション、ゲートウェイ及びコア一式のそれぞれについて応答時間が記録される(noted)ことで、前記システムのレイテンシ時間の最大値が決定され得る。
【0181】
図9は、図8と同様の図であるが、確定的レイテンシがある数値範囲に一様に分布している状況を描いている。本例では、複数の遅延時間候補(possible)Td1,Td2,Td3,...Tdnが存在する。これらの選択時間はいずれも、予想される最悪の場合の内部遅延、例えば、TcoreとTpathの合計よりも大きいのが好ましい。
【0182】
前述したように、システム100の一部の実装は、別々の金融取引プロトコルを利用する参加者同士をサポートし得る。すなわち、このようなメッセージの処理は、その性質上、選択されるプロトコルによって速くなったり遅くなったりする。例えば、バイナリプロトコルを用いて符号化されたインバウンド要求メッセージは、その性質上、テキストベースプロトコルを用いた要求よりも、コア140で高速に処理される。
【0183】
このようなシステムで、全参加者に対して確定的かつ公平的な動作を提供するには、利用するプロトコルにかかわらず、レイテンシが同じになるのが望ましい。したがって、Tdは、そのようなばらつきにも応えるように選択されるのが望ましい。
【0184】
図10の例では、ゲートウェイ120-1が、テキストベースの金融取引プロトコルを利用した第1参加者130-1(例えば、買い手)からIBmsgを受信する。異なる参加者130-2(例えば、売り手)は、ゲートウェイ120-2へIBmsgを送信する際に、バイナリ形式の金融取引プロトコルを利用し得る。前記システムが第1参加者のIBmsgを処理して対応する応答(OBmsg)を返送するのに必要な時間(P1)は、同システムが第2参加者のためにIBmsgを処理して応答を返送するのに必要な時間(P2)よりも長くなり得る。そのため、システム100は、前述のように、最も遅い金融取引プロトコルに必要な処理時間に応じた(take into account)十分長い時間Tdで設定され得る。これにより、どのプロトコルに準じてやり取りされたメッセージであっても応答時間が確実に同じとなる。これに代えて、同システムは、別々のプロトコルを別々のやり方で(differently)処理し、メッセージのプロトコルに応じて確定的時間のブースト又は確定的時間のペナルティをメッセージに与えることで特定のプロトコルの利用を奨励又は抑止するように構成されてもよい。
【0185】
つまり、利用する金融取引プロトコルなどのさらなるパラメータ(例えば、P1、P2等)に依存する値で(恐らく、コネクション毎に)Tdを調節することにより、返送されるアウトバウンドメッセージOBmsgは、受信時間(例えば、タイムスタンプ、TBV等)とプロトコル依存の値の両方に依存する時間にて、システム100を退出し終えるようにスケジューリングされる。この場合の(Such)IBmsgは、メッセージ及びTBVと一緒に運ばれるプロトコル依存の時間値(P)と共にコアへと転送される。これにより、ゲートウェイは、メッセージのプロトコルを踏まえて、アウトバウンドメッセージOBmsgが退出する時間を決定することができる、このようにして、ゲートウェイ120-1,120-2は、市場参加者130-1,130-2が利用するメッセージプロトコルに応じて(account for)、別々の送出時間を該市場参加者130-1,130-2に対して計算することが可能となる。
【0186】
しかしながら、P1、P2などのパラメータは、利用中のプロトコル以外の検討事項に基づくものであってもよい。例えば、該パラメータは、「第1級」サービスの料金を支払う参加者同士の遅延は同様となるが、それよりも支払う料金が低い「第2級」ユーザの遅延ほどにはならないなどの、サービス階級の差別化を図るように用いられてもよい。つまり、システム100が「確定的レイテンシを用いて参加者達に対して公平なシステムとなる」という概念は、様々な意味を持ち得る。「全ての参加者を全く同じように扱う」ことを意味する場合もあれば、ある種の取引行動やプロトコルを奨励するという意味で用いられる場合もあれば、セキュリティ上の理由で用いられる場合もある。
【0187】
また、確定的レイテンシは、最新の(current)システム条件に基づいて一時的に調節されてもよい。例えば、1つ又は複数のコンポーネントの障害を理由に、あるいは、前記システム内の活動の異例なバーストの結果として、確定的レイテンシが増やされてもよい。
【0188】
(その他のユースケース)
【0189】
前述のアーキテクチャは、電子取引システム以外の用途に用いられてもよい。例えば、証券取引注文の処理以外の用途として、ネットワークを流れるデータストリームの監視や、パケットのキャプチャや、パケットの生データの復号化や、パケット内容のリアルタイム分析や、応答の提供に利用され得ることが可能である。
【0190】
(実施形態の総括)
【0191】
当業者であれば、前述の方法やシステムについて、様々な実装が可能であるということが分かるであろう。
【0192】
例えば、アプローチの一つは、2つ以上の参加者デバイスからインバウンドメッセージを受信するように接続された複数のゲートウェイを備えたものであり得る。1つ以上の該ゲートウェイは、それぞれ、所定の前記インバウンドメッセージについて、時間ベース値(TBV)を求めるようにさらに構成されている。該ゲートウェイは、前記所定のインバウンドメッセージを、そのTBVと共に、1つ以上のコンピュートノードに転送し、その後、該1つ以上のコンピュートノードから、前記TBVから導出可能な情報を含む応答メッセージを受信する。次に、該1つ以上のゲートウェイは、1つ以上の前記参加者デバイスに対し、応答メッセージを、前記TBVから導出可能な前記情報と確定的レイテンシの両方に依存する確定的な送出時間で送信されるアウトバウンドメッセージとして送信する。
【0193】
一実施形態の方法は、確定的レイテンシで応答メッセージを送信する。複数の参加者デバイスから、複数の上りメッセージが、1つ以上のゲートウェイで受信される。そして、所定のゲートウェイが、前記複数の上りメッセージのうちの所定の上りメッセージについて、対応する時間ベース値を求める。該所定の上りメッセージは、電子取引機能に関するものである。次に、前記所定のゲートウェイは、該所定の上りメッセージと、前記対応する時間ベース値から導出可能な情報とを、シーケンサノードに送信する。その後、前記シーケンサノードは、複数のコンピュートエンジンのうちの少なくとも所定のコンピュートエンジンに対し、シーケンスマーク付きメッセージと、前記対応する時間ベース値から導出可能な前記情報とを送信する。前記複数のコンピュートエンジンのうちの前記所定のコンピュートエンジンは、前記シーケンスマーク付きメッセージと、前記対応する時間ベース値から導出可能な前記情報とを受信し、所定のコンピュート応答メッセージを決定する。該所定のコンピュート応答メッセージは、前記シーケンスマーク付きメッセージが基となったものであると共に、電子取引マッチング機能を完了するようにさらに構成されている。その後、前記所定のコンピュートエンジンは、少なくとも前記所定のゲートウェイに対し、前記所定のコンピュート応答メッセージと、前記対応する時間ベース値から導出可能な前記情報とを返送する。そして、前記所定のゲートウェイは、前記複数のコンピュートエンジンのうちの前記所定のコンピュートエンジンからの前記所定のコンピュート応答メッセージと、前記対応する時間ベース値から導出可能な前記情報とを受信し、前記複数の参加者デバイスのうちの1つ以上の参加者デバイスに対し、前記所定のコンピュート応答メッセージを、前記所定の上りメッセージについての前記対応する時間ベース値から導出可能な前記情報に少なくとも依存する確定的な送出時間で送信する。
【0194】
一部の実施形態において、前記複数のゲートウェイのうちの前記所定のゲートウェイは、別の参加者デバイスからの別の上りメッセージを受信し得る。同実施形態において、前記所定のゲートウェイは、さらに、前記複数のコンピュートエンジンのうちの1つ以上のコンピュートエンジンに対し、前記別の上りメッセージと別の時間ベース値から導出可能な情報とを含む別の転送メッセージを転送する。前記複数のゲートウェイのうちの前記所定のゲートウェイは、前記複数のコンピュートエンジンのうちの前記1つ以上のコンピュートエンジンから、前記別の時間ベース値から導出可能な前記情報を含む別のコンピュート応答メッセージを受信する。その後、前記複数のゲートウェイのうちの前記所定のゲートウェイは、前記別のコンピュート応答メッセージの送信を、前記別の時間ベース値から導出可能な前記情報に少なくとも依存する別の確定的な送出時間に達するまで遅延させる。そして、前記所定のゲートウェイは、前記所定のコンピュート応答メッセージと前記別のコンピュート応答メッセージとがそれぞれ前記確定的レイテンシだけ遅延されるようにして、該別のコンピュート応答メッセージを前記別の確定的送出時間で前記別の参加者デバイスに送信する。
【0195】
前記時間ベース値は、前記所定の上りメッセージの受信時間、および前記所定のコンピュート応答メッセージの所望の送出時間の少なくとも一方、に関する時間に依存するものであり得る。
【0196】
前記確定的レイテンシは、前記複数のコンピュートエンジンのうちの前記所定のコンピュートエンジンが前記コンピュート応答メッセージを返送する最大時間に依存するものであり得る。前記確定的レイテンシは、可変であるが確定的でもあるパターンに従ったものとされ得る。前記確定的レイテンシは、所定の範囲に一様に分布した一連のレイテンシから選択され得る。また、前記確定的レイテンシは、ゲートウェイ毎に、コネクション毎に、あるいは、システム全体につき、設定され得る。
【0197】
一部の実施形態では、前記所定のゲートウェイから前記コンピュートエンジンへの転送が、前記所定のゲートウェイから前記複数のコンピュートエンジンへの1つ以上の専用のダイレクトコネクションを介して行われ得る。
【0198】
所与の前記コンピュートエンジンからの非同期メッセージが、少なくとも前記所定のゲートウェイで受信され得て、その後、2つ以上の参加者デバイスに対してアウトバウンドメッセージとして同時に送信され得る。
【0199】
前記所定の上りメッセージを転送する処理(step)と前記所定のコンピュート応答メッセージを受信する処理(step)とに伴い得る経過時間(transit time)が求められ得て、前記確定的な送出時間は、該経過時間にも依存する。
【0200】
前記所定のコンピュート応答メッセージの、前記所定のゲートウェイからの送信は、さらに、該所定のコンピュート応答メッセージを、1つ以上の別の参加者デバイスに対して前記確定的な送出時間で送信することを含み得る。
【0201】
前記確定的な送出時間は、複数の確定的な送出時間のうちの一つであり得る。その場合、前記所定のコンピュート応答メッセージは、前記複数の確定的な送出時間のうちの一つにそれぞれ対応付けられた一連のインデックス化場所のうちの一つに記憶され得る。
【0202】
前記対応する時間ベース値から導出可能な前記情報が、前記所定の上りメッセージ内の未使用のフィールドに挿入されてから、該所定の上りメッセージが、前記複数のコンピュートエンジンに転送され得る。
【0203】
前記対応する時間ベース値は、前記所定の上りメッセージ内のシステム内部プロトコルフィールドの一部であり得る。
【0204】
一部の実施形態では、前記確定的レイテンシが、動的に変化し得る。
【0205】
前記複数のゲートウェイのうちの2つ以上のゲートウェイが、それぞれ、前記所定のコンピュートエンジンから前記所定のコンピュート応答メッセージを受信し得る。
【0206】
一部の実施形態において、前記所定のゲートウェイは、前記複数のコンピュートエンジンに対し、前記対応する時間ベース値から導出可能な前記情報を含む前記所定の上りメッセージを転送し得る。そして、前記複数のコンピュートエンジンのうちの前記所定のコンピュートエンジンは、前記対応する時間ベース値から導出可能な前記情報を含む前記所定の上りメッセージを受信する。ここで、前記複数のコンピュートエンジンのうちの前記所定のコンピュートエンジンによる前記所定のコンピュート応答メッセージの前記決定は、さらに、前記所定の上りメッセージおよび前記シーケンスマーク付きメッセージのうちの少なくとも一方に基づいて行われ得る。また、本実施形態においても、前記所定の上りメッセージの転送および前記所定のコンピュート応答メッセージの受信は、前記複数のゲートウェイの各々と前記複数のコンピュートエンジンの各々との間に設けられた複数のダイレクトコネクションによって行われ得る。
【0207】
任意で、前記複数のゲートウェイは、少なくとも前記複数のコンピュートエンジンのうちの前記所定のコンピュートエンジンから非同期メッセージを受信し、その後、2つ以上の前記参加者デバイスに対して該非同期メッセージをアウトバウンドメッセージとして同時に送信するようにさらに構成され得る。
【0208】
前記所定のコンピュート応答メッセージは、2つの参加者デバイスと各自対応付けられた2つのマッチ当事者間での取引マッチイベントに関するものであり得る。本実施形態において、前記所定のゲートウェイは、前記所定のコンピュート応答メッセージを、前記2つのマッチ当事者と対応する前記2つの参加者デバイスに同時に送信し得る。
【0209】
前記所定のコンピュート応答メッセージは、市場データストリームの加入利用者と対応付けられた第3のデバイスに対する市場データイベントメッセージとして送信され得る。
【0210】
一部の実施形態において、前記確定的な送出時間は、メッセージ経路遅延およびコンピュートエンジン遅延のうちの少なくとも一方に依存し得る。
【0211】
他の実施形態は、複数のコンピュートエンジンと、1つ以上のゲートウェイと、シーケンサノードと、を含むシステムを備え得る。前記1つ以上のゲートウェイは、(a)複数の参加者デバイスから複数の上りメッセージを受信し、(b)前記複数の上りメッセージのうちの所定の上りメッセージついて、対応する時間ベース値を求めて、(c)前記対応する時間ベース値から導出可能な情報と共に、前記所定の上りメッセージを、前記複数のコンピュートエンジンに転送し、(d)前記所定の上りメッセージを、前記シーケンサノードに送信するように構成されている。前記シーケンサノードは、(e)前記所定の上りメッセージを受信し、(f)シーケンスマーク付きメッセージを所定の前記コンピュートエンジンに送信するように構成され得る。前記所定のコンピュートエンジンは、(g)少なくとも前記所定のゲートウェイから、前記所定の上りメッセージと前記時間ベース値から導出可能な前記情報とを受信し、(h)前記シーケンサノードから前記シーケンスマーク付きメッセージを受信し、(i)電子取引マッチング機能を完了するように構成された所定のコンピュート応答メッセージを、前記所定の上りメッセージおよび前記シーケンスマーク付きメッセージのうちの少なくとも一方に基づき決定し、(j)前記1つ以上のゲートウェイに対し、前記所定のコンピュート応答メッセージと前記対応する時間ベース値から導出可能な前記情報とを返送するように構成され得る。少なくとも前記所定のゲートウェイは、(k)前記所定のコンピュートエンジンから、前記所定のコンピュート応答メッセージと前記時間ベース値から導出可能な前記情報とを受信し、(l)前記複数の参加者デバイスのうちの1つ以上の参加者デバイスに対し、前記所定のコンピュート応答メッセージを、前記所定の上りメッセージについての前記対応する時間ベース値から導出可能な前記情報に少なくとも依存する確定的な送出時間で送信するようにさらに構成されている。
【0212】
このようなシステムでは、前記確定的な送出時間が、可変であるが確定的でもあるパターンに従ったものとされ得る。
【0213】
このようなシステムでは、前記所定のゲートウェイが、前記複数のゲートウェイの各々と前記複数のコンピュートエンジンの各々との間に設けられた複数のダイレクトコネクションによって、前記上りメッセージを転送したり前記所定のコンピュート応答メッセージを受信したりするようにさらに構成され得る。
【0214】
また、このようなシステムは、前記所定のコンピュート応答メッセージが、2つの参加者デバイスと各自対応付けられた2つのマッチ当事者間での取引マッチイベントに関するものとなるように構成され得て、前記所定のゲートウェイは、前記所定のコンピュート応答メッセージを、前記2つのマッチ当事者と対応する前記2つの参加者デバイスに同時に送信するようにさらに構成され得る。
【0215】
また、確定的レイテンシで応答メッセージを送信する方法として、下記の構成を備えるものがあり得る:
【0216】
複数の参加者デバイスからの複数の上りメッセージを、複数のゲートウェイで受信する過程;
【0217】
所定の前記ゲートウェイにより、前記複数の上りメッセージのうちの所定の上りメッセージについての、対応する時間ベース値を求める過程であって、
【0218】
前記所定の上りメッセージが、電子取引マッチング機能に関するものである、過程;
【0219】
前記所定のゲートウェイにより、前記所定の上りメッセージを、前記対応する時間ベース値から導出可能な情報と共に、複数のコンピュートエンジンに転送する過程;
【0220】
前記所定のゲートウェイにより、前記所定の上りメッセージをシーケンサノードに送信する過程;
【0221】
前記シーケンサノードにより、1つ以上の前記コンピュートエンジンに対し、シーケンスマーク付きメッセージを送信する過程;
【0222】
前記複数のコンピュートエンジンにて、少なくとも前記所定のゲートウェイから、前記所定の上りメッセージと前記対応する時間ベース値から導出可能な前記情報とを受信する過程;
【0223】
前記複数のコンピュートエンジンのうちの所定のコンピュートエンジンにより、前記シーケンスマーク付きメッセージを受信する過程;
【0224】
前記複数のコンピュートエンジンのうちの前記所定のコンピュートエンジンにより、電子取引マッチング機能を完了するように構成された所定のコンピュート応答メッセージを、前記所定の上りメッセージおよび前記シーケンスマーク付きメッセージのうちの少なくとも一方に基づいて決定する過程;
【0225】
前記複数のコンピュートエンジンのうちの少なくとも前記所定のコンピュートエンジンにより、少なくとも前記所定のゲートウェイに対し、前記所定のコンピュート応答メッセージと前記対応する時間ベース値から導出可能な前記情報とを返送する過程;
【0226】
少なくとも前記所定のゲートウェイにて、少なくとも前記複数のコンピュートエンジンのうちの前記所定のコンピュートエンジンからの前記所定のコンピュート応答メッセージと、前記対応する時間ベース値から導出可能な前記情報とを受信する過程;
【0227】
少なくとも前記所定のゲートウェイにより、前記確定的レイテンシと前記対応する時間ベース値から導出可能な前記情報とに少なくとも依存する確定的な送出時間に達するまで、前記所定のコンピュート応答を遅延させる過程;ならびに
【0228】
前記少なくとも所定のゲートウェイにより、前記複数の参加者デバイスのうちの1つ以上の参加者デバイスに対し、前記所定のコンピュート応答メッセージを前記確定的な送出時間で送信する過程。
【0229】
また、システムとして、下記の構成のものがあり得る:
【0230】
複数のコンピュートエンジン;
【0231】
複数の参加者デバイスから複数の上りメッセージを受信するように構成された複数のゲートウェイ;を備え、
【0232】
所定の前記ゲートウェイは、
【0233】
前記複数の上りメッセージのうちの、電子取引マッチング機能に関するものである所定の上りメッセージについて、対応する時間ベース値を求めて、
【0234】
前記複数のコンピュートエンジンに対し、前記所定の上りメッセージを、前記対応する時間ベース値から導出可能な情報と共に転送し、
【0235】
前記所定の上りメッセージをシーケンサノードに転送するようにさらに構成されており、
【0236】
前記シーケンサノードは、
【0237】
シーケンスマーク付きメッセージを1つ以上の前記コンピュートエンジンに送信するようにさらに構成されており、
【0238】
前記複数のコンピュートエンジンのうちの所定のコンピュートエンジンは、
【0239】
少なくとも前記所定のゲートウェイから、前記所定の上りメッセージと、前記対応する時間ベース値から導出可能な前記情報とを受信し、
【0240】
前記シーケンサノードから前記シーケンスマーク付きメッセージを受信し、
【0241】
電子取引マッチング機能を完了するように構成された所定のコンピュート応答メッセージを、前記所定の上りメッセージおよび前記シーケンスマーク付きメッセージのうちの少なくとも一方に基づいて決定し、
【0242】
前記所定のコンピュート応答メッセージと前記対応する時間ベース値から導出可能な前記情報とを、少なくとも前記所定のゲートウェイに返送するように構成されており、
【0243】
前記所定のゲートウェイは、
【0244】
少なくとも前記所定のコンピュートエンジンから、前記所定のコンピュート応答メッセージと前記対応する時間ベース値から導出可能な前記情報とを受信し、
【0245】
確定的レイテンシと前記所定の上りメッセージについての前記対応する時間ベース値から導出可能な前記情報とに少なくとも依存する確定的な送出時間に達するまで、前記所定のコンピュート応答メッセージを遅延させて、
【0246】
前記複数の参加者デバイスのうちの1つ以上の参加者デバイスに対し、前記所定のコンピュート応答メッセージを、前記確定的な送出時間で送信するようにさらに構成されている。
【0247】
(その他の実装/実現の選択肢)
【0248】
これまでに述べた例示的な実施形態は、数多くの様々な方法で実現され得るという点を理解されたい。場面にもよるが、各種「データプロセッサ」が、それぞれ、中央処理装置(central processor)と、メモリと、ディスク又はその他の大容量記憶装置と、1つ以上の通信インターフェースと、1つ以上の入出力(I/O)装置と、その他の周辺装置とを具備した、物理的又は仮想的な汎用コンピュータによって実現され得る。例えば、前記処理装置にソフトウェア命令を読み込んで同命令の実行によって前述の機能を実行させる等すれば、前記汎用コンピュータがプロセッサへと変容して前述の処理を実行する。
【0249】
当該技術分野で既知のとおり、そのようなコンピュータは、コンピュータ又は処理システムの構成要素間でのデータ伝送に利用される一連のハードウェアラインであるシステムバスを備え得る。1つ以上の該バスは、本質的に、コンピュータシステムの相異なる構成要素(例えば、中央演算処理装置、ディスク、各種メモリ、入出力ポート、ネットワークポート等の1つ以上)同士を接続して当該構成要素間での情報の伝送を可能にする1つ以上の共有の導管である。該システムバスには、1つ以上の中央演算処理装置が取り付けられてコンピュータ命令が実行される。典型的に、該システムバスには、さらに、入出力装置インターフェースが取り付けられて前記ディスク、メモリおよび各種入出力装置の接続を行う。1つ以上のネットワークインターフェースにより、ネットワークに取り付けられた別の様々な装置へのコネクションが可能となる。1つ以上のメモリにより、実施形態を実現するのに用いられるコンピュータソフトウェア命令やデータの揮発性及び/又は不揮発性の記憶が行われる。ディスクやその他の大容量記憶装置により、例えば、本明細書に記載した各種手順を実現するのに用いられるコンピュータソフトウェア命令やデータの不揮発性の記憶が行われる。
【0250】
よって、実施形態は、典型的に、ハードウェア、カスタム設計された半導体論理、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ファームウェア、ソフトウェア、またはこれらの任意の組合せで実現され得る。
【0251】
特定の実施形態において、本明細書に記載した手順、装置及び方法は、コンピュータプログラムプロダクトである。該コンピュータプログラムプロダクトとしては、前記システムのソフトウェア命令の少なくとも一部を提供するコンピュータ読取り可能媒体(例えば、1つ以上のDVD-ROM、CD-ROM、ディスケット、テープなどといった、取外し可能な記憶媒体等)が含まれる。該コンピュータプログラムプロダクトは、当該技術分野で周知のとおり、任意の適切なソフトウェアインストール方法によってインストールされることが可能である。また、他の実施形態では、前記ソフトウェア命令の少なくとも一部が、ケーブル及び/又は通信及び/又は無線接続を介してダウンロードされ得る。
【0252】
また、実施形態は、1つ以上の手順で読み出されて実行され得る、非過渡的なマシン読取り可能媒体に記憶された命令として実現されている場合もある。非過渡的なマシン読取り可能媒体は、マシン(例えば、コンピューティングデバイス等)によって読取り可能な形式で情報を記憶したり送信したりするための任意の仕組みを具備したものであり得る。例えば、非過渡的なマシン読取り可能媒体としては、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体からなるストレージ、光学式の記憶媒体、フラッシュメモリ装置等が含まれ得る。
【0253】
また、本明細書では、ファームウェアやソフトウェアやルーチンや命令が、特定の処理及び/又は機能を実行するかの如く説明されているかもしれない。しかしながら、本明細書に含まれるこのような説明はあくまでも便宜上のものに過ぎず、実際には、コンピューティングデバイス、プロセッサ、コントローラなどの装置が同ファームウェア、ソフトウェア、ルーチン、命令などを実行することによってそのような処理が生じるという点を理解されたい。
【0254】
また、ブロック図やシステム図は、構成要素の数が増えても減ってもよいし、配置構成が異なってもよいし、別の表現にもなり得るという点を理解されたい。ただし、実装によってはブロック図やネットワーク図が決まっており、実施形態の実施を表すブロック図やネットワーク図の数も所定数になり得るという点を理解されたい。
【0255】
つまり、様々なコンピュータアーキテクチャ及び/又は物理コンピュータ及び/又は仮想コンピュータ及び/又はクラウドコンピュータ及び/又はこれらの所与の組合せにより、さらなる実施形態が実現され得ることもある。したがって、本明細書に記載したコンピュータシステムは、あくまでも例示目的に意図されたものあり、実施形態を限定するものではない。
【0256】
以上の説明では、例示的な実施形態を具体的に図示説明したが、当業者であれば、添付の特許請求の範囲に包含された本特許の法的範囲を逸脱しない範疇で、形態や細部に様々な変更が施されてもよいことが分かるであろう。
図1A
図1B
図1C
図2
図3A
図3B
図4
図5
図6A
図6B
図7
図8
図9
図10
【国際調査報告】