[go: up one dir, main page]

JP7807092B2 - Electronic trading system and method based on point-to-point mesh architecture - Google Patents

Electronic trading system and method based on point-to-point mesh architecture

Info

Publication number
JP7807092B2
JP7807092B2 JP2023507533A JP2023507533A JP7807092B2 JP 7807092 B2 JP7807092 B2 JP 7807092B2 JP 2023507533 A JP2023507533 A JP 2023507533A JP 2023507533 A JP2023507533 A JP 2023507533A JP 7807092 B2 JP7807092 B2 JP 7807092B2
Authority
JP
Japan
Prior art keywords
message
sequencer
gateway
compute node
order
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.)
Active
Application number
JP2023507533A
Other languages
Japanese (ja)
Other versions
JP2023539430A (en
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.)
Hyannis Port Research Inc
Original Assignee
Hyannis Port Research Inc
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
Priority claimed from US16/988,510 external-priority patent/US11315183B2/en
Priority claimed from US16/988,491 external-priority patent/US11328357B2/en
Application filed by Hyannis Port Research Inc filed Critical Hyannis Port Research Inc
Publication of JP2023539430A publication Critical patent/JP2023539430A/en
Application granted granted Critical
Publication of JP7807092B2 publication Critical patent/JP7807092B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Cash Registers Or Receiving Machines (AREA)

Description

(関連出願の相互参照)
本出願は、2020年8月7日出願の米国特許出願第16/988510号の一部継続出願及び2020年8月7日出願の米国特許出願第16/988491号の一部継続出願である。上記出願の教示全体が、参照によりここに取り込まれる。
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation-in-part of U.S. Patent Application No. 16/988,510, filed August 7, 2020, and a continuation-in-part of U.S. Patent Application No. 16/988,491, filed August 7, 2020, the entire teachings of which are incorporated herein by reference.

現在の金融商品取引システムによると、トレーダーは通信ネットワークを介して電子的に注文を提出し、確認、マーケットデータ及びその他の情報を受信することができる。この「電子取引システム」ともいわれるものによって実現される「電子的な」市場は、これまでのトレーダー又はその代理の者の全員が指定位置、すなわち、取引ピットに物理的に立って口頭及び視覚的な/手振りでのコミュニケーションを介して相互に取引するピットベースの「オープンアウトクライ」取引システムを大きく代替し、ほとんどの金融商品を取引する支配的な手段となっている。 Current financial trading systems allow traders to submit orders and receive confirmations, market data, and other information electronically over a communications network. The "electronic" marketplace enabled by what are sometimes called "electronic trading systems" has largely replaced the traditional pit-based "open outcry" trading system, in which traders or their representatives all physically reside in designated locations, i.e., trading pits, and trade with one another through verbal and visual/hand gesture communication, and has become the dominant means of trading most financial instruments.

電子取引システムにおいて株式及び/又は他の金融商品を取引する際に、電子取引システムは、一般的に取引注文、すなわち、売値注文と相応の買値注文とをマッチングさせて取引を生み出す。取引に関連する条件によっては、売値注文と買値注文とをマッチングさせる処理は、複雑化する場合がある。 When trading stocks and/or other financial instruments on an electronic trading system, the electronic trading system typically creates trades by matching trade orders, i.e., ask orders with corresponding bid orders. Depending on the conditions associated with the trade, the process of matching ask orders with bid orders can be complex.

電子取引システムの一例は、通常は中央サーバ内に常駐する中央マッチングエンジン及び複数の分散サーバ又はゲートウェイを備えるコンピュータ化された取引所である。このようなコンピュータ化された取引所では、通常の処理は、以下のようになり得る。注文入力メッセージ、例えば、売値注文及び/又は買値注文がクライアント又は参加者デバイス、例えば、トレーダー端末から、コンピュータ化された取引所に送信され、コンピュータ化された取引所は注文入力メッセージを処理する。この注文入力メッセージは、中央サーバにおいてゲートウェイを介して受信される。例えば中央サーバにおけるコンピュータ化された取引所における処理は、とりわけ、受信した注文入力メッセージに基づいて注文のマッチングを実行することを含み得る。 One example of an electronic trading system is a computerized exchange that includes a central matching engine, typically residing in a central server, and multiple distributed servers or gateways. In such a computerized exchange, a typical process may be as follows: an order entry message, e.g., an ask order and/or a bid order, is sent from a client or participant device, e.g., a trader terminal, to the computerized exchange, which processes the order entry message. The order entry message is received at the central server via a gateway. Processing in the computerized exchange, e.g., at the central server, may include, among other things, performing order matching based on the received order entry message.

そして、中央サーバによって生成された注文処理承認メッセージが、通常は、トランザクションを転送するゲートウェイを介して参加者デバイスに返送される。ゲートウェイは、注文処理承認メッセージが参加者デバイスに返送される前に、追加の処理を行う場合もある。中央サーバは、注文処理承認メッセージに関する情報を、受信したものと同じ形式又はその他の形式のいずれかで、注文処理承認メッセージの処理を実行する1以上の他のゲートウェイに拡散して、マーケットデータストリームを介してマーケットデータ出力を生成してもよい。マーケットデータ出力は、通常は、参加者デバイス又はマーケットデータストリームの他の加入者に様々な通信機構を通じて転送され、ゲートウェイにおける追加の処理を必要とする。 The order processing acknowledgement message generated by the central server is then typically transmitted back to the participant device via a gateway that forwards the transaction. The gateway may perform additional processing before transmitting the order processing acknowledgement message back to the participant device. The central server may also disseminate information about the order processing acknowledgement message, either in the same format as received or in another format, to one or more other gateways that perform processing of the order processing acknowledgement message to generate market data output via the market data stream. The market data output is typically forwarded to participant devices or other subscribers to the market data stream via various communication mechanisms and requires additional processing at the gateway.

例示実施形態によると、電子取引システムは、ゲートウェイ、電子取引マッチング機能を実行するように構成されたコアコンピュートノード(ここでは互換可能にコアコンピュートエンジン又はコンピュートエンジンともいう)及びシーケンサを備える。ゲートウェイとコアコンピュートノードとは、第1の直接接続を介して結合される。ゲートウェイとシーケンサとは、第2の直接接続を介して結合される。シーケンサとコアコンピュートノードとは、第3の直接接続を介して結合される。第1、第2及び第3の直接接続は、それぞれの非共有帯域幅を有する。ゲートウェイは、金融商品を買付又は売却する指値を伴う電子取引要求を表すメッセージをコアコンピュートノードに第1の直接接続を介して送信するように構成される。これに対して、メッセージは、コアコンピュートノードによって受信される。ゲートウェイはさらに、メッセージをシーケンサに第2の直接接続を介して送信するように構成され、シーケンサは、これに対して順序マーク付きメッセージをコアコンピュートノードに第3の直接接続を介して送信するように構成される。シーケンサは、ゲートウェイとコアコンピュートノードの間に第2及び第3の直接接続を介して挿入される。シーケンサによって送信される順序マーク付きメッセージは、ゲートウェイによって送信されたメッセージの順序付けされたバージョンである。これに対して、順序マーク付きメッセージは、コアコンピュートノードによって受信される。コアコンピュートノードは、電子取引システムにおいてコアコンピュートノードによって受信される他のメッセージの順序マーク付きバージョンの間で順序マーク付きメッセージの相対順位付け(すなわち、順序)を決定するように構成される。コアコンピュートノードはさらに、決定された相対順位付けに応じて電子取引要求について電子取引マッチング機能を完了し、金融商品について指値を相手方指値とマッチングさせ、金融商品の電子取引を可能とするように構成される。 According to an exemplary embodiment, an electronic trading system includes a gateway, a core compute node (interchangeably referred to herein as a core compute engine or a compute engine) configured to perform electronic trade matching functions, and a sequencer. The gateway and the core compute node are coupled via a first direct connection. The gateway and the sequencer are coupled via a second direct connection. The sequencer and the core compute node are coupled via a third direct connection. The first, second, and third direct connections have respective unshared bandwidths. The gateway is configured to send a message representing an electronic trade request with a limit price to buy or sell a financial instrument to the core compute node via the first direct connection. In response, the message is received by the core compute node. The gateway is further configured to send the message to the sequencer via the second direct connection, and the sequencer is configured to in turn send an order-marked message to the core compute node via the third direct connection. The sequencer is interposed between the gateway and the core compute node via the second and third direct connections. The order-marked messages sent by the sequencer are ordered versions of the messages sent by the gateway. In turn, the order-marked messages are received by a core compute node. The core compute node is configured to determine a relative ranking (i.e., order) of the order-marked messages among order-marked versions of other messages received by the core compute node in the electronic trading system. The core compute node is further configured to complete an electronic trade matching function for the electronic trade request responsive to the determined relative ranking, matching bids with counterparty bids for the financial instrument, and enabling electronic trading of the financial instrument.

メッセージ及び順序マーク付きメッセージは、同一のユーザデータを含み得る。ユーザデータは、電子取引要求に対応付けられる。 The message and the sequence-marked message may contain the same user data. The user data is associated with the electronic transaction request.

メッセージは、参加者デバイスからゲートウェイによって受信された着信メッセージの受信に応じてゲートウェイによって送信されたゲートウェイメッセージであってもよい。シーケンサはさらに、これに対して、順序マーク付きメッセージをゲートウェイに第2の直接接続を介して送信するように構成される。これに対して、順序マーク付きメッセージは、ゲートウェイによって受信される。順序マーク付きメッセージは、第1の順序マーク付きメッセージである。コアコンピュートノードはさらに、ゲートウェイメッセージの受信に応じて、コアコンピュートノードメッセージをゲートウェイに第1の直接接続を介して送信するように構成される。コアコンピュートノードはさらに、コアコンピュートノードメッセージをシーケンサに第3の直接接続を介して送信するように構成され、シーケンサはさらに、これに対して、第2の順序マーク付きメッセージをゲートウェイに第2の直接接続を介して送信するように構成される。第2の順序マーク付きメッセージは、コアコンピュートノードメッセージの順序付けされたバージョンである。ゲートウェイはさらに、コアコンピュートノードからゲートウェイに送信された第2の順序マーク付きメッセージ及び他のメッセージの順序マーク付きバージョンの相対順位付けを決定するように構成される。ゲートウェイはさらに、発信メッセージを参加者デバイスに送信するように構成される。発信メッセージは、決定された相対順位付けに応じて送信される。シーケンサはさらに、これに対して、第2の順序マーク付きメッセージをコアコンピュートノードに第3の直接接続を介して送信するように構成される。 The message may be a gateway message sent by the gateway in response to receiving an incoming message received by the gateway from a participant device. The sequencer is further configured to, in response, send an order-marked message to the gateway via the second direct connection. In response, the order-marked message is received by the gateway. The order-marked message is a first order-marked message. The core compute node is further configured to, in response to receiving the gateway message, send a core compute node message to the gateway via the first direct connection. The core compute node is further configured to send the core compute node message to the sequencer via the third direct connection, and the sequencer is further configured to, in response, send a second order-marked message to the gateway via the second direct connection. The second order-marked message is an ordered version of the core compute node message. The gateway is further configured to determine a relative ordering of the second order-marked message and the order-marked versions of other messages sent from the core compute node to the gateway. The gateway is further configured to send an outgoing message to the participant device. The outgoing message is transmitted according to the determined relative ranking. The sequencer is further configured to, in response, transmit the second order-marked message to the core compute node via the third direct connection.

ゲートウェイは、複数のゲートウェイのうちの所与のゲートウェイであり得る。コアコンピュートノードは、複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり得る。複数のゲートウェイの各ゲートウェイは、複数のコアコンピュートノードの各コアコンピュートノードにそれぞれの第1の直接接続を介して結合され得る。シーケンサは、複数のゲートウェイの各ゲートウェイにそれぞれの第2の直接接続を介して結合され、複数のコアコンピュートノードの各コアコンピュートノードにそれぞれの第3の直接接続を介して結合され得る。複数のゲートウェイ、複数のコアコンピュートノード、シーケンサ及びそれぞれの直接接続は、ポイントツーポイントメッシュシステムの少なくとも一部分を構成し得る。 The gateway may be a given gateway of the plurality of gateways. The core compute node may be a given core compute node of the plurality of core compute nodes. Each gateway of the plurality of gateways may be coupled to a respective core compute node of the plurality of core compute nodes via a respective first direct connection. The sequencer may be coupled to each gateway of the plurality of gateways via a respective second direct connection and to each core compute node of the plurality of core compute nodes via a respective third direct connection. The plurality of gateways, the plurality of core compute nodes, the sequencer, and their respective direct connections may constitute at least a portion of a point-to-point mesh system.

ポイントツーポイントメッシュシステム内では、複数のゲートウェイの各ゲートウェイは、そこから送信されるそれぞれのコンピュートノード宛てメッセージを複数のコアコンピュートノードの全てのコンピュートノード及びシーケンサに送信するように構成され得る。コンピュートノードに宛てられるメッセージをここでは互換可能に「コンピュートノード宛て」メッセージという場合があることが理解されるべきである。また、ゲートウェイに宛てられるメッセージをここでは互換可能に「ゲートウェイ宛て」メッセージという場合がある。複数のコアコンピュートノードの各コアコンピュートノードは、そこから送信されたそれぞれのゲートウェイ宛てメッセージを複数のゲートウェイの全てのゲートウェイ及びシーケンサに送信するように構成され得る。シーケンサはさらに、それぞれのコンピュートノード宛てメッセージ又はそれぞれのゲートウェイ宛てメッセージの受信に応じて、それぞれの順序マーク付きメッセージを複数のゲートウェイ及び複数のコアコンピュートノードに送信するように構成され得る。 In a point-to-point mesh system, each gateway of the multiple gateways may be configured to transmit its respective compute node-destined message to all compute nodes and sequencers of the multiple core compute nodes. It should be understood that a message destined for a compute node may be interchangeably referred to herein as a "compute node-destined" message, and a message destined for a gateway may be interchangeably referred to herein as a "gateway-destined" message. Each core compute node of the multiple core compute nodes may be configured to transmit its respective gateway-destined message to all gateways and sequencers of the multiple gateways. The sequencers may be further configured to transmit their respective sequence-marked messages to the multiple gateways and multiple core compute nodes in response to receiving their respective compute node-destined messages or their respective gateway-destined messages.

シーケンサは、ポイントツーポイントメッシュシステムにおける複数のシーケンサのうちの所与のシーケンサであり得る。複数のゲートウェイの各ゲートウェイは、複数のシーケンサの各シーケンサにそれぞれの第2の直接接続を介して結合され得る。複数のコアコンピュートノードの各コアコンピュートノードは、複数のシーケンサの各シーケンサにそれぞれの第3の直接接続を介して結合され得る。所与のシーケンサは、ポイントツーポイントメッシュシステムにサービス提供中の現在アクティブなシーケンサであり得る。複数のシーケンサの他の各シーケンサは、現在アクティブなシーケンサを引き継ぐために待機しているスタンバイシーケンサであり得る。複数のシーケンサの各シーケンサは、複数のシーケンサの他の各シーケンサにそれぞれの第4の直接接続を介して結合され得る。複数のゲートウェイの各ゲートウェイはさらに、それぞれのコンピュートノード宛てメッセージを複数のシーケンサのうちの所与のシーケンサに送信するように構成され得る。複数のコアコンピュートノードの各コアコンピュートノードはさらに、それぞれのゲートウェイ宛てメッセージを複数のシーケンサのうちの所与のシーケンサに送信するように構成され得る。所与のシーケンサにはさらに、順序マーク付きメッセージを複数のシーケンサの他の各シーケンサに各それぞれの第4の直接接続を介して送信して、現在アクティブなシーケンサが故障した場合に、スタンバイシーケンサが現在アクティブなシーケンサを引き継ぐことを可能とするように構成され得る。 The sequencer may be a given sequencer among a plurality of sequencers in the point-to-point mesh system. Each gateway of the plurality of gateways may be coupled to a respective sequencer of the plurality of sequencers via a respective second direct connection. Each core compute node of the plurality of core compute nodes may be coupled to a respective sequencer of the plurality of sequencers via a respective third direct connection. The given sequencer may be a currently active sequencer servicing the point-to-point mesh system. Each other sequencer of the plurality of sequencers may be a standby sequencer waiting to take over for the currently active sequencer. Each sequencer of the plurality of sequencers may be coupled to each other sequencer of the plurality of sequencers via a respective fourth direct connection. Each gateway of the plurality of gateways may be further configured to send messages destined for the respective compute node to a given sequencer among the plurality of sequencers. Each core compute node of the plurality of core compute nodes may be further configured to send messages destined for the respective gateway to a given sequencer among the plurality of sequencers. A given sequencer may be further configured to send an order-marked message to each other sequencer of the plurality of sequencers via each respective fourth direct connection to enable a standby sequencer to take over for the currently active sequencer if the currently active sequencer fails.

所与のゲートウェイによって送信されるそれぞれのコンピュートノード宛てメッセージは、複数のコアコンピュートノードによって受信されるメッセージと同じであり得る。複数のコアコンピュートノードは、同じメッセージの受信に応じて、応答メッセージを生成するように構成され得る。応答メッセージは、複数のコアコンピュートノードの中から所与のゲートウェイにおいて受信され得る。所与のゲートウェイはさらに、同じメッセージの受信に応じて生成された応答メッセージのうちの所与の応答メッセージに基づいて行動をとるように構成され得る。所与の応答メッセージは、同じメッセージの受信に応じて生成された他の応答メッセージに相対して最初に所与のゲートウェイに到着し得る。ゲートウェイはさらに、所与の応答メッセージの後に到着する他の応答メッセージを無視するように構成され得る。 A message destined for each compute node sent by a given gateway may be the same as a message received by multiple core compute nodes. The multiple core compute nodes may be configured to generate response messages in response to receiving the same message. The response messages may be received at a given gateway from among the multiple core compute nodes. The given gateway may be further configured to take action based on a given response message from among the response messages generated in response to receiving the same message. The given response message may arrive at the given gateway first relative to other response messages generated in response to receiving the same message. The gateway may be further configured to ignore other response messages that arrive after the given response message.

同じメッセージを表す複数のコンピュートノード宛てメッセージは、所与のコンピュートノードにおいて複数のゲートウェイの中から受信され得る。所与のコンピュートノードはさらに、複数のコンピュートノード宛てメッセージのうちの所与のコンピュートノード宛てメッセージに基づいて行動をとるように構成され得る。所与のコンピュートノード宛てメッセージは、同じメッセージを表す複数のコンピュートノードメッセージのうちの他のコンピュートノード宛てメッセージに相対して最初に所与のコンピュートノードに到着し得る。所与のコアコンピュートノードはさらに、所与のコンピュートノード宛てメッセージ後に到着する他のコンピュートノード宛てメッセージを無視するように構成され得る。 Multiple compute node-destined messages representing the same message may be received from multiple gateways at a given compute node. The given compute node may be further configured to take action based on a message destined for the given compute node among the multiple compute node-destined messages. A message destined for the given compute node may arrive at the given compute node first relative to messages destined for other compute nodes among the multiple compute node messages representing the same message. A given core compute node may be further configured to ignore messages destined for other compute nodes that arrive after the message destined for the given compute node.

電子取引システムは、コアコンピュートノードによってアクセス可能な注文控え帳(order book)をさらに備え得る。コアコンピュートノードはさらに、電子取引マッチング機能を用いて金融商品に関する取引注文をマッチングさせるように構成され得る。コアコンピュートノードはさらに、注文控え帳における金融商品の残持ち高を維持するように構成され得る。金融商品の金額不一致が、電子取引マッチング機能を実行する結果としてもたらされる場合がある。残持ち高は、金融商品の金額不一致を含み得る。残持ち高は、数量よりも多くの情報を伝達可能であることが理解されるべきである。例えば、持ち高は、強気及び弱気(サイド)であってもよい。例示実施形態によると、残持ち高は、価格及び数量の双方を伝達する。 The electronic trading system may further include an order book accessible by the core compute node. The core compute node may be further configured to match trading orders for financial instruments using an electronic trade matching function. The core compute node may be further configured to maintain open positions for financial instruments in the order book. A price discrepancy for a financial instrument may result from executing the electronic trade matching function. The open positions may include price discrepancies for financial instruments. It should be understood that open positions can convey more information than quantity. For example, positions may be bullish and bearish (sides). According to an example embodiment, the open positions convey both price and quantity.

電子取引システムは、クロックをさらに備え得る。ゲートウェイ、コアコンピュートノード及びシーケンサは、クロックに基づいて同期され得る。 The electronic trading system may further include a clock. The gateway, core compute nodes, and sequencer may be synchronized based on the clock.

ゲートウェイはさらに、少なくとも1つの参加者デバイスにサービスを提供し、ゲートウェイにおける着信メッセージの受信に応じてメッセージをシーケンサ及びコアコンピュートノードに送信するように構成され得る。着信メッセージは、少なくとも1つの参加者デバイスによって発送され得る。シーケンサはさらに、固有順序識別子を用いてメッセージをマーク付けすることによって、又は受信したメッセージの表示を作成し、固有順序識別子を用いて表示をマーク付けし、マーク付けされた表示を送信することによって、順序マーク付きメッセージを生成するように構成され得る。マーク付けされる表示は、順序マーク付きメッセージであり得る。 The gateway may be further configured to serve at least one participant device and to send messages to the sequencer and the core compute node in response to receiving an incoming message at the gateway. The incoming message may be dispatched by at least one participant device. The sequencer may be further configured to generate an order-marked message by marking the message with a unique order identifier or by creating a representation of the received message, marking the representation with the unique order identifier, and transmitting the marked representation. The marked representation may be an order-marked message.

電子取引システムは、第1の直接接続、第2の直接接続及び第3の直接接続又はこれらの一部の組について、少なくとも1つのそれぞれの冗長直接接続をさらに備えていてもよい。 The electronic trading system may further include at least one redundant direct connection for each of the first direct connection, the second direct connection, and the third direct connection, or some set thereof.

ゲートウェイは、共有ゲートウェイネットワークを介して相互に通信可能に結合された複数のゲートウェイのうちの所与のゲートウェイであり得る。コアコンピュートノードは、共有コアコンピュートノードネットワークを介して相互に通信可能に結合された複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり得る。シーケンサは、共有シーケンサネットワークを介して又はそれぞれの第4の直接接続を介して相互に通信可能に結合された複数のシーケンサのうちの所与のシーケンサであり得る。 The gateway may be a given gateway among a plurality of gateways communicatively coupled to each other via a shared gateway network. The core compute node may be a given core compute node among a plurality of core compute nodes communicatively coupled to each other via a shared core compute node network. The sequencer may be a given sequencer among a plurality of sequencers communicatively coupled to each other via a shared sequencer network or via respective fourth direct connections.

電子取引システムは、システム状態ログをさらに備えていてもよい。所与のシーケンサは、システム状態ログを複数のシーケンサのうちの少なくとも1つの他のシーケンサに共有シーケンサネットワークを介して送信し、又はシステム状態ログをデータストアに記憶するように構成され得る。データストアは、共有シーケンサネットワークを介して複数のシーケンサにアクセス可能であり得る。 The electronic trading system may further include a system status log. A given sequencer may be configured to transmit the system status log to at least one other sequencer in the plurality of sequencers via a shared sequencer network, or to store the system status log in a data store. The data store may be accessible to the plurality of sequencers via the shared sequencer network.

電子取引システムはアクティブな電子取引システムであってもよく、複数のシーケンサの少なくとも1つのシーケンサはディザスタリカバリサイトに通信可能に結合されていてもよい。ディザスタリカバリサイトは、スタンバイ電子取引システムを含み得る。スタンバイ電子取引システムは、アクティブな電子取引システムの複製であってもよく、アクティブな電子取引システムが故障した場合に電子取引が継続可能となるように構成され得る。 The electronic trading system may be an active electronic trading system, and at least one sequencer of the plurality of sequencers may be communicatively coupled to a disaster recovery site. The disaster recovery site may include a standby electronic trading system. The standby electronic trading system may be a replica of the active electronic trading system and may be configured to allow electronic trading to continue if the active electronic trading system fails.

ゲートウェイ、コアコンピュートノード、シーケンサ並びに第1、第2及び第3の直接接続は、第1のポイントツーポイントメッシュシステムを構成し得る。電子取引システムは、プロキシノードに通信可能に結合された第1の電子取引システムであり得る。プロキシノードはさらに、少なくとも1つの参加者デバイス及び第2の電子取引システムに通信可能に結合されてもよい。第2の電子取引システムは、第2のポイントツーポイントメッシュシステムを含み得る。プロキシノードは、少なくとも1つの参加者デバイスからの着信メッセージの受信に応じてメッセージを第1及び第2の電子取引システムに送信するように構成され得る。第1及び第2の電子取引システムは、プロキシノードによって送信されたメッセージに対するそれぞれの応答を生成するように構成され得る。プロキシノードはさらに、第1又は第2の電子取引システムから生成及び受信されたそれぞれの応答のうちの最初に到着する応答の受信に応じて少なくとも1つの参加者デバイスに応答を送信するように構成され得る。 The gateway, core compute node, sequencer, and first, second, and third direct connections may constitute a first point-to-point mesh system. The electronic trading system may be a first electronic trading system communicatively coupled to a proxy node. The proxy node may be further communicatively coupled to at least one participant device and a second electronic trading system. The second electronic trading system may include a second point-to-point mesh system. The proxy node may be configured to send messages to the first and second electronic trading systems in response to receiving an incoming message from at least one participant device. The first and second electronic trading systems may be configured to generate respective responses to the message sent by the proxy node. The proxy node may further be configured to send a response to at least one participant device in response to receiving a first-arriving response among the respective responses generated and received from the first or second electronic trading system.

他の例示実施形態によると、電子取引を実行する方法は、金融商品を買付又は売却する指値を伴う電子取引要求を表すメッセージをゲートウェイからコアコンピュートノードに第1の直接接続を介して送信するステップを備える。方法は、これに対して、電子取引システムにおいて、電子取引機能を実行するためにメッセージをコアコンピュートノードにおいて受信するステップをさらに備える。方法は、メッセージをゲートウェイから電子取引システムにおけるシーケンサに第2の直接接続を介して送信し、これに対して順序マーク付きメッセージをシーケンサからコアコンピュートノードに第3の直接接続を介して送信するステップをさらに備える。第1、第2及び第3の直接接続は、それぞれの非共有帯域幅を有する。シーケンサは、ゲートウェイとコアコンピュートノードの間に第2及び第3の直接接続を介して挿入される。シーケンサによって送信される順序マーク付きメッセージは、第2の直接接続を介してゲートウェイから送信されたメッセージの順序付けされたバージョンである。方法は、これに対して、コアコンピュートノードにおいて、順序マーク付きメッセージを受信するステップをさらに備える。方法は、コアコンピュートノードにおいて、ゲートウェイからの他のメッセージを受信し、コアコンピュートノードにおいて、シーケンサからの他のメッセージの順序マーク付きバージョンを受信するステップをさらに備える。方法は、電子取引システムにおいてコアコンピュートノードによって受信された他のメッセージの順序マーク付きバージョンの間で順序マーク付きメッセージの相対順位付けをコアコンピュートノードにおいて決定するステップをさらに備える。方法は、コアコンピュートノードにおいて、決定された相対順位付けに応じて電子取引要求に対して電子取引マッチング機能を完了するステップをさらに備え、完了するステップは金融商品について指値を相手方指値とマッチングさせ、金融商品の電子取引を可能とする。 According to another exemplary embodiment, a method for executing electronic trading comprises transmitting a message representing an electronic trade request with a limit price to buy or sell a financial instrument from a gateway to a core compute node via a first direct connection. The method further comprises, in response, receiving the message at the core compute node in an electronic trading system for executing an electronic trading function. The method further comprises transmitting the message from the gateway to a sequencer in the electronic trading system via a second direct connection, and in response, transmitting an order-marked message from the sequencer to the core compute node via a third direct connection. The first, second, and third direct connections have respective unshared bandwidths. The sequencer is inserted between the gateway and the core compute node via the second and third direct connections. The order-marked message transmitted by the sequencer is an ordered version of the message transmitted from the gateway via the second direct connection. The method further comprises, in response, receiving the order-marked message at the core compute node. The method further includes receiving, at the core compute node, other messages from the gateway and receiving, at the core compute node, order-marked versions of the other messages from the sequencer. The method further includes determining, at the core compute node, a relative ranking of the order-marked message among order-marked versions of other messages received by the core compute node in the electronic trading system. The method further includes completing, at the core compute node, an electronic trade matching function for the electronic trade request in response to the determined relative ranking, where the completing matches a limit price with a counterparty limit price for the financial instrument to enable electronic trading of the financial instrument.

代替の方法の実施形態は、例示の電子取引システムの実施形態との関連で上述したものと同様である。 Alternative method embodiments are similar to those described above in connection with the exemplary electronic trading system embodiments.

他の例示実施形態によると、電子取引システムのシーケンサは、一連の命令を符号化した非一時的コンピュータ可読媒体を備え、一連の命令は、シーケンサに読み込まれて実行されると、シーケンサに、電子取引システムのポイントツーポイントメッシュシステムにおいて第1の直接接続を介してゲートウェイと直接通信させる。一連の命令はさらに、シーケンサに、電子取引システムのポイントツーポイントメッシュシステムにおいて第2の直接接続を介してコアコンピュートノードと直接通信させる。シーケンサは、ゲートウェイとコアコンピュートノードの間に第1及び第2の直接接続を介して挿入される。第1及び第2の直接接続は、それぞれの非共有帯域幅を有する。一連の命令はさらに、シーケンサに、固有順序識別子を用いてメッセージ又はその表示をマーク付けすることによって順序マーク付きメッセージを生成させ、メッセージはシーケンサによってそれぞれ第1又は第2の直接接続を介して受信される。一連の命令はさらに、シーケンサに、順序マーク付きメッセージをゲートウェイ及びコアコンピュートノードに送信させる。 According to another exemplary embodiment, a sequencer of an electronic trading system comprises a non-transitory computer-readable medium encoding a set of instructions that, when loaded into and executed by the sequencer, causes the sequencer to communicate directly with a gateway via a first direct connection in a point-to-point mesh system of the electronic trading system. The set of instructions further causes the sequencer to communicate directly with a core compute node via a second direct connection in the point-to-point mesh system of the electronic trading system. The sequencer is interposed between the gateway and the core compute node via the first and second direct connections, the first and second direct connections having respective unshared bandwidths. The set of instructions further causes the sequencer to generate an order-marked message by marking a message or a representation thereof with a unique order identifier, the message being received by the sequencer via the first or second direct connection, respectively. The set of instructions further causes the sequencer to transmit the order-marked message to the gateway and the core compute node.

他の例示実施形態によると、電子取引システムは、活性化リンク、順位付けパス及び順位付けパス内に電子的に配置されたシーケンサを介してコアコンピュートノードに結合されたゲートウェイを備える。ゲートウェイは、活性化リンク及び順位付けパスを介してメッセージをコアコンピュートノードに送信するように構成される。コアコンピュートノードは、メッセージ及びメッセージの順序マーク付きバージョンをゲートウェイ及びシーケンサからそれぞれ受信するように構成される。順序マーク付きバージョンは、活性化リンクを介して通信されて順位付けパスを介してシーケンサによって受信された複数のメッセージの中のメッセージの確定的な位置を示す順序識別子を含む。メッセージ及び順序マーク付きバージョンは、共通のメタデータを含む。 According to another exemplary embodiment, an electronic trading system includes a gateway coupled to a core compute node via an activation link, a ranking path, and a sequencer electronically disposed within the ranking path. The gateway is configured to send messages to the core compute node via the activation link and the ranking path. The core compute node is configured to receive messages and order-marked versions of the messages from the gateway and the sequencer, respectively. The order-marked versions include an order identifier indicating a deterministic position of the message among multiple messages communicated via the activation link and received by the sequencer via the ranking path. The messages and order-marked versions include common metadata.

コアコンピュートノードは、(i)活性化リンクを介したメッセージの受信に応じて電子取引のためのマッチング機能アクティビティを開始し、(ii)順位付けパスを介した順序マーク付きバージョンの受信に応じて、順序識別子を用いて、電子取引をサービス提供することに向けてマッチング機能アクティビティの完了を優先するように構成され得る。 The core compute node may be configured to (i) initiate matching function activities for an electronic transaction in response to receiving a message via the activation link, and (ii) use the order identifier to prioritize completion of matching function activities toward servicing the electronic transaction in response to receiving an order-marked version via the ranking path.

メッセージ及び順序マーク付きバージョンは、共通のメタデータを含み得る。コアコンピュートノードはさらに、順位付けパスを介して順序マーク付きバージョンの受信に応じて、共通のメタデータに基づいてメッセージを順序マーク付きバージョンに相関付けるように構成され得る。 The message and the order-marked version may include common metadata. The core compute node may be further configured, upon receiving the order-marked version via the ordering path, to correlate the message to the order-marked version based on the common metadata.

さらに他の例示実施形態によると、電子取引システムは、ポイントツーポイントメッシュトポロジーにおいて配置されたゲートウェイ、シーケンサ及びコアコンピュートノードを備え得る。コアコンピュートノードは、参加者デバイスから受信されてゲートウェイを介してポイントツーポイントメッシュトポロジーに導入される取引要求にサービス提供することに向けてマッチング機能を実行するように構成され得る。ポイントツーポイントメッシュトポロジーは、第1の直接接続、第2の直接接続及び第3の直接接続を含み得る。シーケンサは、(i)ゲートウェイとコアコンピュートノードの間で第1の直接接続を介して通信されてゲートウェイ又はコアコンピュートノードからそれぞれ第2又は第3の直接接続を介してシーケンサによって受信されたメッセージに対する確定的な順位(すなわち、順序)を決定するように構成され得る。シーケンサはさらに、(ii)取引要求又はそれに対する応答を表すメッセージの順序マーク付きバージョンをゲートウェイ及びコアコンピュートノードにそれぞれ第2及び第3の直接接続を介して送信することによって確定的な順位内でメッセージの位置を伝達するように構成され得る。 According to yet another example embodiment, an electronic trading system may include a gateway, a sequencer, and a core compute node arranged in a point-to-point mesh topology. The core compute node may be configured to perform a matching function toward servicing trade requests received from participant devices and introduced into the point-to-point mesh topology via the gateway. The point-to-point mesh topology may include a first direct connection, a second direct connection, and a third direct connection. The sequencer may be configured to (i) determine a deterministic ranking (i.e., order) for messages communicated between the gateway and the core compute node via the first direct connection and received by the sequencer from the gateway or the core compute node via the second or third direct connection, respectively. The sequencer may be further configured to (ii) communicate the position of the message within the deterministic ranking by sending order-marked versions of the message representing the trade request or a response thereto to the gateway and the core compute node via the second and third direct connections, respectively.

ここに開示される例示実施形態は、方法、装置、システム、又はそこに実現されたプログラムコードを有するコンピュータ可読媒体の形態で実施可能であることが理解されるべきである。 It should be understood that the exemplary embodiments disclosed herein may be implemented in the form of a method, apparatus, system, or computer-readable medium having program code embodied therein.

上記は、各種図面の全体を通じて同様の符号は同じ部分に言及する添付図面に示すように、例示実施形態の以下のより詳細な説明から明らかとなる。図面は、必ずしも縮尺通りではなく、その代わりに図示する実施形態に応じて強調がなされる。 The above will become apparent from the following more detailed description of exemplary embodiments, as shown in the accompanying drawings, in which like numerals refer to like parts throughout the various views. The drawings are not necessarily to scale, emphasis instead being placed on the embodiments illustrated.

図1Aは、金融商品を取引するためのマーケットの例示実施形態のブロック図である。FIG. 1A is a block diagram of an example embodiment of a market for trading financial instruments. 図1B-1は、電子取引システムの例示実施形態のブロック図である。FIG. 1B-1 is a block diagram of an example embodiment of an electronic trading system. 図1B-2は、他の電子取引システムの例示実施形態のブロック図である。FIG. 1B-2 is a block diagram of an example embodiment of another electronic trading system. 図1Cは、ポイントツーポイントメッシュシステムの例示実施形態のブロック図である。FIG. 1C is a block diagram of an example embodiment of a point-to-point mesh system. 図1Dは、電子取引システムの他の例示実施形態のブロック図である。FIG. 1D is a block diagram of another example embodiment of an electronic trading system. 図1Eは、取引メッセージのためのメッセージフォーマットのフィールドの例示実施形態の表である。FIG. 1E is a table of an example embodiment of fields of a message format for a transaction message. 図1Fは、電子取引システムの動作の例示実施形態を示すフロー図である。FIG. 1F is a flow diagram illustrating an example embodiment of the operation of an electronic trading system. 図1Gは、電子取引システムの動作の他の例示実施形態を示すフロー図である。FIG. 1G is a flow diagram illustrating another example embodiment of the operation of an electronic trading system. 図2は、電子取引システムのポイントツーポイントメッシュアーキテクチャにおけるメッシュノードの例示実施形態のブロック図である。FIG. 2 is a block diagram of an example embodiment of a mesh node in a point-to-point mesh architecture of an electronic trading system. 図3は、ポイントツーポイントメッシュシステムの他の例示実施形態のブロック図である。FIG. 3 is a block diagram of another example embodiment of a point-to-point mesh system. 図4は、ポイントツーポイントメッシュシステムの他の例示実施形態のブロック図である。FIG. 4 is a block diagram of another example embodiment of a point-to-point mesh system. 図5は、電子取引を実行する方法の例示実施形態のフロー図である。FIG. 5 is a flow diagram of an example embodiment of a method for conducting an electronic transaction. 図6は、電子取引システムのシーケンサの例示実施形態のブロック図である。FIG. 6 is a block diagram of an exemplary embodiment of a sequencer for an electronic trading system. 図7は、電子取引システムの他の例示実施形態のブロック図である。FIG. 7 is a block diagram of another example embodiment of an electronic trading system.

例示実施形態の説明は、以下の通りである。 An example embodiment is described below.

ここに開示される専用/直接接続は、共有ネットワークスイッチを通過しないポイントツーポイント接続であることが理解されるべきである。 It should be understood that the dedicated/direct connections disclosed herein are point-to-point connections that do not pass through a shared network switch.

現在の電子取引システムは、性能上の利点を与える試みを行っているが、その多くでは、マーケット参加者数の増加によるトランザクション量の増加に起因して性能の劣化が問題となる。一部のマーケット参加者による実施は、多くの場合、高速コンピュータが自動的にマーケットを監視して、通常は圧倒的な態様でマーケットの事象に反応する高頻度な取引方法に基づくものである。また、処理レイテンシー及び応答時間の更なる短縮への継続した要求があり、各マーケット参加者が経験するような性能を維持するとともに容量の枯渇及び不公平なアクセスなどの有害な結果を回避するための更なる容量及び性能の向上に対するニーズをもたらしている。 While current electronic trading systems attempt to provide performance advantages, many suffer from performance degradation due to the increasing transaction volume resulting from an increasing number of market participants. Implementations by some market participants are often based on high-frequency trading methods in which high-speed computers automatically monitor the market and react to market events, usually in an overwhelming manner. Additionally, there is a continuing demand for ever-decreasing processing latency and response times, resulting in a need for further capacity and performance improvements to maintain the performance experienced by each market participant and avoid deleterious consequences such as capacity starvation and unfair access.

マーケットの事象に応答するなど、マーケット参加者がマーケットデータの変化を評価してそれに応答し得る速度の増加は、トランザクションが電子取引システムに受信される速度を増加させ、その間の受信間隔の時間を狭め、それらのトランザクションが受信される順位(すなわち、順序)を決定するように、一層高度な識別に対するニーズを必要としている。例えば、取引注文割当てなどについて、電子取引システムの確定的な動作は、これらに基づく。またさらに、各チャネルの帯域幅の増加とともに容量及び機会を増加させるために、電子取引システムに対する通信のチャネルの追加によって、より多くのトランザクションが複数の平行パスを介して電子取引システムに提出可能となる。 Increasing the speed at which market participants can assess and respond to changes in market data, such as responding to market events, increases the rate at which transactions are received by electronic trading systems, shortens the time between receipts, and necessitates the need for more sophisticated discrimination to determine the order (i.e., sequence) in which those transactions are received. This, for example, is the basis for the deterministic operation of electronic trading systems, such as for trade order allocation. Furthermore, adding channels of communication to electronic trading systems allows more transactions to be submitted to electronic trading systems via multiple parallel paths, increasing capacity and opportunity with increasing bandwidth for each channel.

したがって、電子取引システムが、短時間で受信した着信トランザクションを識別することが有用となる。そのようなシステムが、同時に受信され又は同時に受信したとみなされるほどに時間的に近くに受信されたトランザクション間を調停することが、さらに有用となる。増加した容量及びより低いレイテンシーに加えて、ビジネスのグローバルな性質によって、電子取引システムの利用可能性及び信頼性を増加させるフォールトトレランスのニーズがさらに高まっている。 It is therefore useful for electronic trading systems to identify incoming transactions received within a short time frame. It is even more useful for such systems to reconcile transactions that were received simultaneously or so close in time that they are considered to have been received simultaneously. In addition to increased capacity and lower latency, the global nature of business further drives the need for fault tolerance, which increases the availability and reliability of electronic trading systems.

ビジネスのトランザクションは、業界の、規制上の又は法的な要件へのコンプライアンスを含み得るビジネス又は商業的目的を達成するために、1以上の関連するビジネスルール(産業、法律又は規制の要件又は慣習を含む)に従って企てられる1以上の動作又は作用として定義され得る。ビジネスのトランザクションは、1以上のコンピュータ処理及び/又はデータベース動作/プログラムアクションによって実施され得るものであり、それら自体をトランザクションということもある。ビジネスのトランザクションは、関連するビジネスルールによって定義されるように、以下の点で確定的なものとして特徴付けられ得る。それは、ビジネス/商業的目的を有効化し及び/又は参加者の期待に応えるように、時間的順位など、それらが処理される順位(すなわち、順序)に対する依存性及び/又はビジネスルールによって定義されるようにリアルタイム処理に対する依存性など、ビジネスのトランザクションがそれらの結果に影響を与える相互依存性又は関係性によって特徴付けられ得ることである。これをここでは「トランザクション確定性」という。一般的に、一組の確定的なトランザクションは、1つの順位(すなわち、順序)で実行されると特定の結果を与え、異なる順位(すなわち、順序)で実行されると異なる結果を与えることになる。一部のアプリケーションでは、確定的な処理は、リアルタイム処理よりも好まれ/優先され得る。 A business transaction may be defined as one or more actions or operations undertaken in accordance with one or more relevant business rules (including industry, legal, or regulatory requirements or practices) to achieve a business or commercial objective, which may include compliance with industry, regulatory, or legal requirements. A business transaction may be implemented by one or more computer processes and/or database operations/program actions, which may themselves be referred to as transactions. Business transactions, as defined by the relevant business rules, may be characterized as deterministic in that they may be characterized by interdependencies or relationships that affect their outcomes, such as dependencies on the order (i.e., sequence) in which they are processed, such as temporal ordering, and/or dependencies on real-time processing, as defined by the business rules, to enable the business/commercial objective and/or meet participant expectations. This is referred to herein as "transaction determinism." Generally, a set of deterministic transactions will produce a particular result when executed in one order (i.e., sequence), and will produce a different result when executed in a different order (i.e., sequence). In some applications, deterministic processing may be preferred/prioritized over real-time processing.

高性能電子取引システムが、取引の機会の向上、フォールトトレランス、ローレイテンシー処理、大容量性(例えば、秒あたりに多数のメッセージを処理する)、最小限の影響でのリスク軽減及びマーケット保護並びに情報及び機会への公平なアクセスを提供しつつ、増加する負荷の下でトランザクション確定性を保証することが有用である。 It is useful for high-performance electronic trading systems to ensure transaction determinism under increasing loads while providing improved trading opportunities, fault tolerance, low-latency processing, high capacity (e.g., processing many messages per second), risk mitigation and market protection with minimal impact, and fair access to information and opportunities.

ここに開示される例示実施形態は、株、債券、コモディティ、先物、オプションなどの金融商品を売買する注文がトレーダー及びブローカーなどのマーケット参加者の間で取引されるマーケットを提供する高速電子取引システムに関する。ここに開示される電子取引システムの例示実施形態は、ローレイテンシー、公平性、フォールトトレランス及びより完全に以下に説明する他の特徴を示す。 The exemplary embodiments disclosed herein relate to a high-speed electronic trading system that provides a market in which orders to buy and sell financial instruments, such as stocks, bonds, commodities, futures, and options, are traded between market participants, such as traders and brokers. The exemplary embodiments of the electronic trading system disclosed herein exhibit low latency, fairness, fault tolerance, and other features more fully described below.

図1Aは、金融商品(不図示)を取引するのに用いられる電子取引システム100の例示実施形態を含むマーケット90の例示実施形態のブロック図である。電子取引システム100は、主に、相互に取引注文を「マッチングさせる」責任を担い、それをマッチングさせるためにポイントツーポイントメッシュシステム102を採用する。一例では、金融商品を「買い付け」ようとする指値が、ポイントツーポイントメッシュシステム102のマッチングエンジンによって、「売却」しようとする対応の相手方指値にマッチングされる。マッチングされた指値及び相手方指値は、少なくとも部分的に所望の価格を充足しなければならず、残余の充足されない数量はいずれも他の適宜の反対注文に渡される。そして、マッチングされた取引注文は対合され、取引が実行される。 FIG. 1A is a block diagram of an example embodiment of a market 90, including an example embodiment of an electronic trading system 100 used to trade financial instruments (not shown). The electronic trading system 100 is primarily responsible for "matching" trading orders with one another and employs a point-to-point mesh system 102 to do so. In one example, a limit order to "buy" a financial instrument is matched by the matching engine of the point-to-point mesh system 102 to a corresponding counter limit order to "sell" the financial instrument. The matched limit order and counter limit order must at least partially satisfy the desired price, with any remaining unfilled quantity being passed on to other appropriate counterorders. The matched trading orders are then mated and the trade is executed.

完全に充足されない注文又は部分的に充足された注文は、「注文控え帳」(不図示)というデータ構造体に保持される。不一致の取引注文に関する保留情報は、後続の取引注文を充足するようにマッチングエンジンによって使用可能である。注文控え帳は、通常は、各金融商品に対して保持され、一般的にその特定の商品について、すなわち、その特定の金融商品について、マーケット90の状態を定義し又は表す。注文控え帳は、例えば、マーケット参加者が買付又は売却に対する意思を表明した最近の価格及び数量を含み得る。 Unfilled or partially filled orders are maintained in a data structure called an "order book" (not shown). Pending information about unmatched trade orders is available to the matching engine to fill subsequent trade orders. An order book is typically maintained for each financial instrument and generally defines or represents the state of the market 90 for that particular instrument, i.e., for that particular financial instrument. The order book may include, for example, recent prices and quantities at which market participants expressed their willingness to buy or sell.

マッチングの結果は、マーケットデータフィード(不図示)というストリーミングデータサービス(不図示)を介してマーケット参加者に対して可視化されてもよい。マーケットデータフィードは、通常、取引された各金融商品に対する価格付け並びに出来高及び他の統計などの関連情報を伝達する個々のメッセージを含む。 The results of the matching may be made visible to market participants via a streaming data service (not shown) called a market data feed (not shown). A market data feed typically includes individual messages conveying pricing for each financial instrument traded as well as related information such as volume and other statistics.

マーケット90において、マーケット参加者は、2人のトレーダー、すなわち、第1のトレーダー104a及び第2のトレーダー104bを含む。マーケット90はトレーダーであるマーケット参加者に限定されず、マーケット90は2人のトレーダーに限定されないことが理解されるべきである。マーケット90では、第1のトレーダー104a及び第2のトレーダー104bなどのマーケット参加者は、通信ネットワーク(不図示)を介して電子的に、取引注文を提出し、確認、マーケットデータ及び他の情報を受信し得る。 In market 90, market participants include two traders, namely, first trader 104a and second trader 104b. It should be understood that market 90 is not limited to market participants who are traders, and market 90 is not limited to two traders. In market 90, market participants such as first trader 104a and second trader 104b may submit trade orders and receive confirmations, market data, and other information electronically via a communications network (not shown).

図1Aの例示実施形態では、第1のトレーダー104aは、第1の参加者デバイス130aを介して電子取引システム100に送信される第1の着信メッセージ3aを介して金融商品(不図示)を買い付ける第1の取引注文(不図示)を提出している。電子取引システム100は、第1の取引注文を第2の取引注文(不図示)に対してマッチングさせて金融商品を売却するポイントツーポイントメッシュシステム102を採用している。金融商品を売却するための第2の取引注文は、第2の参加者デバイス130bを介して電子取引システム100に送信される第2の着信メッセージ3bを介して第2のトレーダー104bによって提出される。 In the exemplary embodiment of FIG. 1A, a first trader 104a submits a first trade order (not shown) to buy a financial instrument (not shown) via a first incoming message 3a transmitted to the electronic trading system 100 via a first participant device 130a. The electronic trading system 100 employs a point-to-point mesh system 102 that matches the first trade order against a second trade order (not shown) to sell the financial instrument. A second trade order to sell the financial instrument is submitted by a second trader 104b via a second incoming message 3b transmitted to the electronic trading system 100 via a second participant device 130b.

例示実施形態では、電子取引システム100は、第1の発信メッセージ5a及び第2の発信メッセージ5bを第1の参加者デバイス130a及び第2の参加者デバイス130bにそれぞれ送信して、第1のトレーダー104a及び第2のトレーダー104bにそれぞれの取引注文の実行が成功したことをそれぞれ通知する。ポイントツーポイントメッシュシステム102は、電子取引システム100が金融商品の高速で確定的な電子取引を実行することを可能とする。ポイントツーポイントメッシュシステム102の例示実施形態を、図1B-1及び1B-2を参照して以下に開示する。 In an exemplary embodiment, the electronic trading system 100 sends a first outgoing message 5a and a second outgoing message 5b to the first participant device 130a and the second participant device 130b, respectively, to notify the first trader 104a and the second trader 104b of the successful execution of their respective trade orders. The point-to-point mesh system 102 enables the electronic trading system 100 to execute high-speed, deterministic electronic trades of financial instruments. An exemplary embodiment of the point-to-point mesh system 102 is disclosed below with reference to Figures 1B-1 and 1B-2.

図1B-1は、以上に開示した図1Aの電子取引システム100の例示実施形態のブロック図である。特定の実施形態では、電子取引システム100は、活性化リンク180-1-1及び順位付け(すなわち、順序付け)パス117を介してコアコンピュートノード140-1に結合されたゲートウェイ120-1を備える。電子取引システム100は、順位付けパス117内に電子的に配置されたシーケンサ150-1をさらに備える。ゲートウェイ120-1は、メッセージ(不図示)を活性化リンク180-1-1及び順位付けパス117を介してコアコンピュートノード140-1に送信するように構成される。メッセージは、図1B-2に関して以下に開示するメッセージ106であり得る。コアコンピュートノード140-1は、メッセージ及びメッセージの順序マーク付きバージョン(不図示)をゲートウェイ120-1及びシーケンサ150-1からそれぞれ受信するように構成される。メッセージの順序マーク付きバージョンは、以下にさらに開示する図1B-2の順序マーク付きメッセージ106´であり得る。順序マーク付きバージョン(すなわち、順序マーク付きメッセージ106´)は、非限定的な例について図1Eに関して以下にさらに開示するような順序マーク付きメッセージ106´の順序IDフィールド110-14に含まれ得るような順序識別子(ID)を含む。順序IDは、活性化リンク180-1-1を介して通信されて順位付けパス117を介してシーケンサ150-1によって受信された複数の他のメッセージの順序マーク付きバージョンのうちの当該メッセージの順序マーク付きバージョンの確定的な位置を示す。順序IDが確定的な位置を示す複数のメッセージは、順位付けパス117を介してコアコンピュートノード140-1によって受信された他のメッセージの順序マーク付きバージョンも含む。メッセージ(例えば、順序付けなしメッセージ又は順序マークなしメッセージ)及び順序マーク付きバージョンは、共通のメタデータ(不図示)を含む。以下にさらに開示するように、共通のメタデータを介してメッセージをその順序マーク付きバージョンに相関付けることによって、メッセージの順序IDが識別される。順序IDはさらに、シーケンサ150-1を通過して結果としてシーケンサ150-1によって順序マーク付きの、電子取引システム100全体を通じて通信される全てのメッセージうちの当該メッセージの確定的な位置を示す。 FIG. 1B-1 is a block diagram of an exemplary embodiment of the electronic trading system 100 of FIG. 1A disclosed above. In a particular embodiment, the electronic trading system 100 includes a gateway 120-1 coupled to a core compute node 140-1 via an activation link 180-1-1 and a ranking (i.e., ordering) path 117. The electronic trading system 100 further includes a sequencer 150-1 electronically located within the ranking path 117. The gateway 120-1 is configured to send a message (not shown) to the core compute node 140-1 via the activation link 180-1-1 and the ranking path 117. The message may be a message 106 disclosed below with respect to FIG. 1B-2. The core compute node 140-1 is configured to receive the message and an order-marked version of the message (not shown) from the gateway 120-1 and the sequencer 150-1, respectively. The order-marked version of the message may be the order-marked message 106′ of FIG. 1B-2, as further disclosed below. The order-marked version (i.e., the order-marked message 106′) includes an order identifier (ID), such as may be included in the order ID field 110-14 of the order-marked message 106′, as further disclosed below with respect to FIG. 1E for a non-limiting example. The order ID indicates a deterministic position of the order-marked version of the message among order-marked versions of other messages communicated over activation link 180-1-1 and received by sequencer 150-1 via ordering path 117. The messages for which the order ID indicates a deterministic position also include order-marked versions of other messages received by core compute node 140-1 via ordering path 117. The message (e.g., an unordered message or a non-order-marked message) and the order-marked version include common metadata (not shown). As further disclosed below, the order ID of the message is identified by correlating the message to its order-marked version via the common metadata. The sequence ID further indicates the definitive position of the message among all messages communicated throughout the electronic trading system 100 that have passed through, and are consequently sequence-marked by, sequencer 150-1.

電子取引システム100の要素はそこで通信されるメッセージにタイムスタンプを施す一方で、シーケンサ150-1によって決定された順序IDは電子取引システム100で通信されるメッセージの位置(順位/優先度)を決定することが理解されるべきである。複数のシステムが同じタイムスタンプによってメッセージにタイムスタンプを施すことが可能であり、結果として、そのメッセージに対する順位/優先度がその受信者において決定されなければならない場合がある。そのようなことは、シーケンサ150-1が電子取引システム100全体を通じて通信されたメッセージの順位/優先度を単独で決定する主体となり得るので、電子取引システム100では起こらない。 It should be understood that while elements of electronic trading system 100 timestamp messages communicated therein, the sequence ID determined by sequencer 150-1 determines the position (rank/priority) of a message communicated in electronic trading system 100. It is possible for multiple systems to timestamp a message with the same timestamp, and as a result, the rank/priority for that message may have to be determined at the recipient's end. This does not occur in electronic trading system 100, as sequencer 150-1 can be the sole entity that determines the rank/priority of messages communicated throughout electronic trading system 100.

コアコンピュートノード140-1は、(i)活性化リンク180-1-1を介したメッセージの受信に応じて電子取引のためのマッチング機能アクティビティを開始し、(ii)順位付けパス117を介した順序マーク付きバージョンの受信に応じて、順序識別子を用いて、電子取引にサービス提供することに向けてマッチング機能アクティビティの完了を優先するように構成され得る。 Core compute node 140-1 may be configured to (i) initiate matching function activities for an electronic transaction in response to receiving a message via activation link 180-1-1, and (ii) use an order identifier to prioritize completion of matching function activities toward servicing the electronic transaction in response to receiving an order-marked version via ranking path 117.

メッセージ及び順序マーク付きバージョンは、共通のメタデータを含み得る。コアコンピュートノード140-1はさらに、順位付けパス117を介して順序マーク付きバージョンの受信に応じて、共通のメタデータに基づいてメッセージを順序マーク付きバージョンに相関付けるように構成され得る。 The message and the order-marked version may include common metadata. Core compute node 140-1 may be further configured, upon receiving the order-marked version via ordering path 117, to correlate the message with the order-marked version based on the common metadata.

図1B-1の例示実施形態では、メッセージは、活性化リンク順方向に、すなわち、act-link-fwd-dir113aにおいて、活性化リンク180-1-1を介してコアコンピュートノード140-1に送信され、かつ順位付けパス順方向に、すなわち、order-path-fwd-dir115aにおいて、順位付けパス117を介してコアコンピュートノード140-1に送信される。マッチング機能アクティビティの完了に続いて、コアコンピュートノード140-1は、応答(不図示)を活性化リンク逆方向(すなわち、act-link-rev-dir113b)及び順位付けパス逆方向(すなわち、order-path-rev-dir115b)に活性化リンク180-1-1及び順位付けパス117を介してゲートウェイ120-1に送信し得る。活性化リンク180-1-1及び順位付けパス117を介してゲートウェイ120-1に送信された応答は、図1B-2に関して以下にさらに開示する応答107であり得る。 In the exemplary embodiment of FIG. 1B-1, the message is sent in the activation link forward direction, i.e., at act-link-fwd-dir 113a, via activation link 180-1-1 to core compute node 140-1, and in the ordering path forward direction, i.e., at order-path-fwd-dir 115a, via ordering path 117 to core compute node 140-1. Following completion of the matching function activity, core compute node 140-1 may send a response (not shown) in the activation link reverse direction (i.e., act-link-rev-dir 113b) and ordering path reverse direction (i.e., order-path-rev-dir 115b) to gateway 120-1 via activation link 180-1-1 and ordering path 117. The response sent to gateway 120-1 via activation link 180-1-1 and ordering path 117 may be response 107, which is further disclosed below with respect to FIG. 1B-2.

活性化リンク180-1-1は単一の直接接続であり、一方で順位付けパス117は複数の直接接続を含む。例えば、第1の直接接続180-1-1ともいう活性化リンク180-1-1は単一の直接接続であり、一方で順位付けパス117は、図1B-2に関して以下にさらに開示する第2の直接接続180-gw1―s1及び第3の直接接続180-c1-s1を含み得る。 Activation link 180-1-1 may be a single direct connection, while ordering path 117 may include multiple direct connections. For example, activation link 180-1-1, also referred to as first direct connection 180-1-1, may be a single direct connection, while ordering path 117 may include second direct connection 180-gw1-s1 and third direct connection 180-c1-s1, as further disclosed below with respect to FIG. 1B-2.

ゲートウェイ120-1、シーケンサ150-1及びコアコンピュートノード140-1は、ポイントツーポイントメッシュトポロジーにおいて配置される。コアコンピュートノード140-1は、参加者デバイスから受信されてゲートウェイ120-1を介してポイントツーポイントメッシュトポロジーに導入される取引要求にサービス提供することに向けてマッチング機能(すなわち、電子取引マッチング機能)を実行するように構成され得る。この参加者デバイスは、図1B-2に関して以下にさらに開示される。ポイントツーポイントメッシュトポロジーは、以上に開示したようにかつ図1B-2に関して以下にさらに開示するように、第1の直接接続、第2の直接接続及び第3の直接接続を含む。シーケンサ150-1は、(i)ゲートウェイ120-1とコアコンピュートノード140-1の間で第1の直接接続を介して通信されてゲートウェイ120-1又はコアコンピュートノード140-1からそれぞれ第2又は第3の直接接続を介してシーケンサ150-1によって受信されたメッセージに対する確定的な順位(すなわち、順序)を決定するように構成され得る。シーケンサ150-1はさらに、(ii)メッセージの順序マーク付きバージョンをゲートウェイ120-1及びコアコンピュートノード140-1にそれぞれ第2及び第3の直接接続を介して送信することによって確定的な順位内でメッセージの位置を伝達するように構成され得る。メッセージは、図1B-2に関して以下に開示するように、取引要求又はそれに対する応答を表す。 Gateway 120-1, sequencer 150-1, and core compute node 140-1 are arranged in a point-to-point mesh topology. Core compute node 140-1 may be configured to perform a matching function (i.e., an electronic trade matching function) toward servicing trade requests received from participant devices and introduced into the point-to-point mesh topology via gateway 120-1, as further disclosed below with respect to FIG. 1B-2. The point-to-point mesh topology includes a first direct connection, a second direct connection, and a third direct connection, as disclosed above and further disclosed below with respect to FIG. 1B-2. Sequencer 150-1 may be configured to (i) determine a deterministic ranking (i.e., order) for messages communicated between gateway 120-1 and core compute node 140-1 via the first direct connection and received by sequencer 150-1 from gateway 120-1 or core compute node 140-1 via the second or third direct connection, respectively. Sequencer 150-1 may further be configured to (ii) communicate the position of the message within the deterministic order by sending an order-marked version of the message to gateway 120-1 and core compute node 140-1 via the second and third direct connections, respectively. The message may represent a transaction request or a response thereto, as disclosed below with respect to FIG. 1B-2.

図1B-2は、以上に開示した図1Aの電子取引システム100の例示実施形態の他のブロック図である。電子取引システム100は、ゲートウェイ120-1、電子取引マッチング機能を実行するように構成されたコアコンピュートノード140-1、及びシーケンサ150-1を備える。ゲートウェイ120-1とコアコンピュートノード140-1とは、第1の直接接続180-1-1を介して結合される。ゲートウェイ120-1とシーケンサ150-1とは、第2の直接接続180-gw1-s1を介して結合される。シーケンサ150-1とコアコンピュートノード140-1とは、第3の直接接続180-c1-s1を介して結合される。第1の直接接続180-1-1、第2の直接接続180-gw1-s1及び第3の直接接続180-c1-s1は、それぞれの非共有帯域幅を有する。 FIG. 1B-2 is another block diagram of an exemplary embodiment of the electronic trading system 100 of FIG. 1A disclosed above. The electronic trading system 100 includes a gateway 120-1, a core compute node 140-1 configured to perform electronic trade matching functions, and a sequencer 150-1. The gateway 120-1 and the core compute node 140-1 are coupled via a first direct connection 180-1-1. The gateway 120-1 and the sequencer 150-1 are coupled via a second direct connection 180-gw1-s1. The sequencer 150-1 and the core compute node 140-1 are coupled via a third direct connection 180-c1-s1. The first direct connection 180-1-1, the second direct connection 180-gw1-s1, and the third direct connection 180-c1-s1 each have their own unshared bandwidth.

開示の一部の図面では、図1B-2に示す第1の直接接続180-1-1、第2の直接接続180-gw1-s1及び第3の直接接続180-c1-s1の矢印などの矢印が、直接接続(すなわち、直接リンク)上に含まれる。このような直接接続/リンク上の矢印は、データが直接接続/リンクを介して双方向に流れ得ることを示す。開示の他の図面は以上に開示した図1B-1及び以下にさらに開示する図1Dのように、直接接続/リンクに適用される上記矢印を有さない場合もあるが、データはそのような接続/リンクに沿って双方向に流れ得ること、及びそのような接続/リンクは単一の通信リンク又は並列の2つのリンクであってもよく、その2つのリンクの各々は一方向であってデータはこの2つのリンクを介して対向方向に流れることが理解されるべきである。 In some figures of the disclosure, arrows are included on direct connections (i.e., direct links), such as the arrows on the first direct connection 180-1-1, second direct connection 180-gw1-s1, and third direct connection 180-c1-s1 shown in FIG. 1B-2. The arrows on such direct connections/links indicate that data may flow bidirectionally through the direct connections/links. While other figures of the disclosure, such as FIG. 1B-1 disclosed above and FIG. 1D further disclosed below, may not have the above arrows applied to direct connections/links, it should be understood that data may flow bidirectionally along such connections/links, and that such connections/links may be a single communication link or two parallel links, each of which is unidirectional and data flows in opposite directions through the two links.

図1B-2を参照して続けると、ゲートウェイ120-1は、金融商品を買付又は売却する指値を伴う電子取引要求を表すメッセージ106(すなわち、B)をコアコンピュートノード140-1に第1の直接接続180-1-1を介して送信し、これに対して、メッセージ106がコアコンピュートノード140-1によって受信されるように構成される。ゲートウェイ120-1はさらに、メッセージ106(すなわち、B)をシーケンサ150-1に第2の直接接続180-gw1-s1を介して送信するように構成され、シーケンサ150-1は、これに対して、図1Dに関して以下にさらに開示するように、順序マーク付きメッセージ106´(すなわち、C)をコアコンピュートノード140-1に第3の直接接続180-c1-s1を介して送信するように構成される。シーケンサ150-1は、ゲートウェイ120-1とコアコンピュートノード140の間に第2及び第3の直接接続を介して挿入される。シーケンサ150-1によって送信された順序マーク付きメッセージ106´は、ゲートウェイ120-1によって送信されたメッセージの順序付けされたバージョンである。これに対して、順序マーク付きメッセージは、コアコンピュートノード140-1によって受信される。コアコンピュートノード140-1は、電子取引システム100においてコアコンピュートノード140-1に受信された他のメッセージの順序マーク付きバージョン(不図示)のうちの順序マーク付きメッセージ106´の相対順位付けを決定するように構成される。コアコンピュートノード140-1はさらに、決定された相対順位付けに応じて電子取引要求に対する電子取引マッチング機能を完了し、指値がその金融商品についての相手方指値とマッチングされるようにして金融商品の電子取引を可能とするように構成される。 Continuing with reference to FIG. 1B-2, gateway 120-1 is configured to transmit message 106 (i.e., B) representing an electronic transaction request with a limit price to buy or sell a financial instrument to core compute node 140-1 via first direct connection 180-1-1, whereby message 106 is received by core compute node 140-1 in return. Gateway 120-1 is further configured to transmit message 106 (i.e., B) to sequencer 150-1 via second direct connection 180-gw1-s1, whereby sequencer 150-1 is configured to transmit sequence-marked message 106' (i.e., C) to core compute node 140-1 via third direct connection 180-c1-s1, as further disclosed below with respect to FIG. 1D. Sequencer 150-1 is interposed between gateway 120-1 and core compute node 140 via the second and third direct connections. The order-marked message 106' sent by sequencer 150-1 is an ordered version of the message sent by gateway 120-1. In turn, the order-marked message is received by core compute node 140-1. Core compute node 140-1 is configured to determine a relative ranking of the order-marked message 106' among order-marked versions of other messages (not shown) received by core compute node 140-1 in electronic trading system 100. Core compute node 140-1 is further configured to complete an electronic trade matching function for the electronic trade request in response to the determined relative ranking, thereby enabling electronic trading of the financial instrument by matching the limit price with a counterparty limit price for the financial instrument.

電子取引マッチング機能は、取引注文をマッチングさせること自体よりも多くを含み得ることが理解されるべきである。例えば、電子取引マッチング機能は、図1Dに関して以下にさらに開示するような承認メッセージの送信を含んでいてもよい。また、コアコンピュートノード140-1は、コアコンピュートノード140-1がそれを促進することを可能とする順序マーク付きメッセージ106´の受信前に電子取引マッチング機能の一部を実行してもよい。例えば、メッセージ106(例えば、非順序マーク付きメッセージ)の受信に続いて、コアコンピュートノード140-1は、非限定的な例について、図1Eに関して以下にさらに開示する銘柄記号フィールド110-2の銘柄記号など、メッセージ106において識別された銘柄記号に関するデータを後のアクセスのために高速メモリに読み込むことによって、電子取引マッチング機能を開始し得る。銘柄記号は、株式表示記号又はストックティッカーなどの取引された有価証券を表し得る。ただし、コアコンピュートノード140-1は、メッセージ106の内容に関連する任意のタイプのアクティビティを実行することによって電子取引マッチング機能を開始(トリガ)し得ることが理解されるべきである。 It should be understood that the electronic trade matching function may include more than matching trade orders per se. For example, the electronic trade matching function may include sending an acknowledgement message, as further disclosed below with respect to FIG. 1D. Core compute node 140-1 may also perform a portion of the electronic trade matching function prior to receiving an order-marked message 106' that allows core compute node 140-1 to facilitate it. For example, following receipt of message 106 (e.g., an unordered message), core compute node 140-1 may initiate the electronic trade matching function by loading data related to the stock symbol identified in message 106 into high-speed memory for later access, such as, for non-limiting example, the stock symbol in stock symbol field 110-2, further disclosed below with respect to FIG. 1E. The stock symbol may represent a traded security, such as a stock symbol or stock ticker. However, it should be understood that core compute node 140-1 may initiate (trigger) the electronic trade matching function by performing any type of activity related to the content of message 106.

シーケンサ150-1はさらに、固有順序識別子(不図示)によってメッセージ106又はその表示をマーク付けすることによって順序マーク付きメッセージ106´を生成するように構成され得る。固有順序識別子は、シーケンサ150-1においてメッセージ106の到着時間に対応する値を有していてもよく、シーケンサ150-1において受信された複数のメッセージ(不図示)のうちのメッセージ106の相対順序位置を示していてもよい。 Sequencer 150-1 may be further configured to generate sequence-marked message 106' by marking message 106 or a representation thereof with a unique sequence identifier (not shown). The unique sequence identifier may have a value corresponding to the arrival time of message 106 at sequencer 150-1 and may indicate the relative sequence position of message 106 among multiple messages (not shown) received at sequencer 150-1.

コアコンピュートノード140-1は、上述のように、順序付けなしメッセージ106の受信に応じて電子取引機能を開始し、それにより順序付けなしメッセージ106の処理を開始し得る一方で、コアコンピュートノード140-1は、コアコンピュートノード140-1が順序マーク付きメッセージ106´を受信するまでメッセージ106の処理を完了せず及び/又はメッセージ106の処理の結果を確約しなくてもよい。順序マーク付きメッセージ106´において順序識別子を介して指定されるような、メッセージを処理するための確定的な順位付けがない場合、例えば、コンピュートノード140-1によるメッセージの処理は予測不能となり得る。可能性ある予測不能な結果の非限定的な例として、有価証券の交換における相手方に対する潜在的なマッチングを各々が表す複数の未処理の順序付けなしメッセージがあり得る。複数の潜在的なマッチング間で調停する確定的な態様があると有用である。これは、おそらくは、潜在的なマッチングのうちの一部の組しか、相手方の所与の取引注文に対して約定可能とはならないためである。 While core compute node 140-1 may initiate electronic trading functions and thereby begin processing unordered message 106 in response to receiving unordered message 106, as described above, core compute node 140-1 may not complete processing of message 106 and/or may not commit to the results of processing message 106 until core compute node 140-1 receives order-marked message 106'. Without a deterministic ordering for processing messages, such as specified via an order identifier in order-marked message 106', for example, processing of messages by compute node 140-1 may be unpredictable. As a non-limiting example of a possible unpredictable outcome, there may be multiple outstanding unordered messages, each representing a potential match for a counterparty in an exchange of securities. A deterministic manner of arbitrating among multiple potential matches is useful, since likely only a subset of potential matches will be executable for a given trade order of the counterparty.

一部の実施形態によると、コンピュートノード140-1は、順序付けなしメッセージ106及び順序マーク付きメッセージ106´の双方を受信した後に、図1Eとの関連で後述するように、メッセージの両バージョンにおける識別情報を介して、順序付けなしメッセージ106を順序マーク付きメッセージ106´に相関付けてもよい。コンピュートノード140-1が順序マーク付きメッセージ106´を受信すると、コンピュートノード140-1は、その後に、電子取引システム100の全体を通じてメッセージ106/106´が他のメッセージに相対して処理されるべき適切な順序を決定してもよく、そして、適宜の応答メッセージを送出すること、場合によっては順序マーク付きメッセージ106´に対してシーケンサによって割り当てられた順序識別子を参照することなど、メッセージ106/106´の処理を完了してもよい。有価証券の交換における相手方に対する潜在的なマッチングを表す複数のメッセージの非限定的な例に戻ると、潜在的なマッチングを表すメッセージの順序マーク付きバージョンがコンピュートノード140-1によって受信されると、コンピュートノード140-1は、可能性あるマッチングが発生して電子取引マッチング機能を完了させる順序を厳密に決定し得る。 In some embodiments, after receiving both the unordered message 106 and the order-marked message 106', compute node 140-1 may correlate the unordered message 106 with the order-marked message 106' via identifying information in both versions of the message, as described below in connection with FIG. 1E. Once compute node 140-1 receives the order-marked message 106', compute node 140-1 may then determine the appropriate order in which message 106/106' should be processed relative to other messages throughout electronic trading system 100 and may complete processing of message 106/106', including sending appropriate response messages and possibly referencing the order identifier assigned by the sequencer to order-marked message 106'. Returning to the non-limiting example of multiple messages representing potential matches to counterparties in an exchange of securities, when order-marked versions of the messages representing potential matches are received by compute node 140-1, compute node 140-1 may determine the exact order in which the potential matches occur to complete the electronic trade matching function.

例示実施形態によると、順序マーク付きメッセージ106´をコンピュートノード140-1に第3の直接接続180-c1-s1を介して送信することに加えて、シーケンサ150-1はさらに、順序マーク付きメッセージ106´(すなわち、C)をゲートウェイ120-1に第2の直接接続180-gw1-s1を介して送信してもよい。順序マーク付きメッセージ106´(すなわち、C)をメッセージ106の送信者に提供することによって、送信者、すなわち、ゲートウェイ120-1が、メッセージ、すなわち、メッセージ106に割り当てられた順序番号を(図1Eとの関連で後述するような)メッセージにおける他の識別情報に相関付けることができる。それにより、送信者は、図1Dに関して以下にさらに開示するように、その順序番号を参照する後続のメッセージに容易に対処することができる。 According to an example embodiment, in addition to transmitting the order-marked message 106' to compute node 140-1 via the third direct connection 180-c1-s1, sequencer 150-1 may also transmit the order-marked message 106' (i.e., C) to gateway 120-1 via the second direct connection 180-gw1-s1. Providing the order-marked message 106' (i.e., C) to the sender of message 106 allows the sender, i.e., gateway 120-1, to correlate the sequence number assigned to the message, i.e., message 106, with other identifying information in the message (as described below in connection with FIG. 1E). This allows the sender to easily address subsequent messages that reference that sequence number, as further disclosed below with respect to FIG. 1D.

ゲートウェイ120-1、コアコンピュートノード140-1、シーケンサ150-1、第1の直接接続180-1-1、第2の直接接続180-gw1-s1及び第3の直接接続180-c1-s1は、ポイントツーポイントメッシュシステム102を構成する。例示実施形態によると、ポイントツーポイントメッシュシステム102では、第1の直接接続180-1-1、第2の直接接続180-gw1-s1及び第3の直接接続180-c1-s1又はそれらの一部の組は、少なくとも1つのそれぞれの冗長直接接続(不図示)によって保護され得る。この直接接続が故障した場合、それぞれの冗長直接接続が、その代わりに採用され得る。このように、電子取引システム100は、第1、第2及び第3の直接接続又はそれらの一部の組に対する少なくとも1つのそれぞれの冗長直接接続をさらに備え得る。 Gateway 120-1, core compute node 140-1, sequencer 150-1, first direct connection 180-1-1, second direct connection 180-gw1-s1, and third direct connection 180-c1-s1 constitute a point-to-point mesh system 102. According to an example embodiment, in point-to-point mesh system 102, first direct connection 180-1-1, second direct connection 180-gw1-s1, and third direct connection 180-c1-s1, or some combination thereof, may be protected by at least one respective redundant direct connection (not shown). If this direct connection fails, the respective redundant direct connection may be employed instead. In this manner, electronic trading system 100 may further include at least one respective redundant direct connection for each of the first, second, and third direct connections, or some combination thereof.

例示実施形態によると、電子取引システム100はクロックをさらに備えていてもよく、ゲートウェイ120-1、コアコンピュートノード140-1及びシーケンサ150-1は、以下にさらに開示するように、図1Dのクロック195のようなクロックに基づいて同期され得る。 According to an example embodiment, the electronic trading system 100 may further include a clock, and the gateway 120-1, core compute node 140-1, and sequencer 150-1 may be synchronized based on a clock such as clock 195 in FIG. 1D, as further disclosed below.

メッセージ106は、それがゲートウェイ、すなわち、ゲートウェイ120-1から到来するため、「ゲートウェイ」メッセージという場合がある。メッセージ106は、それが例示実施形態ではコンピュートノード、すなわち、コアコンピュートノード140-1に宛てられるので「コンピュートノード宛て」メッセージという場合もある。メッセージ106は、参加者デバイス(不図示)からゲートウェイ120-1によって受信された着信メッセージ103(すなわち、A)の受信に応じてゲートウェイ120-1によって送信されたゲートウェイメッセージである。順序マーク付きメッセージ106´は、第1の順序マーク付きメッセージであり得る。コアコンピュートノード140-1はさらに、メッセージ106、すなわち、ゲートウェイメッセージを受信したことに応じて、コアコンピュートノードメッセージ、すなわち、応答107(すなわち、D)をゲートウェイ120-1に第1の直接接続180-1-1を介して送信し、コアコンピュートノードメッセージ(すなわち、応答107)をシーケンサ150-1に第3の直接接続180-c1-s1を介して送信するように構成され得る。シーケンサ150-1はさらに、これに対して、第2の順序マーク付きメッセージ、すなわち、順序マーク付き応答107´(すなわち、E)をゲートウェイ120-1に第2の直接接続180-gw1-s1を介して送信するように構成される。第2の順序マーク付きメッセージは、コアコンピュートノードメッセージの順序付けされたバージョンである。ゲートウェイ120-1はさらに、第2の順序マーク付きメッセージ(すなわち、順序マーク付き応答107´)及びコアコンピュートノード140-1からゲートウェイ120-1に送信された他のメッセージの順序マーク付きバージョンの相対順位付けを決定するように構成され得る。ゲートウェイ120-1はさらに、発信メッセージ105(すなわち、F)を、決定された相対順位付けに応じて参加者デバイスに送信するように構成され得る。メッセージ106及び応答107は取引アクティビティに関するものであることが理解されるべきである。 Message 106 may be referred to as a "gateway" message because it arrives from a gateway, i.e., gateway 120-1. Message 106 may also be referred to as a "compute node-destined" message because, in the illustrated embodiment, it is destined for a compute node, i.e., core compute node 140-1. Message 106 is a gateway message sent by gateway 120-1 in response to receipt of incoming message 103 (i.e., A) received by gateway 120-1 from a participant device (not shown). Order-marked message 106' may be the first order-marked message. Core compute node 140-1 may be further configured, in response to receiving message 106, i.e., gateway message, to send a core compute node message, i.e., response 107 (i.e., D), to gateway 120-1 via first direct connection 180-1-1 and to send the core compute node message (i.e., response 107) to sequencer 150-1 via third direct connection 180-c1-s1. Sequencer 150-1 is further configured, in response, to send a second order-marked message, i.e., order-marked response 107' (i.e., E), to gateway 120-1 via second direct connection 180-gw1-s1. The second order-marked message is an ordered version of the core compute node message. Gateway 120-1 may be further configured to determine a relative ranking of the second order-marked message (i.e., order-marked response 107') and order-marked versions of other messages sent from core compute node 140-1 to gateway 120-1. Gateway 120-1 may be further configured to send outgoing message 105 (i.e., F) to participant devices according to the determined relative ranking. It should be understood that message 106 and response 107 relate to trading activity.

シーケンサ150-1はさらに、第2の順序マーク付きメッセージ、すなわち、順序マーク付き応答107´(すなわち、E)をコアコンピュートノード140-1に第3の直接接続180-c1-s1を介して送信し得る。順序マーク付き応答107´(すなわち、E)を応答107の送信者に提供することによって、送信者、すなわち、コアコンピュートノード140-1が、メッセージ、すなわち、応答107に割り当てられた順序番号を(図1Eとの関連で後述するような)メッセージにおける他の識別情報に相関付けることができる。それにより、送信者は、図1Dに関して以下にさらに開示するように、その順序番号を参照する後続のメッセージに容易に対処することができる。 Sequencer 150-1 may further transmit a second order-marked message, i.e., order-marked response 107' (i.e., E), to core compute node 140-1 via third direct connection 180-c1-s1. By providing order-marked response 107' (i.e., E) to the sender of response 107, the sender, i.e., core compute node 140-1, can correlate the sequence number assigned to the message, i.e., response 107, with other identifying information in the message (as described below in connection with FIG. 1E). This allows the sender to easily address subsequent messages that reference that sequence number, as further disclosed below with respect to FIG. 1D.

コンピュートノード140-1によって受信されるメッセージ106及び106´との関連で上記と同様に、順序付けなし応答メッセージ107の受信に応じて、ゲートウェイ120-1は、ゲートウェイ120-1が順序マーク付き応答107´を受信する前であっても、その応答メッセージの処理を活性化させ得る。非限定的な例として、処理を活性化すること(開始すること)は、ゲートウェイ120-1の未決済取引注文データベースの状態を更新すること及び/又は参加者デバイスに送信可能となった発信メッセージ105を蓄積することを含み得る。ただし、一部の実施形態では、ゲートウェイ120-1は、電子取引システム100における他のメッセージを含む一連のメッセージでの応答メッセージ107の確定的な位置を指定する順序識別子を含む順序マーク付き応答メッセージ107´をゲートウェイ120-1が受信するまでは順序マーク付き応答メッセージ107の処理(この処理は発信メッセージ105を参加者デバイスに送信することを含む)を完了しなくてもよい。一部の実施形態では、ゲートウェイ120-1は、順序付けなしメッセージ107及び順序マーク付き応答メッセージ107´の双方を受信した後に、図1Eとの関連で後述するように、メッセージの両バージョンにおける識別情報を介して順序付けなし応答メッセージ107を順序マーク付き応答メッセージ107´に相関させてもよい。これにより、応答メッセージ107/107´の確定的な位置は、順序マーク付き応答メッセージ107´の受信に応じて決定される。一部の実施形態では、その後に、応答メッセージの処理が完了されてもよく、その処理は、発信メッセージ105が参加者デバイスに送信されることを確約することを含む。 Similar to the above with respect to messages 106 and 106' received by compute node 140-1, in response to receiving the unordered response message 107, gateway 120-1 may activate processing of the response message even before gateway 120-1 receives the order-marked response 107'. By way of non-limiting example, activating (starting) processing may include updating the state of gateway 120-1's open trade order database and/or storing the outgoing message 105 as available for transmission to a participant device. However, in some embodiments, gateway 120-1 may not complete processing of the order-marked response message 107 (which processing may include transmitting the outgoing message 105 to a participant device) until gateway 120-1 receives an order-marked response message 107' that includes an order identifier specifying the definitive position of the response message 107 in a sequence of messages, including other messages, in electronic trading system 100. In some embodiments, after receiving both the unordered message 107 and the order-marked reply message 107', the gateway 120-1 may correlate the unordered reply message 107 with the order-marked reply message 107' via identifying information in both versions of the messages, as described below in connection with FIG. 1E. This allows the definitive location of the reply message 107/107' to be determined upon receipt of the order-marked reply message 107'. In some embodiments, processing of the reply message may then be completed, which may include committing the outgoing message 105 to be sent to the participant device.

電子取引システム100は、コアコンピュートノード140-1によってアクセス可能な注文控え帳(不図示)をさらに備え得る。コアコンピュートノード140-1はさらに、実行される電子取引マッチング機能に基づいて金融商品(不図示)に関する取引注文をマッチングさせるように構成され得る。例えば、コアコンピュートノード140-1はさらに、電子取引マッチング機能を用いて金融商品に関する取引注文をマッチングさせるように構成され得る。コアコンピュートノード140-1はさらに、注文控え帳における金融商品の残持ち高(不図示)を維持するように構成され得る。金融商品の金額不一致が、電子取引マッチング機能を実行する結果としてもたらされる場合がある。残持ち高は、金融商品の金額不一致を含み得る。残持ち高は、数量よりも多くの情報を伝達可能であることが理解されるべきである。例えば、持ち高は、強気及び弱気(サイド)であってもよい。例示実施形態によると、残持ち高は、価格及び数量の双方を伝達する。 Electronic trading system 100 may further include an order book (not shown) accessible by core compute node 140-1. Core compute node 140-1 may be further configured to match trade orders for financial instruments (not shown) based on an executed electronic trade matching function. For example, core compute node 140-1 may be further configured to match trade orders for financial instruments using the electronic trade matching function. Core compute node 140-1 may be further configured to maintain a balance (not shown) of the financial instruments in the order book. A price discrepancy for the financial instruments may result from executing the electronic trade matching function. The balance may include a price discrepancy for the financial instruments. It should be understood that the balance can convey more information than quantity. For example, the balance may be bullish and bearish (side). According to an example embodiment, the balance conveys both price and quantity.

ゲートウェイ120-1はさらに、少なくとも1つの参加者デバイス(不図示)にサービスを提供し、ゲートウェイ120-1における着信メッセージ103の受信に応じて、メッセージ106をシーケンサ150-1及びコアコンピュートノード140-1に送信するように構成され得る。着信メッセージ103は、少なくとも1つの参加者デバイスによって発送される。シーケンサ150-1はさらに、固有順序識別子を用いてメッセージをマーク付けすることによって、又は受信したメッセージの表示を作成し、固有順序識別子を用いて表示をマーク付けし、マーク付けされた表示を送信することによって、順序マーク付きメッセージを生成するように構成され得る。マーク付けされる表示は、順序マーク付きメッセージであり得る。 Gateway 120-1 may further be configured to serve at least one participant device (not shown) and to transmit message 106 to sequencer 150-1 and core compute node 140-1 in response to receiving an incoming message 103 at gateway 120-1. The incoming message 103 is dispatched by at least one participant device. Sequencer 150-1 may further be configured to generate an order-marked message by marking the message with a unique order identifier or by creating a representation of the received message, marking the representation with the unique order identifier, and transmitting the marked representation. The marked representation may be an order-marked message.

例示実施形態によると、ゲートウェイ120-1は、以下にさらに開示する図1C、1D、3及び4の複数のゲートウェイなどの複数のゲートウェイのうちの所与のゲートウェイであり得る。また、コアコンピュートノード140-1は、以下にさらに開示する図1C、1D、3及び4の複数のコアコンピュートノードなどの複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり得る。 According to an example embodiment, gateway 120-1 may be a given gateway among a plurality of gateways, such as the plurality of gateways of Figures 1C, 1D, 3, and 4, further disclosed below. Also, core compute node 140-1 may be a given core compute node among a plurality of core compute nodes, such as the plurality of core compute nodes of Figures 1C, 1D, 3, and 4, further disclosed below.

図1Cは、ポイントツーポイントメッシュシステム122の例示実施形態のブロック図である。ポイントツーポイントメッシュシステム122は、複数のゲートウェイ120、複数のコアコンピュートノード140、及びシーケンサ150-1を含む。複数のゲートウェイ120の各ゲートウェイ120-1、120-2・・・120-gは、複数のコアコンピュートノード140の各コアコンピュートノード140-1、140-2・・・140-cにそれぞれの第1の直接接続、すなわち、第1の直接接続180-aを介して結合される。シーケンサ150-1は、複数のゲートウェイの各ゲートウェイにそれぞれの第2の直接接続、すなわち、第2の直接接続180-bを介して結合され、複数のコアコンピュートノードの各コアコンピュートノードにそれぞれの第3の直接接続、すなわち、第3の直接接続180-cを介して結合される。複数のゲートウェイ、複数のコアコンピュートノード、シーケンサ150-1、及びそれぞれの直接接続は、ポイントツーポイントメッシュシステム122の少なくとも一部分を形成する。 1C is a block diagram of an example embodiment of a point-to-point mesh system 122. The point-to-point mesh system 122 includes a plurality of gateways 120, a plurality of core compute nodes 140, and a sequencer 150-1. Each gateway 120-1, 120-2, ..., 120-g of the plurality of gateways 120 is coupled to a respective core compute node 140-1, 140-2, ..., 140-c of the plurality of core compute nodes 140 via a respective first direct connection, i.e., first direct connection 180-a. The sequencer 150-1 is coupled to each gateway of the plurality of gateways via a respective second direct connection, i.e., second direct connection 180-b, and is coupled to each core compute node of the plurality of core compute nodes via a respective third direct connection, i.e., third direct connection 180-c. The multiple gateways, the multiple core compute nodes, the sequencer 150-1, and their respective direct connections form at least a portion of the point-to-point mesh system 122.

ポイントツーポイントメッシュシステム122内では、複数のゲートウェイ120の各ゲートウェイは、そこから送信されるそれぞれのコンピュートノード宛てメッセージを複数のコアコンピュートノード140のうちの全てのコンピュートノード及びシーケンサ150-1に送信するように構成される。ポイントツーポイントメッシュシステム122内では、複数のコアコンピュートノード140の各コアコンピュートノードは、そこから送信されるそれぞれのゲートウェイ宛てメッセージを複数のゲートウェイ120のうちの全てのゲートウェイ及びシーケンサ150-1に送信するように構成される。ポイントツーポイントメッシュシステム122内では、シーケンサ150-1はさらに、それぞれのコンピュートノード宛てメッセージ又はそれぞれのゲートウェイ宛てメッセージの受信に応じて、それぞれの順序マーク付きメッセージを複数のゲートウェイ120及び複数のコアコンピュートノード140に送信するように構成される。 In the point-to-point mesh system 122, each gateway of the plurality of gateways 120 is configured to transmit its respective compute node-destined message to all of the plurality of core compute nodes 140 and to the sequencer 150-1. In the point-to-point mesh system 122, each core compute node of the plurality of core compute nodes 140 is configured to transmit its respective gateway-destined message to all of the plurality of gateways 120 and to the sequencer 150-1. In the point-to-point mesh system 122, the sequencer 150-1 is further configured to transmit its respective order-marked message to the plurality of gateways 120 and the plurality of core compute nodes 140 in response to receiving the respective compute node-destined message or the respective gateway-destined message.

複数のゲートウェイ120のうちの所与のゲートウェイによって送信されたそれぞれのコンピュートノード宛てメッセージは、複数のコアコンピュートノード140によって受信される同じメッセージである。複数のコアコンピュートノード140のうちの少なくとも2つのコンピュートノード140は、同じメッセージの受信に応じて応答メッセージを生成するように構成され得る。応答メッセージは、複数のコアコンピュートノードの中から所与のコアコンピュートノードにおいて受信され得る。所与のゲートウェイはさらに、同じメッセージの受信に応じて生成された応答メッセージのうちの所与の応答メッセージに基づいて行動をとるように構成され得る。所与の応答メッセージは、同じメッセージの受信に応じて生成された他の応答メッセージに相対して最初に所与のゲートウェイに到着し得る。所与のゲートウェイはさらに、所与の応答メッセージの後に到着する他の応答メッセージを無視するように構成され得る。そのような応答メッセージを、機能的に同等なメッセージということもある。機能的に同等なメッセージは、その機能的に同等なメッセージの受信者に同じ機能(例えば、単数又は複数のアクティビティ)を実行させる同じメッセージを表す。機能的に同等なメッセージは同じメッセージを表し、一部の実施形態では実際に同一であり得るが、他の実施形態では、機能的に同等なメッセージは、場合によっては、非限定的な例として異なるタイムスタンプなどの異なるメタデータ、異なるソース識別子などを含み得るため、必ずしも同一でなくてもよい。明瞭性の観点として、用語「機能的に同等なメッセージ」とは、その順序マーク付きメッセージの対応のものに関連する非順序マーク付きメッセージのことをいうものではない。そうではなく、一部の実施形態では同じ順序マーク付きメッセージを表す複数の順序マーク付きメッセージも存在し得るが、機能的に同等なメッセージとは、一般的に、同じ非順序マーク付きメッセージ表す複数の非順序マーク付きメッセージのことをいい、これにより、我々は機能的に同等な非順序マーク付きメッセージ又は機能的に同等な順序マーク付きメッセージのことをいう場合がある。以下の図1Eに関する記載は、2以上のそのような応答メッセージが機能的に同等でありかつ同じメッセージを表すことを受信者ノードがどのようにして判定し得るのかについての少なくとも1つの例を説明する。 Each compute node-destined message sent by a given gateway among the plurality of gateways 120 is the same message received by the plurality of core compute nodes 140. At least two compute nodes 140 among the plurality of core compute nodes 140 may be configured to generate a response message in response to receiving the same message. The response message may be received at a given core compute node among the plurality of core compute nodes. The given gateway may be further configured to take action based on a given response message among the response messages generated in response to receiving the same message. The given response message may arrive at the given gateway first relative to other response messages generated in response to receiving the same message. The given gateway may be further configured to ignore other response messages that arrive after the given response message. Such response messages may be referred to as functionally equivalent messages. Functionally equivalent messages refer to the same message that causes a recipient of the functionally equivalent message to perform the same function (e.g., one or more activities). Functionally equivalent messages represent the same message and may indeed be identical in some embodiments, although in other embodiments, functionally equivalent messages may not necessarily be identical, possibly including different metadata, such as, by way of non-limiting example, different timestamps, different source identifiers, etc. For clarity, the term "functionally equivalent message" does not refer to a non-order-marked message that is related to its order-marked message counterpart. Instead, although there may be multiple order-marked messages that represent the same order-marked message in some embodiments, functionally equivalent messages generally refer to multiple non-order-marked messages that represent the same non-order-marked message, and thus we may refer to functionally equivalent non-order-marked messages or functionally equivalent order-marked messages. The following description of FIG. 1E describes at least one example of how a recipient node may determine that two or more such response messages are functionally equivalent and represent the same message.

複数の機能的に同等なメッセージ(不図示)は、所与のゲートウェイにおいて、複数のコアコンピュートノード140、複数のシーケンサ150又はこれらの組合せの中から受信され得る。所与のゲートウェイはさらに、複数の機能的に同等なメッセージのうちの所与の機能的に同等なメッセージに基づいて行動をとるように構成されてもよく、所与の機能的に同等なメッセージは所与のゲートウェイに最初に到着したものである。所与のゲートウェイはさらに、所与の機能的に同等なメッセージの後に到着する複数の機能的に同等なメッセージのうちの他の機能的に同等なメッセージを無視するように構成され得る。そのようなメッセージは、「機能的に」同等と理解され得る。なぜなら、複数のコアコンピュートノードにおいて受信された同じメッセージに対して、複数のコアコンピュートノードの各々が独立して応答メッセージを生成するので、それぞれの応答の各々は厳密に同一ではなくても同じ結果を機能的にもたらすからである。例えば、そのような応答メッセージは、そこに含まれる異なる発信元コア識別子を少なくとも有して、応答を送信している特定のコアコンピュートノードを一意的に識別し得る。 Multiple functionally equivalent messages (not shown) may be received at a given gateway from multiple core compute nodes 140, multiple sequencers 150, or a combination thereof. A given gateway may be further configured to take action based on a given functionally equivalent message from the multiple functionally equivalent messages, where the given functionally equivalent message is the first to arrive at the given gateway. A given gateway may be further configured to ignore other functionally equivalent messages from the multiple functionally equivalent messages that arrive after the given functionally equivalent message. Such messages may be understood to be "functionally" equivalent because, for the same message received at multiple core compute nodes, each of the multiple core compute nodes independently generates a response message, so that each respective response achieves the same functional result, even if it is not exactly identical. For example, such response messages may have at least a different originating core identifier included therein to uniquely identify the particular core compute node sending the response.

例示実施形態によると、この少なくとも2つの「機能的に同等なメッセージ」は、ゲートウェイ/シーケンサからコアコンピュートノード140-1などの所与のコアコンピュートノードに到着し得る。所与のコアコンピュートノードは、そのような機能的に同等なメッセージのうちの最初に到着したメッセージのみを処理するように構成され得る。このように、複数の機能的に同等なメッセージは、所与のコンピュートノードにおいて、複数のゲートウェイ、複数のシーケンサ又はこれらの組合せの中から受信され得る。所与のコンピュートノードはさらに、複数の機能的に同等なメッセージのうちの所与の機能的に同等なメッセージに基づいて行動をとるように構成されてもよく、所与の機能的に同等なメッセージは所与のコンピュートノードに最初に到着したものである。所与のコンピュートノードはさらに、所与の機能的に同等なメッセージの後に到着する複数の機能的に同等なメッセージのうちの他の機能的に同等なメッセージを無視するように構成され得る。 According to an example embodiment, the at least two "functionally equivalent messages" may arrive at a given core compute node, such as core compute node 140-1, from a gateway/sequencer. The given core compute node may be configured to process only the first of such functionally equivalent messages to arrive. In this manner, multiple functionally equivalent messages may be received at a given compute node from multiple gateways, multiple sequencers, or a combination thereof. The given compute node may be further configured to take action based on a given functionally equivalent message of the multiple functionally equivalent messages, the given functionally equivalent message being the first to arrive at the given compute node. The given compute node may be further configured to ignore other functionally equivalent messages of the multiple functionally equivalent messages that arrive after the given functionally equivalent message.

このように、同じメッセージを表す複数のコンピュートノード宛てメッセージは、コンピュートノード140-1などの所与のコンピュートノードにおいて複数のゲートウェイ120の中から受信され得る。これは、電子取引システム100が高可用性(HA)に対して構成される場合に当てはまる場合がある。例えば、参加者デバイスからの冗長フローが複数のゲートウェイの間で受信されてもよく、このように、同じメッセージを表す複数のコンピュートノード宛てメッセージが、そのゲートウェイによってコンピュートノード140に送信され得る。例示実施形態によると、所与のコアコンピュートノードは複数のコンピュートノード宛てメッセージのうちの所与のコンピュートノード宛てメッセージに基づいて行動をとるように構成されてもよく、所与のコンピュートノード宛てメッセージは同じメッセージを表す複数のコンピュートノードメッセージのうちの他のコンピュートノード宛てメッセージに相対して最初に所与のコンピュートノードに到着したものであってもよい。所与のコアコンピュートノードはさらに、所与のコンピュートノード宛てメッセージの後に到着する他のコンピュートノード宛てメッセージを無視するように構成され得る。そのような同じメッセージを表す複数のコンピュートノード宛てメッセージを、機能的に同等なメッセージということもある。以下の図1Eに関する記載は、2以上のそのようなコンピュートノード宛てメッセージが機能的に同等でありかつ同じメッセージを表すことを受信者ノードがどのようにして判定し得るのかについての少なくとも1つの例を説明する。 In this manner, multiple compute node-destined messages representing the same message may be received from multiple gateways 120 at a given compute node, such as compute node 140-1. This may be the case when electronic trading system 100 is configured for high availability (HA). For example, redundant flows from participant devices may be received between multiple gateways, and thus multiple compute node-destined messages representing the same message may be transmitted by the gateways to compute node 140. According to an example embodiment, a given core compute node may be configured to take action based on a message destined for the given compute node among the multiple compute node-destined messages, which may be the first to arrive at the given compute node relative to other compute node-destined messages among the multiple compute node messages representing the same message. A given core compute node may further be configured to ignore messages destined for other compute nodes that arrive after the message destined for the given compute node. Such messages destined for multiple compute nodes that represent the same message may be referred to as functionally equivalent messages. The following description of Figure 1E describes at least one example of how a recipient node may determine that two or more such messages destined for a compute node are functionally equivalent and represent the same message.

電子取引システム100は、複数のシーケンサのうちの少なくとも1つのシーケンサが、以下に開示する図1Dのディザスタリカバリサイト155など、スタンバイ電子取引システムを含むディザスタリカバリサイトに通信可能に結合され得るアクティブな電子取引システムであり得る。 The electronic trading system 100 may be an active electronic trading system in which at least one of the plurality of sequencers may be communicatively coupled to a disaster recovery site that includes a standby electronic trading system, such as disaster recovery site 155 of FIG. 1D disclosed below.

図1Dは、電子取引システムの他の例示実施形態のブロック図である。図1Dは、多数のゲートウェイ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を介して、相互に直接接続される。 FIG. 1D is a block diagram of another example embodiment of an electronic trading system. FIG. 1D illustrates an example electronic trading system 100 that includes multiple gateways 120-1, 120-2, ..., 120-g (collectively referred to as gateways 120), a set of core compute nodes 140-1, 140-2, ..., 140-c (collectively referred to as core compute nodes 140 or compute nodes 140), and one or more sequencers 150-1, 150-2, ..., 150-s (collectively referred to as sequencers 150). Accordingly, in some embodiments, gateways 120, core compute nodes 140, and sequencers 150 are considered nodes in electronic trading system 100. As described in more detail below, in one embodiment, gateways 120, compute nodes 140, and sequencers 150 are directly connected to one another, preferably via a low-latency, dedicated connection 180.

電子取引システム100の記載に関連する用語「ピア(peer)」とは、電子取引システム100において同じ機能を一般にサービスを提供する他のデバイス(例えば、「ゲートウェイ」対「コアコンピュートノード」対「シーケンサ」)をいう。例えば、ゲートウェイ120-2、・・・、120-gはゲートウェイ120-1のピアであり、コアコンピュートノード140-2、・・・、140-cはコアコンピュートノード140-1のピアであり、シーケンサ150-2、・・・、150-sはシーケンサ150-1のピアである。 The term "peer" in the context of describing electronic trading system 100 refers to other devices that generally serve the same function in electronic trading system 100 (e.g., "gateway" vs. "core compute node" vs. "sequencer"). For example, gateways 120-2, ..., 120-g are peers of gateway 120-1, core compute nodes 140-2, ..., 140-c are peers of core compute node 140-1, and sequencers 150-2, ..., 150-s are peers of sequencer 150-1.

システム100の記載に関連する用語「アクティブ」及び「スタンバイ」とは、システム/構成要素の高可用性(HA)ロール/状態/モードをいう場合がある。一般に、スタンバイシステム/構成要素は、電源が投入されるとアクティブなシステム/構成要素によって実行される機能を引継ぎ可能となる冗長(バックアップ)システム/構成要素である。そのようなスイッチオーバー/フェイルオーバー、すなわち、スタンバイロール/状態/モードからアクティブロール/状態/モードへの切換えは、非限定的な例として、現在アクティブなシステム/構成要素の故障に応じて自動的に実行され得る。 The terms "active" and "standby" in connection with describing system 100 may refer to the high availability (HA) role/state/mode of a system/component. Generally, a standby system/component is a redundant (backup) system/component that is capable of taking over the functions performed by an active system/component when powered on. Such a switchover/failover, i.e., switching from a standby role/state/mode to an active role/state/mode, may be performed automatically in response to a failure of the currently active system/component, as a non-limiting example.

電子取引システム100は、1以上の参加者コンピューティングデバイス130-1、130-2、・・・、130-p(まとめて参加者デバイス130)からの取引注文を処理し、関連情報をそれに提供する。参加者デバイス130は、電子取引システム100と相互作用するものであり、1以上のパーソナルコンピュータ、タブレット、スマートフォン、サーバ又は取引注文情報を表示及び受信するように構成された他のデータ処理デバイスであり得る。参加者デバイス130は、グラフィカルユーザインターフェース(GUI)を介して人間によって操作されてもよいし、物理又は仮想データ処理プラットフォーム上で稼働する高速自動化取引方法を介して操作されてもよい。各参加者デバイス130は、ゲートウェイ120によって確立された接続を介して電子取引システム100とメッセージを交換し得る(すなわち、それに対してメッセージを送受信し得る)。図1Dは各参加者デバイス130がゲートウェイ120への単一の接続を介して電子取引システム100に接続されるものとして示すが、参加者デバイス130は1以上のゲートウェイデバイス120への複数の接続を介して電子取引システム100に接続されてもよいことが理解されるべきである。 The electronic trading system 100 processes trade orders and provides related information to one or more participant computing devices 130-1, 130-2, ..., 130-p (collectively, participant devices 130). The participant devices 130 interact with the electronic trading system 100 and may be one or more personal computers, tablets, smartphones, servers, or other data processing devices configured to display and receive trade order information. The participant devices 130 may be operated by humans via a graphical user interface (GUI) or via high-speed automated trading methods running on a physical or virtual data processing platform. Each participant device 130 may exchange messages with (i.e., send and receive messages from) the electronic trading system 100 via a connection established by the gateway 120. While FIG. 1D illustrates each participant device 130 as connected to the electronic trading system 100 via a single connection to the gateway 120, it should be understood that a participant device 130 may be connected to the electronic trading system 100 via multiple connections to one or more gateway devices 120.

なお、各ゲートウェイ120-1が単一の参加者デバイス130にサービスを提供し得るが、通常は複数の参加者デバイス130にサービスを提供する。 Note that each gateway 120-1 may serve a single participant device 130, but typically serves multiple participant devices 130.

コンピュートノード140-1、140-2、・・・、140-c(ここではマッチングエンジン140又はコンピュートエンジン140ともいう)は、上述のマッチング機能を提供し、さらに1以上の参加者デバイス130に配信される発信メッセージを生成してもよい。各コンピュートノード140は、高性能データプロセッサであり、通常は、1以上の注文控え帳145-1、145-2、・・・、145-bを検索及び保持する1以上のデータ構造体を保持する。注文控え帳145-1は、例えば、コアコンピュートノード140-1が責任を担う各商品に対して保持され得る。コンピュートノード140の1以上及び/又はゲートウェイ120の1以上が、マーケットデータフィード147を提供してもよい。マーケットデータフィード147は、参加者デバイス130又は他の任意の適宜のコンピューティングデバイスであり得る参加者にブロードキャスト(例えば、マルチキャスト)されてもよい。 Compute nodes 140-1, 140-2, ..., 140-c (also referred to herein as matching engines 140 or compute engines 140) provide the matching functionality described above and may also generate outgoing messages that are distributed to one or more participant devices 130. Each compute node 140 is a high-performance data processor and typically maintains one or more data structures that search and maintain one or more order books 145-1, 145-2, ..., 145-b. An order book 145-1 may be maintained, for example, for each product for which core compute node 140-1 is responsible. One or more of the compute nodes 140 and/or one or more of the gateways 120 may provide a market data feed 147. The market data feed 147 may be broadcast (e.g., multicast) to participants, which may be participant devices 130 or any other suitable computing devices.

コアコンピュートノード140によって生成された一部の発信メッセージは、同期したものであり、すなわち、対応する着信「新規注文」メッセージに応じた発信「承認メッセージ」又は「実行メッセージ」など、1以上の参加者デバイス130から受信された1以上の着信メッセージに応じて1つのコアコンピュートノード140によって直接生成されてもよい。ただし、一部の実施形態では、少なくとも一部の発信メッセージは非同期のものであり、取引システム100によって開始されてもよく、例えば、特定の「未承諾」取消メッセージ及び「取引中止」又は「取引破綻」メッセージであり得る。 Some outgoing messages generated by core compute nodes 140 may be synchronous, i.e., generated directly by one core compute node 140 in response to one or more incoming messages received from one or more participant devices 130, such as an outgoing "approval message" or "execution message" in response to a corresponding incoming "new order" message. However, in some embodiments, at least some outgoing messages may be asynchronous and initiated by trading system 100, such as, for example, certain "unsolicited" cancellation messages and "trade stop" or "trade failure" messages.

電子取引システム100などの分散コンピューティング環境は、複数のコンピュートノード140上で並列動作する複数のマッチングエンジンを用いて構成可能である。 A distributed computing environment such as the electronic trading system 100 can be configured with multiple matching engines running in parallel on multiple compute nodes 140.

シーケンサ150は、任意の順位依存動作の適宜の順序が維持されることを確実にする。着信メッセージに対する動作が順位を外れて実行されないことを確実にするために、1以上のゲートウェイ120において受信された着信メッセージ、例えば、参加者デバイス130の1つからの新規取引注文メッセージは、通常は、その後に少なくとも1つのシーケンサ150(例えば、単一の現在アクティブなシーケンサ、及び場合によっては1以上のスタンバイシーケンサ)を通過することになり、着信メッセージは(複数のシーケンサが存在する場合には単一の現在アクティブなシーケンサによって)順序識別子でマーク付けされる。その識別子は、メッセージ間で相対順位付けを決定するとともに電子取引システム100の全体を通じてメッセージを一意的に識別するために、分散システム100(例えば、電子取引システム100)の全体を通じて後続の処理の過程で使用される固有の単調増加する値であり得る。一部の実施形態では、順序識別子は、メッセージがシーケンサに到着した順位(すなわち、順序)の表示であり得る。例えば、順序識別子は、到着メッセージ毎にシーケンサによって固定間隔に従って単調的に増分又は減分される値であってもよく、例えば、順序識別子は、到着メッセージ毎に1ずつ増分されてもよい。ただし、順序識別子は、固有ではあるが、単調増加又は減少する値に限られないことが理解されるべきである。一部の実施形態では、当初のマーク付けなしメッセージ及び順序マーク付きメッセージは、メッセージのマーク付きバージョンに含まれる順序識別子の値を除いて、基本的には同一となり得る。マーク付き着信メッセージ、すなわち、順序マーク付きメッセージは、順序付けられると、通常はその後に、潜在的に順位依存の処理をメッセージに対して実行するようにシーケンサ150によって他の下流側コンピュートノード140に転送される。したがって、電子取引システム100の全体を通じてメッセージを一意的に識別することに加えて、シーケンサ150によって割り当てられる順序識別子も、電子取引システム100における他のマーク付きメッセージの間で各マーク付きメッセージの相対順位付けを決定し得る。 The sequencer 150 ensures that the proper ordering of any order-dependent operations is maintained. To ensure that operations on incoming messages are not performed out of order, incoming messages received at one or more gateways 120, such as a new trade order message from one of the participant devices 130, typically subsequently pass through at least one sequencer 150 (e.g., a single currently active sequencer and possibly one or more standby sequencers), and the incoming message is marked with an order identifier (by the single currently active sequencer, if multiple sequencers are present). The identifier may be a unique, monotonically increasing value used during subsequent processing throughout the distributed system 100 (e.g., the electronic trading system 100) to determine relative ordering among messages and to uniquely identify messages throughout the electronic trading system 100. In some embodiments, the order identifier may be an indication of the order (i.e., sequence) in which the message arrived at the sequencer. For example, the order identifier may be a value that is monotonically incremented or decremented by the sequencer according to a fixed interval for each arriving message; e.g., the order identifier may be incremented by one for each arriving message. However, it should be understood that the order identifier, while unique, is not limited to being a monotonically increasing or decreasing value. In some embodiments, the original unmarked message and the order-marked message may be essentially identical, except for the order identifier value contained in the marked version of the message. Once ordered, the marked incoming messages, i.e., the order-marked messages, are typically then forwarded by the sequencer 150 to other downstream compute nodes 140 to potentially perform order-dependent processing on the messages. Thus, in addition to uniquely identifying messages throughout the electronic trading system 100, the order identifiers assigned by the sequencer 150 may also determine the relative ranking of each marked message among other marked messages in the electronic trading system 100.

このように、順序識別子が採用され得る他の目的とは対照的に、ここに開示される固有順序識別子は、電子取引メッセージ処理のための確定的な順位(すなわち、順序)を確実にするために使用され得る。固有順序識別子は、電子取引システム内の他の取引メッセージに対する所与の電子取引メッセージの処理について指示的な固有の確定的な順位付け(すなわち、順序)を表す。例示実施形態によると、順序識別子は、非限定的な例として図1Eに関して以下にさらに開示するように、メッセージの順序IDフィールド110-14に追加され得る。 Thus, as opposed to other purposes for which sequence identifiers may be employed, the unique sequence identifiers disclosed herein may be used to ensure a deterministic ranking (i.e., order) for electronic transaction message processing. The unique sequence identifier represents a unique, deterministic ranking (i.e., order) that is indicative of the processing of a given electronic transaction message relative to other transaction messages within an electronic transaction system. According to an example embodiment, the sequence identifier may be added to the sequence ID field 110-14 of a message, as further disclosed below with respect to FIG. 1E, by way of non-limiting example.

一部の実施形態では、メッセージは、他の方向に、すなわち、コアコンピュートノード140から参加者デバイス130の1以上に、ゲートウェイ120の1つ以上を通過して流れてもよい。そのような1つのコアコンピュートノード140によって生成された発信メッセージも、順位依存(すなわち、順序-順位依存)であってもよく、したがって、さらに通常は、順序識別子を用いてマーク付けされるシーケンサ150を最初に通過し得る。そして、シーケンサ150は、マーク付き応答メッセージを、適切に確定的な順位で参加者デバイス130に伝達するためにゲートウェイ120に転送してもよい。 In some embodiments, messages may flow in the other direction, i.e., from a core compute node 140 to one or more of the participant devices 130, passing through one or more of the gateways 120. Outgoing messages generated by one such core compute node 140 may also be order-dependent (i.e., sequence-order dependent) and therefore, more typically, may first pass through a sequencer 150 that is marked with an order identifier. The sequencer 150 may then forward the marked response messages to the gateway 120 for delivery to the participant devices 130 in the appropriate deterministic order.

固有順序番号を生成してそれによってメッセージ又はその表示をマーク付けするための、すなわち、順序マーク付きメッセージを生成するためのシーケンサ150の使用は、動作の正しい順位付けが分散システム、すなわち、電子取引システム100の全体を通じて維持されることを確実にし、それにかかわらず、コンピュートノード又はコンピュートノード140の組はメッセージを処理する。このアプローチは「状態確定性」を与え、例えば、システムの状態全体が(場合によっては、ディザスタリカバリサイトなど、他のいずれかの場所で)確定的かつ再現可能なものとなり、フォールトトレランス、高可用性及び災害復旧可能性を与える。 The use of sequencer 150 to generate and mark messages or representations thereof with unique sequence numbers, i.e., to generate sequence-marked messages, ensures that the correct ordering of operations is maintained throughout the distributed system, i.e., electronic trading system 100, regardless of which compute node or set of compute nodes 140 processes messages. This approach provides "state determinism," i.e., the entire state of the system is deterministic and reproducible (possibly elsewhere, such as a disaster recovery site), providing fault tolerance, high availability, and disaster recoverability.

生成ノード(すなわち、例えば、新たなメッセージを生成することによって及び/又は参加者デバイス130から受信したメッセージを転送することによって、新たなメッセージを電子取引システム100に導入するノード)及びそのピアノードが、そのメッセージに割り当てられた順序番号を受信することも重要となり得る。それが生成したメッセージに対する順序番号を受信することは、メッセージをそれらの順序番号に従って順に処理するためだけでなく、ノードによって生成されたメッセージを、電子取引システム100の残りの部分全体を通じて使用されるメッセージ順序識別子に相関付けるためにも、生成ノード及びそのピアノードに対して有用となり得る。生成ノードによって電子取引システムに導入されるようなメッセージのマークなしバージョンと、シーケンサによって出力される同じメッセージの順序マーク付きバージョンとの間のそのような相関は、図1Eに関連してさらに後述するように、メッセージの両バージョンにおける識別情報を介して行われ得る。電子取引システム100内で生成される後続のメッセージは、それ自体の順序番号も割り当てられているが、それでも関連する先行メッセージの1以上の順序番号を基準とし得る。したがって、ノードは、ノード自体が以前に生成したメッセージを(順序番号によって)迅速に参照する必要がある場合がある。これは、例えば、ノードが生成したメッセージの順序番号が後続のメッセージにおいて基準とされているためである。 It may also be important for a producing node (i.e., a node that introduces a new message into the electronic trading system 100, e.g., by generating a new message and/or forwarding a message received from a participant device 130) and its peer nodes to receive a sequence number assigned to that message. Receiving a sequence number for a message it generates may be useful for the producing node and its peer nodes not only to process the messages in order according to their sequence numbers, but also to correlate messages generated by the node with message sequence identifiers used throughout the rest of the electronic trading system 100. Such correlation between an unmarked version of a message as introduced into the electronic trading system by the producing node and an order-marked version of the same message output by the sequencer may be made via identifying information in both versions of the message, as described further below in connection with FIG. 1E. Subsequent messages generated within the electronic trading system 100 may also be assigned their own sequence numbers, but may still reference one or more sequence numbers of related, preceding messages. Thus, a node may need to quickly reference (by sequence number) messages it previously generated. This is because, for example, the sequence number of the message generated by the node is used as the reference for subsequent messages.

一部の実施形態では、生成ノードは、最初にメッセージをシーケンサ150に送信し、生成ノードがそのメッセージを電子取引システム100における他のノードに転送する前にシーケンサからメッセージに対する順序番号を受信するように待機してもよい。 In some embodiments, the producing node may first send a message to the sequencer 150 and wait to receive a sequence number for the message from the sequencer before forwarding the message to other nodes in the electronic trading system 100.

代替の例示実施形態では、電子取引システム100内で不要なレイテンシーの増加を加え得る少なくとも1つのホップを回避するために、順序付けなしメッセージを生成ノードから受信した後、シーケンサ150はメッセージの順序付きバージョン(すなわち、順序マーク付きメッセージ)を宛先ノードに送信するだけでなく、メッセージの順序付けバージョンを実質的に同時に送信ノード及びそのピアに返送してもよい。例えば、シーケンサ150は、ゲートウェイ120からコアコンピュートノード140に送信された着信メッセージに順序番号を割り当てた後に、メッセージの順序付けバージョンをコアコンピュートノード140に転送するだけでなく、当該メッセージの順序付けバージョンをゲートウェイ120-1及び他のゲートウェイ120に返送してもよい。したがって、コアコンピュートノード140において生成されたいずれかの後続メッセージが当該順序番号を基準とする場合、任意のゲートウェイ120は、ゲートウェイ120-1によって当初生成された関連するメッセージをその順序番号によって容易に識別することができる。 In an alternative exemplary embodiment, to avoid at least one hop that may add unnecessary latency within electronic trading system 100, after receiving an unordered message from the generating node, sequencer 150 may not only send an ordered version of the message (i.e., an order-marked message) to the destination node, but may also substantially simultaneously return the ordered version of the message to the sending node and its peers. For example, after sequencer 150 assigns a sequence number to an incoming message sent from gateway 120 to core compute node 140, sequencer 150 may not only forward the ordered version of the message to core compute node 140, but may also return the ordered version of the message to gateway 120-1 and other gateways 120. Thus, any gateway 120 can easily identify the associated message originally generated by gateway 120-1 by its sequence number when any subsequent messages generated at core compute node 140 are based on that sequence number.

同様に、一部の更なる実施形態では、コアコンピュートノード140によって生成されてそこからゲートウェイ120に送信され、シーケンサ150によって順序付けされた発信メッセージの順序付けバージョンは、シーケンサ150によってゲートウェイ120に転送されるとともにコアコンピュートノード140に返送されてもよい。 Similarly, in some further embodiments, an ordered version of an outgoing message generated by core compute node 140 and sent therefrom to gateway 120 and ordered by sequencer 150 may be forwarded by sequencer 150 to gateway 120 and sent back to core compute node 140.

一部の実施形態は、図4に関して以下にさらに開示するように、例えば、第1のシーケンサが故障した場合に他のシーケンサが利用可能となることを確実にするために、高可用性のための複数のシーケンサ150を含んでいてもよい。複数のシーケンサ150(例えば、現在アクティブなシーケンサ150-1及び1以上のスタンバイシーケンサ150-2、・・・、150-s)を有する実施形態について、現在アクティブなシーケンサ150-1は、シーケンサ150-1を通過した全てのメッセージのシステム状態ログ(不図示)及びメッセージの関連する順序番号を保持し得る。このシステム状態ログは、連続的又は周期的にスタンバイシーケンサに送信され、それらに必須システム状態を提供して必要に応じてそれらがアクティブなシーケンサを引き継ぐことを可能としてもよい。あるいは、システム状態ログは、複数のシーケンサ150にアクセス可能なデータストアに記憶されてもよい。 Some embodiments may include multiple sequencers 150 for high availability, for example, to ensure that other sequencers are available if the first sequencer fails, as further disclosed below with respect to FIG. 4. For embodiments with multiple sequencers 150 (e.g., a currently active sequencer 150-1 and one or more standby sequencers 150-2, ..., 150-s), the currently active sequencer 150-1 may maintain a system status log (not shown) of all messages passed through sequencer 150-1 and the messages' associated sequence numbers. This system status log may be continuously or periodically sent to standby sequencers, providing them with the necessary system state to enable them to take over for the active sequencer if necessary. Alternatively, the system status log may be stored in a data store accessible to the multiple sequencers 150.

システム状態ログは、ディザスタリカバリサイト155におけるスタンバイ複製電子取引システム(詳細には図示せず)において1以上のシーケンサに連続的又は周期的に複製されてもよく、それにより、電子取引システム100のプライマリサイトが破局故障に陥った場合に、電子取引はディザスタリカバリサイト155において厳密に同じ状態で継続可能となる。 The system state log may be continuously or periodically replicated to one or more sequencers in a standby replica electronic trading system (not shown in detail) at disaster recovery site 155, so that in the event of a catastrophic failure of the primary site of electronic trading system 100, electronic trading can continue in exactly the same state at disaster recovery site 155.

例示実施形態によると、複数のシーケンサのうちの現在アクティブなシーケンサが、システム状態ログをデータストア(不図示)に記憶し得る。データストアは、図1Dに関して以下にさらに開示するシーケンサ全域共有ネットワーク182-sなどの共有シーケンサネットワークを介して複数のシーケンサにアクセス可能となり得る。複数のシーケンサのうちの所与のシーケンサがその役割(状態)をスタンバイからアクティブに切り換える場合、当該シーケンサはシステム状態ログをデータストアから取得して状態をそれまでのアクティブなシーケンサの状態と同期させ得る。 According to an example embodiment, a currently active sequencer of the plurality of sequencers may store a system state log in a data store (not shown). The data store may be accessible to the plurality of sequencers via a shared sequencer network, such as sequencer-wide shared network 182-s, further disclosed below with respect to FIG. 1D. When a given sequencer of the plurality of sequencers switches its role (state) from standby to active, it may retrieve the system state log from the data store and synchronize its state with the state of the previously active sequencer.

一部の実施形態では、システム状態ログは、シーケンサの1以上によって及び/又は電子取引システム100における1以上の他のノードによって実施され得るドロップコピーサービス152に提供されてもよい。ドロップコピーサービス152は、例えば、参加者デバイス130を介して接続され得る規制当局及び/又はクライアントに配信され得る、電子取引システム100を通じた日次の取引アクティビティの記録を提供してもよい。代替の実施形態では、ドロップコピーサービス152は、ゲートウェイ120の1以上において実施されてもよい。またさらに、システム状態ログを参照することに加えて又はそれに代えて、ドロップコピーサービス152は、電子取引システム100の全体を通じて送信される着信及び発信メッセージの内容に基づいて取引アクティビティの記録を提供してもよい。例えば、一部の実施形態では、ドロップコピーサービス152を実施するゲートウェイ120は、電子取引システム100の全体を通じて交換される全てのメッセージをシーケンサ150から(並びに/又はコアコンピュートノード140及び他のゲートウェイ120から)受信し得る。ドロップコピーサービス152から日次の取引アクティビティの記録を受信するように構成された参加者デバイス130は、必ずしも取引注文を電子取引システム100のマッチング機能に送信したりそれを利用したりしなくてもよい。 In some embodiments, the system state log may be provided to a drop copy service 152, which may be implemented by one or more of the sequencers and/or by one or more other nodes in the electronic trading system 100. The drop copy service 152 may provide a record of daily trading activity throughout the electronic trading system 100, which may be distributed, for example, to regulatory authorities and/or clients, which may be connected via participant devices 130. In alternative embodiments, the drop copy service 152 may be implemented in one or more of the gateways 120. Still further, in addition to or instead of referencing the system state log, the drop copy service 152 may provide a record of trading activity based on the content of incoming and outgoing messages sent throughout the electronic trading system 100. For example, in some embodiments, the gateway 120 implementing the drop copy service 152 may receive all messages exchanged throughout the electronic trading system 100 from the sequencer 150 (and/or from the core compute nodes 140 and other gateways 120). Participant devices 130 configured to receive daily trading activity records from the drop copy service 152 do not necessarily transmit trading orders to or utilize the matching functionality of the electronic trading system 100.

参加者デバイス130とゲートウェイ120の間で交換されるメッセージは、金融取引に使用され得る任意の適宜のプロトコル(便宜上「金融取引プロトコル」という)に従うものとする。例えば、メッセージは、カスタムプロトコル、又はバイナリプロトコル(Nasdaq OUCH及びNYSE UTPなど)及びテキストベースのプロトコル(NYSE FIX CCGなど)の双方を含む確立された標準プロトコルに従って交換され得る。一部の実施形態では、電子取引システム100は、複数のプロトコルを同じゲートウェイ120において同時に含む複数の金融取引プロトコルに従って同時に交換メッセージをサポートし得る。例えば、参加者デバイス130-1、130-2及び130-3は、それぞれ、Nasdaq Ouch、NYSE UTP及びNYSE FIX CCGに従って、取引接続を同時に確立している場合もあれば、ゲートウェイ120-1とメッセージを交換している場合もある。 Messages exchanged between participant devices 130 and gateway 120 may conform to any suitable protocol (for convenience, referred to as a "financial transaction protocol") that may be used for financial transactions. For example, messages may be exchanged according to custom protocols or established standard protocols, including both binary protocols (such as Nasdaq Ouch and NYSE UTP) and text-based protocols (such as NYSE FIX CCG). In some embodiments, electronic trading system 100 may support the simultaneous exchange of messages according to multiple financial transaction protocols, including multiple protocols, simultaneously on the same gateway 120. For example, participant devices 130-1, 130-2, and 130-3 may simultaneously establish trading connections and exchange messages with gateway 120-1 according to Nasdaq Ouch, NYSE UTP, and NYSE FIX CCG, respectively.

またさらに、一部の実施形態では、ゲートウェイ120は、参加者デバイス130から受信した金融取引プロトコルに従うメッセージを、電子取引システム100内のノード間でメッセージを交換するために使用される標準化(例えば、規格化)メッセージフォーマットに翻訳してもよい。標準化取引フォーマットは、既存のプロトコルであってもよいし、一般的には、参加者デバイス130とメッセージを交換するのに使用されるいずれの金融取引プロトコルとも異なるサイズ及びデータフォーマットのものであってもよい。例えば、標準化取引フォーマットは、参加者デバイス130からゲートウェイ120において受信された当初の着信メッセージの金融取引プロトコルと比較した場合、場合によっては1以上の追加のフィールド又はパラメータを含んでいてもよく、1以上のフィールド又はパラメータを省略してもよく、並びに/又は標準化フォーマットにおけるメッセージの各フィールド若しくはパラメータは参加者デバイス130からゲートウェイ120において受信される対応するメッセージとは異なるデータタイプ若しくはサイズのものであってもよい。同様に、逆方向では、ゲートウェイ120は、電子取引システム100によって標準化フォーマットにおいて生成された発信メッセージを、ゲートウェイ120と通信するのに参加者デバイス130によって使用される1以上の金融取引プロトコルのフォーマットのメッセージに翻訳し得る。 Furthermore, in some embodiments, the gateway 120 may translate messages conforming to a financial transaction protocol received from a participant device 130 into a standardized (e.g., standardized) message format used to exchange messages between nodes in the electronic trading system 100. The standardized transaction format may be an existing protocol and may generally be of a different size and data format than any of the financial transaction protocols used to exchange messages with the participant device 130. For example, the standardized transaction format may optionally include one or more additional fields or parameters, or omit one or more fields or parameters, when compared to the financial transaction protocol of the original incoming message received at the gateway 120 from the participant device 130, and/or each field or parameter of the message in the standardized format may be of a different data type or size than the corresponding message received at the gateway 120 from the participant device 130. Similarly, in the reverse direction, the gateway 120 may translate outgoing messages generated in a standardized format by the electronic trading system 100 into messages in the format of one or more financial transaction protocols used by the participant device 130 to communicate with the gateway 120.

図1Eは、以上に開示した電子取引システム100においてノード間で交換される取引メッセージなどの取引メッセージについてのメッセージフォーマット110のフィールドの例示実施形態の表である。図1Eの例示実施形態では、メッセージフォーマット110は、それらが電子取引システム100内のノード間で交換される場合に、取引メッセージの内部的な(すなわち、電子取引システム100内での)表示のために使用されることが意図された標準化メッセージフォーマットである。この例示実施形態では、ゲートウェイ120は、参加者130と電子取引システム100との間でメッセージを交換し、当該メッセージを、参加者130によって使用される1以上の金融取引プロトコルによって指定されるフォーマットと、電子取引システム100におけるノード間で使用される標準化取引フォーマットとの間でメッセージを翻訳する。フィールド110-1~110-17は非限定的な例のためのものであること、メッセージフォーマット110はより多数の、より少数の又は異なるフィールドを含み得ること、及びそのようなフィールドの順は図1Eに示すものに限られないことが理解されるべきである。 FIG. 1E is a table of an example embodiment of fields of a message format 110 for a transaction message, such as a transaction message exchanged between nodes in the electronic trading system 100 disclosed above. In the example embodiment of FIG. 1E, the message format 110 is a standardized message format intended to be used for internal (i.e., within the electronic trading system 100) representation of transaction messages as they are exchanged between nodes in the electronic trading system 100. In this example embodiment, the gateway 120 exchanges messages between the participant 130 and the electronic trading system 100 and translates the messages between a format specified by one or more financial transaction protocols used by the participant 130 and the standardized transaction format used between nodes in the electronic trading system 100. It should be understood that fields 110-1 through 110-17 are for non-limiting example purposes, that the message format 110 may include more, fewer, or different fields, and that the order of such fields is not limited to that shown in FIG. 1E.

メッセージフォーマット110におけるフィールドは本例では単一のメッセージフォーマットで示されているが、それらは複数のメッセージフォーマットに分散され、又はレイヤードプロトコルにカプセル化されてもよい。例えば、他の実施形態では、メッセージフォーマット110におけるフィールドの一部の組は、メッセージフォーマット110の他のフィールドをメッセージペイロードにカプセル化する、レイヤードプロトコルにおけるヘッダ、トレイラー又は拡張フィールドの部分として含まれてもよい。一部の例示実施形態によると、メッセージフォーマット110は、限定することなく、IPデータグラム、UDPデータグラム、TCPパケットのそれぞれのペイロード部分を含む他のメッセージフォーマット、又は非限定的な例として、イーサネットデータフレームフォーマットなどのメッセージデータフレームフォーマット、若しくはInfiniBand、Universal Serial Bus(USB)、PCI Express(PCI-e)及びHigh-Definition Multimedia Interface(HDMI)を含む他のデータフレームフォーマットの、ペイロード(データ)部分にカプセル化されたデータの1以上のフィールドを規定し得る。 While the fields in message format 110 are shown in a single message format in this example, they may be distributed across multiple message formats or encapsulated in a layered protocol. For example, in other embodiments, some sets of fields in message format 110 may be included as part of a header, trailer, or extension field in a layered protocol that encapsulates other fields of message format 110 in the message payload. According to some example embodiments, message format 110 may define one or more fields of data encapsulated in the payload (data) portion of other message formats, including, without limitation, the respective payload portions of IP datagrams, UDP datagrams, and TCP packets, or message data frame formats such as, by way of non-limiting example, Ethernet data frame formats, or other data frame formats, including InfiniBand, Universal Serial Bus (USB), PCI Express (PCI-e), and High-Definition Multimedia Interface (HDMI).

メッセージフォーマット110は、1以上の参加者デバイス130との通信のための金融取引プロトコルに従って送信又は受信されたメッセージに含まれ得る情報に対応するフィールド110-1・・・110-6を含む。非限定的な例として、メッセージタイプフィールド110-1は、取引メッセージタイプを示す。ある取引メッセージタイプ(メッセージタイプ「新規注文」、「置換え注文」又は「取消し注文」など)は参加者デバイス130から受信されるメッセージに対応し、他のメッセージタイプ(「新規注文承認」、「置換え注文承認」、「取消し注文承認」、「約定」、「実行報告」、「未承諾取消」、「取引破綻」又は種々の拒否メッセージ)は電子取引システム100によって生成されて参加者デバイス130に送信される取引メッセージに含まれるメッセージに対応する。 Message format 110 includes fields 110-1...110-6 corresponding to information that may be included in messages sent or received in accordance with a financial transaction protocol for communication with one or more participant devices 130. As a non-limiting example, message type field 110-1 indicates the transaction message type. Some transaction message types (such as the message types "New Order," "Replacement Order," or "Cancel Order") correspond to messages received from a participant device 130, while other message types (such as "New Order Acknowledgement," "Replacement Order Acknowledgement," "Cancel Order Acknowledgement," "Execution," "Execution Report," "Unaccepted Cancellation," "Trade Failure," or various rejection messages) correspond to messages included in transaction messages generated by electronic trading system 100 and sent to participant devices 130.

メッセージフォーマット110は、株式表示記号又はストックティッカーなど、取引される有価証券についての識別子を含む銘柄記号フィールド110-2も含む。例えば、「IBM」は「International Business Machines Corporation」に対する株式表示記号である。メッセージフォーマット110におけるサイドフィールド110-3は、取引メッセージが「買い」、「売り」又は「空売り」であるかなど、取引メッセージの「サイド」を示すのに使用され得る。同様に、価格フィールド110-4は、証券を買付又は売却する希望価格を示すのに使用され得る。数量フィールド110-5は、証券の希望数量(例えば、株数)を示すのに使用され得る。メッセージフォーマット110は、注文トークンフィールド110-6を含んでいてもよく、これは参加者デバイス130によって最初に提供された「注文トークン」又は「クライアント注文ID」に追加されて、ゲートウェイ120を介して参加者デバイス130と電子取引システムの間に確立された特定の取引セッション(すなわち、「接続」又は「フロー」)の背景において新規注文を一意的に識別し得る。 The message format 110 also includes a stock symbol field 110-2 that contains an identifier for the security being traded, such as a stock symbol or stock ticker. For example, "IBM" is the stock symbol for "International Business Machines Corporation." The side field 110-3 in the message format 110 may be used to indicate the "side" of the trade message, such as whether the trade message is a "buy," "sell," or "short sale." Similarly, the price field 110-4 may be used to indicate the desired price at which to buy or sell the security. The quantity field 110-5 may be used to indicate the desired quantity of the security (e.g., number of shares). The message format 110 may include an order token field 110-6, which may be appended to the "order token" or "client order ID" originally provided by the participant device 130 to uniquely identify the new order within the context of a particular trading session (i.e., "connection" or "flow") established between the participant device 130 and the electronic trading system via the gateway 120.

フィールド110-1・・・110-6はほとんどの金融取引プロトコルに従うほとんどのメッセージタイプについて通常含まれる代表的なフィールドであるが、メッセージフォーマット110は、特に特定のメッセージタイプ又は特定の金融取引プロトコルをサポートするために追加の又は代替のフィールドを含み得るものでもあることが理解されるべきである。例えば、多くの金融取引プロトコルによると、「置換え注文」及び「取消し注文」メッセージタイプは、参加者130が追加の注文トークンを供給することで、置き換えられ又は取り消された注文を表してそれを当初の注文から区別することを要する。同様に、「置換え注文」及び「取消し注文」は、通常は置換え/取消数量フィールドも含み、「置換え注文」は置換え価格フィールドを含み得る。これらの追加の置換え/取消し注文トークンフィールド、置換え価格フィールド及び置換え/取消数量フィールドは、電子取引システム100によって送信される対応の承認メッセージに含まれてもよい。 While fields 110-1...110-6 are representative fields typically included for most message types according to most financial transaction protocols, it should be understood that message format 110 may also include additional or alternative fields to specifically support particular message types or particular financial transaction protocols. For example, according to many financial transaction protocols, the "Replacement Order" and "Cancel Order" message types require the participant 130 to provide an additional order token to represent the replaced or canceled order and distinguish it from the original order. Similarly, "Replacement Orders" and "Cancel Orders" also typically include a replacement/cancel quantity field, and "Replacement Orders" may include a replacement price field. These additional replacement/cancel order token, replacement price, and replacement/cancel quantity fields may be included in the corresponding acknowledgment message sent by electronic trading system 100.

さらに、メッセージフォーマット110は、電子取引システム100内で内部的に使用され得るが、必ずしも参加者デバイス130と交換されるメッセージにおけるフィールドに対応しないフィールド110-11・・・110-17を含む。例えば、ノード識別子フィールド110-11は、電子取引システム100において各ノードを一意的に識別し得る。一部の実施形態では、生成ノードは、それが電子取引システム100に導入するメッセージにその識別子を含めてもよい。例えば、各ゲートウェイ120は、それが参加者デバイス130からコンピュートノード140及び/又はシーケンサ150に転送するメッセージにそのノード識別子を含めてもよい。同様に、各コンピュートノード140は、それが生成した、電子取引システム100における他のノードに送信されるメッセージ(例えば、1以上の参加者デバイス130に最終的に転送されることが意図された非同期メッセージの承認、実行又はタイプ)にそのノード識別子を含めてもよい。したがって、電子取引システム100に導入される各メッセージは、メッセージにおけるノード識別子フィールド110-11を介して、メッセージの生成ノードに対応付けられ得る。 Additionally, message format 110 includes fields 110-11...110-17 that may be used internally within electronic trading system 100 but do not necessarily correspond to fields in messages exchanged with participant devices 130. For example, node identifier field 110-11 may uniquely identify each node in electronic trading system 100. In some embodiments, a generating node may include its identifier in messages it introduces to electronic trading system 100. For example, each gateway 120 may include its node identifier in messages it forwards from participant devices 130 to compute nodes 140 and/or sequencer 150. Similarly, each compute node 140 may include its node identifier in messages it generates and sends to other nodes in electronic trading system 100 (e.g., acknowledgements, executions, or types of asynchronous messages intended for ultimate forwarding to one or more participant devices 130). Thus, each message introduced to electronic trading system 100 may be associated with the generating node of the message via node identifier field 110-11 in the message.

メッセージフォーマット110は、フロー識別子フィールド110-12も含み得る。一部の実施形態では、参加者デバイス130とゲートウェイ120の間に確立された各取引セッション(すなわち、「接続」又は「フロー」)は、電子取引システム100の全体を通じて固有のものとなることが意図されたフロー識別子によって識別され得る。図1Dとの関連で上述したように、参加者デバイス130は、1以上のフローを介して及びゲートウェイ120の1以上を介して電子取引システム100に接続され得る。このような実施形態では、特定のフローを介して参加者デバイス130と電子取引システム100の間で交換される全てのメッセージの(電子取引システム100におけるノード間で使用される)標準化メッセージフォーマット110によるメッセージのバージョンは、フロー識別子フィールド110-12における当該フローに対する固有識別子を含むことになる。一部の実施形態では、フロー識別子フィールド110-12は、メッセージの生成ノードによって追加される。例えば、ゲートウェイ120は、ゲートウェイ120が電子取引システム100に導入する、それが参加者130から受信するメッセージに関連するフローの識別子をフロー識別子フィールド110-12に加えてもよい。同様に、コアコンピュートノード140は、それが生成するメッセージ(すなわち、承認メッセージ又は約定などの応答メッセージ又は非同期メッセージを含む他の発信メッセージ)に関連するフロー識別子をフロー識別子フィールド110-12に加えてもよい。 The message format 110 may also include a flow identifier field 110-12. In some embodiments, each trading session (i.e., "connection" or "flow") established between a participant device 130 and a gateway 120 may be identified by a flow identifier that is intended to be unique throughout the electronic trading system 100. As described above in connection with FIG. 1D, a participant device 130 may be connected to the electronic trading system 100 via one or more flows and via one or more of the gateways 120. In such embodiments, the version of the message in the standardized message format 110 (used between nodes in the electronic trading system 100) for all messages exchanged between a participant device 130 and the electronic trading system 100 via a particular flow will include a unique identifier for that flow in the flow identifier field 110-12. In some embodiments, the flow identifier field 110-12 is added by the node that generated the message. For example, the gateway 120 may populate the flow identifier field 110-12 with an identifier of a flow associated with a message that the gateway 120 introduces into the electronic trading system 100 and that it receives from a participant 130. Similarly, the core compute node 140 may populate the flow identifier field 110-12 with a flow identifier associated with a message that it generates (i.e., a response message such as an acknowledgement message or a trade, or other outgoing message, including an asynchronous message).

一部の実施形態では、フロー識別子フィールド110-12は論理フローを一意的に識別する値を含み、それは、複数の冗長取引セッション接続として、場合によっては複数のゲートウェイを介して、実際に高可用性の目的のために実施され得る。すなわち、一部の実施形態では、同じフローIDが、参加者デバイス130とゲートウェイ120の間の2以上の冗長フローに割り当てられてもよい。そのような実施形態では、冗長フローは、アクティブ/スタンバイ構成又はアクティブ/アクティブ構成のいずれかであり得る。アクティブ/アクティブ構成では、機能的に同等なメッセージは、参加者デバイス130とゲートウェイ120の間で同時に複数の冗長フローを介して並列に交換され得る。すなわち、取引するクライアントは、機能的に同等なメッセージを電子取引システム100に複数の冗長フローを介して同時に並列に送信し、複数の機能的に同等な応答を電子取引システム100から複数の冗長フローを介して並列に受信し得る。ただし、電子取引システム100は、単一の当該機能的に同等なメッセージのみに対して行動をとり得る。アクティブ/スタンバイ構成では、複数の冗長フローの間で一度に単一のフローがアクティブフローとして指定され得る一方で、複数の冗長フローの間の他方のフローはスタンバイフローとして指定され得る。取引メッセージは、実際には、現在アクティブなフローを介して交換されるだけとなる。冗長フローがアクティブ/アクティブ構成で構成されるのか、アクティブ/スタンバイ構成で構成されるのかにかかわらず、冗長フローのいずれかを介して交換されるメッセージは、標準化メッセージフォーマット110のフロー識別子フィールド110-12においてメッセージの生成ノードによって記憶された同じフロー識別子によって識別され得る。 In some embodiments, the flow identifier field 110-12 contains a value that uniquely identifies a logical flow, which may be implemented as multiple redundant trading session connections, possibly via multiple gateways, indeed for high availability purposes. That is, in some embodiments, the same flow ID may be assigned to two or more redundant flows between a participant device 130 and a gateway 120. In such embodiments, the redundant flows may be in either an active/standby or active/active configuration. In an active/active configuration, functionally equivalent messages may be exchanged in parallel between a participant device 130 and a gateway 120 simultaneously via multiple redundant flows. That is, a trading client may send functionally equivalent messages to the electronic trading system 100 simultaneously via multiple redundant flows and receive multiple functionally equivalent responses from the electronic trading system 100 simultaneously via multiple redundant flows. However, the electronic trading system 100 may only act on a single such functionally equivalent message. In an active/standby configuration, a single flow among the multiple redundant flows may be designated as the active flow at a time, while the other flow among the multiple redundant flows may be designated as the standby flow. Transaction messages are actually only exchanged over the currently active flow. Whether the redundant flows are configured in an active/active or active/standby configuration, messages exchanged over either of the redundant flows can be identified by the same flow identifier stored by the message's originating node in the flow identifier field 110-12 of the standardized message format 110.

上述したように、一部の実施形態では、電子取引システム100におけるノード間で交換されるメッセージは、シーケンサ150に送信されて順序識別子がマーク付けされる。したがって、メッセージフォーマット110は、順序識別子フィールド110-14を含む。一部の実施形態では、「マークなしメッセージ」は、空のブランク(例えば、ゼロ)の値の順序識別子フィールド110-14とともに送信され得る。他の実施形態では、マークなしメッセージの順序識別子フィールド110-14は、シーケンサがメッセージに割り当てることのない特定の所定値、又は無効値に設定されてもよい。さらに他の実施形態は、メッセージがマーク付けされないことを、メッセージが順序付けされたか否かを示すBoolean値又はフラグ値など、メッセージの他のフィールド(不図示)におけるインジケータを介して指定してもよい。シーケンサ150は、マークなしメッセージを受信すると、その後に、有効な順序識別子の値をマークなしメッセージの順序識別子フィールド110-14に加えることにより、「順序マーク付きメッセージ」を生成し得る。順序マーク付きメッセージの順序識別子フィールド110-14における有効な順序識別子の値は、メッセージを一意的に識別し、さらに電子取引システム100の全体を通じて他のマーク付きメッセージの中のマーク付きメッセージの相対順位付けにおけるマーク付きメッセージの確定的な位置を指定する。本例では、シーケンサ150によって送信される「順序マーク付きメッセージ」は、その後に、順序マーク付きメッセージの順序識別子フィールド110-14が有効な順序識別子の値を含むことを除いて、シーケンサによって受信された対応のマークなしメッセージと同一となり得る。 As described above, in some embodiments, messages exchanged between nodes in the electronic trading system 100 are sent to the sequencer 150 to be marked with a sequence identifier. Accordingly, the message format 110 includes a sequence identifier field 110-14. In some embodiments, an "unmarked message" may be sent with the sequence identifier field 110-14 set to an empty blank (e.g., zero) value. In other embodiments, the sequence identifier field 110-14 of an unmarked message may be set to a specific predetermined value that the sequencer does not assign to the message, or to an invalid value. Still other embodiments may specify that the message is not marked via an indicator in another field (not shown) of the message, such as a Boolean or flag value indicating whether the message is sequenced. When the sequencer 150 receives an unmarked message, it may subsequently generate a "sequence-marked message" by adding a valid sequence identifier value to the sequence identifier field 110-14 of the unmarked message. A valid sequence identifier value in the sequence identifier field 110-14 of a sequence-marked message uniquely identifies the message and also specifies the marked message's definitive position in the relative ordering of marked messages among other marked messages throughout the electronic trading system 100. In this example, a "sequence-marked message" sent by the sequencer 150 may be identical to a corresponding unmarked message subsequently received by the sequencer, except that the sequence identifier field 110-14 of the sequence-marked message contains a valid sequence identifier value.

メッセージフォーマット110は、一部の実施形態では、基準順序識別子フィールド110-15も含み得る。生成ノードは、それが生成する新たなメッセージの基準順序識別子フィールド110-15に、生成されているメッセージに関連する前メッセージの順序番号の値を加えてもよい。基準順序識別子フィールド110-15の値によって、電子取引システム100におけるノードはメッセージを前関連メッセージに相関付けることができる。 In some embodiments, the message format 110 may also include a reference order identifier field 110-15. A generating node may populate the reference order identifier field 110-15 of a new message it generates with the value of the order number of a previous message related to the message being generated. The value of the reference order identifier field 110-15 allows nodes in the electronic trading system 100 to correlate the message with the previous related message.

基準順序識別子フィールド110-15において参照される前関連メッセージは、同じ「注文チェーン」(すなわち、「取引注文チェーン」)における前メッセージであり得る。ほとんどの金融取引プロトコルによると、メッセージは、共通のメッセージを参照する、すなわち「そこから派生する」単一のフローを介したメッセージの組である「注文チェーン」に論理的にグループ化され得る。注文チェーンは、通常は、参加者デバイス130によって送信された「新規注文メッセージ」で開始する。注文チェーンにおける次のメッセージは、通常は、電子取引システムによる応答である(例えば、メッセージが取引システムによって受諾された場合の「新規注文承認」メッセージ、又はおそらくは、非限定的な例として無効価格などの無効なフォーマット若しくは無効なパラメータを有しているためにメッセージが取引システムによって拒否された場合の「新規注文拒否」メッセージのいずれかである)。注文チェーンは、前に承認された(ただし、依然として未決済であり、すなわち、取り消されず及び/又は約定されない少なくとも一部の数量を含む)新規注文の数量の少なくとも一部を取り消す、参加者デバイス130によって送信された「取消し注文」メッセージも含み得る。「取消し注文」メッセージは、ここでも、「取消し注文承認」又は「取消し注文拒否」メッセージにより電子取引システムによって承認又は拒否されることになり、これは注文チェーンの一部ともなり得る。注文チェーンは、前に承認された(ただし依然として未決済の)新規注文の数量及び/又は価格を置き換える、参加者デバイス130から送信される「置換え注文」メッセージも含み得る。「置換え注文」メッセージは、ここでも、「置換え注文承認」又は「置換え注文拒否」メッセージによって電子取引システムによって承認又は拒否されることになり、これは注文チェーンの一部ともなり得る。依然として未決済の前に承認された注文は、逆サイドの1以上の反対注文(すなわち、一方のサイドで「買い」及び他方のサイドで「売り」又は「空売り」)とマッチングされ得る。そして、電子取引システム100は、完全「約定」メッセージ(未決済の注文の数量の全てが単一のマッチングにおいて約定される場合)又は1以上の部分的な「約定」メッセージ(未決済の注文の数量の一部分のみが単一のマッチングにおいて約定される場合)を生成することになり、これらの「約定」メッセージも注文チェーンの一部ともなり得る。上述したように、基準順序識別子は、一般に、同じ注文チェーンにおける他の前メッセージを識別し得る。 A previously related message referenced in the reference sequence identifier field 110-15 may be a previous message in the same "order chain" (i.e., "trade order chain"). According to most financial transaction protocols, messages may be logically grouped into an "order chain," which is a set of messages through a single flow that reference or "derive from" a common message. An order chain typically begins with a "new order message" sent by a participant device 130. The next message in the order chain is typically a response by the electronic trading system (e.g., either a "new order acknowledged" message if the message is accepted by the trading system, or a "new order rejected" message if the message is rejected by the trading system, perhaps because it has invalid formatting or invalid parameters, such as, but not limited to, an invalid price). An order chain may also include a "cancel order" message sent by a participant device 130 that cancels at least a portion of the quantity of a previously acknowledged new order (but still outstanding, i.e., including at least some quantity not canceled and/or executed). The "cancel order" message will again be accepted or rejected by the electronic trading system with a "cancel order accept" or a "cancel order reject" message, which may also be part of an order chain. The order chain may also include a "replacement order" message sent from a participant device 130 that replaces the quantity and/or price of a previously accepted (but still outstanding) new order. The "replacement order" message will again be accepted or rejected by the electronic trading system with a "replacement order accept" or a "replacement order reject" message, which may also be part of an order chain. A previously accepted order that is still outstanding may be matched with one or more counter orders on the opposite side (i.e., a "buy" on one side and a "sell" or "short sell" on the other side). The electronic trading system 100 will then generate a full "fill" message (if all of the open order quantity is filled in a single match) or one or more partial "fill" messages (if only a portion of the open order quantity is filled in a single match), which may also be part of an order chain. As noted above, the reference sequence identifier may generally identify other previous messages in the same order chain.

例えば、基準順序識別子フィールド110-15に戻ると、基準順序番号に対する値は、参加者デバイス130から生じてゲートウェイ120によって電子取引システム100に導入された「着信」メッセージに対してシーケンサによって割り当てられた順序番号となり、これにより、コンピュートノード140によって生成される応答メッセージなどの対応する「発信」メッセージはそれが応答している着信メッセージの順序番号値を参照し得る。本例では、コンピュートノード140によって生成される「新規注文承認」メッセージ又は「約定」メッセージは、コンピュートノード140が「新規注文承認」メッセージで応答し又は「約定」メッセージで注文を遂行している対応の「新規注文」メッセージに割り当てられた順序識別子に対する値を基準順序識別子フィールド110-15に含むことになる。ただし、一般に、基準順序識別子フィールド110-15に対する値は、必ずしも電子取引システム100によって直接応答されているメッセージのものである必要はないが、同じ注文チェーンの一部である前メッセージのもの、例えば、「新規注文」又は「新規注文承認」の順序番号となり得る。 For example, returning to the reference sequence identifier field 110-15, the value for the reference sequence number would be the sequence number assigned by the sequencer to an "incoming" message originating from a participant device 130 and introduced into the electronic trading system 100 by the gateway 120, such that a corresponding "outgoing" message, such as a response message generated by a compute node 140, may reference the sequence number value of the incoming message to which it is responding. In this example, a "new order acknowledgement" message or "fill" message generated by a compute node 140 would include in the reference sequence identifier field 110-15 a value for the sequence identifier assigned to the corresponding "new order" message to which the compute node 140 is responding with the "new order acknowledgement" message or fulfilling the order with the "fill" message. In general, however, the value for the reference sequence identifier field 110-15 need not necessarily be that of the message being directly responded to by the electronic trading system 100, but could be that of a previous message that is part of the same order chain, e.g., a "new order" or "new order acknowledgement" message.

一部の実施形態では、少なくとも一部のメッセージタイプについて、ゲートウェイ120は、それらが電子取引システム100に導入するメッセージにおける基準順序識別子フィールド110-15に、関連する前メッセージに対する順序識別子の値を加えてもよい。例えば、ゲートウェイ120は、「取消し注文」又は「置換え注文」メッセージにおける基準順序識別子フィールド110-15に、前の対応する「新規注文」又は「新規注文承認」メッセージに割り当てられた順序識別子の値を加えてもよい。同様に、コアコンピュートノード140は、対応する「取消し注文承認」メッセージ又は「置換え注文承認」メッセージに対する順序識別子フィールド110-15に、コンピュートノード140が直接応答しているメッセージのものではなく(例えば、「取消し注文」又は「置換え注文」メッセージの順序識別子ではなく)「新規注文」又は「新規注文承認」に対する順序識別子の値も加える。ここでも、基準順序識別子フィールド110-15は、電子取引システム100におけるノードが一般にメッセージを同じ注文チェーンにおける1以上の前メッセージに相関付けることを可能とする。 In some embodiments, for at least some message types, gateways 120 may populate the reference sequence identifier field 110-15 in messages they introduce to electronic trading system 100 with the sequence identifier value for the associated previous message. For example, gateways 120 may populate the reference sequence identifier field 110-15 in a "Cancel Order" or "Replacement Order" message with the sequence identifier value assigned to the previous corresponding "New Order" or "New Order Acknowledge" message. Similarly, core compute node 140 may populate the sequence identifier field 110-15 for the corresponding "Cancel Order Acknowledge" or "Replacement Order Acknowledge" message with the sequence identifier value for the "New Order" or "New Order Acknowledge" message, rather than the sequence identifier for the message to which compute node 140 is directly responding (e.g., rather than the sequence identifier of the "Cancel Order" or "Replacement Order" message). Again, the reference sequence identifier field 110-15 allows nodes in electronic trading system 100 to generally correlate a message with one or more previous messages in the same order chain.

生成ノードは、それが電子取引システム100に導入するメッセージにノード特有タイムスタンプフィールド110-13を含めてもよい。シーケンサ150によって出力される順序マーク付きメッセージの順序識別子フィールド110-14に含まれる順序識別子は電子取引システム100の全体を通じて固有となることが意図されているが、ノード特有タイムスタンプフィールド110-13における値は、特定の生成ノードによって電子取引システム100に導入されたメッセージの一部の組の間で固有となり得る。ここでは「タイムスタンプ」というが、ノード特有タイムスタンプフィールド110-13に入る値は、当該ノードによって生成されるメッセージの間で固有な任意の適宜の値であり得る。例えば、ノード特有タイムスタンプは、実際にはタイムスタンプ又は任意の適宜の単調増加若しくは単調減少する値となり得る。 A producing node may include a node-specific timestamp field 110-13 in messages that it introduces into the electronic trading system 100. While the sequence identifier included in the sequence identifier field 110-14 of the sequence-marked message output by the sequencer 150 is intended to be unique throughout the electronic trading system 100, the value in the node-specific timestamp field 110-13 may be unique among a subset of messages introduced into the electronic trading system 100 by a particular producing node. Although referred to herein as a "timestamp," the value placed in the node-specific timestamp field 110-13 may be any suitable value that is unique among messages produced by that node. For example, the node-specific timestamp may actually be a timestamp or any suitable monotonically increasing or monotonically decreasing value.

一部の実施形態は、メッセージフォーマットに他のタイムスタンプフィールドを含み得る。例えば、一部のメッセージフォーマットは基準タイムスタンプフィールドを含んでいてもよく、それは前の関連メッセージの生成ノードによって割り当てられたタイムスタンプ値であってもよい。このような実施形態では、コンピュートノード140は、それが生成するメッセージに対するノード特有タイムスタンプフィールド110-13における新たなタイムスタンプ値を含んでいてもよく、コンピュートノードが生成するメッセージの基準タイムスタンプフィールドにおける関連メッセージからのタイムスタンプ値を含んでいてもよい。例えば、コンピュートノードによって生成される「新規注文承認」メッセージは、それが「新規注文承認メッセージ」の基準タイムスタンプフィールドにおいて応答している「新規注文」のタイムスタンプ値を含み得る。またさらに、一部の実施形態では、コンピュートノード140は、それらが生成するメッセージにおけるノード特有タイムスタンプフィールド110-13における新たなタイムスタンプ値を含まなくてもよいが、単に当該ノード特有タイムスタンプフィールド110-13に前の関連メッセージからのタイムスタンプ値を加えてもよい。 Some embodiments may include other timestamp fields in the message format. For example, some message formats may include a reference timestamp field, which may be a timestamp value assigned by the generating node of the previous associated message. In such embodiments, a compute node 140 may include a new timestamp value in the node-specific timestamp field 110-13 for messages it generates, and may include the timestamp value from the associated message in the reference timestamp field of messages it generates. For example, a "New Order Acknowledgement" message generated by a compute node may include the timestamp value of the "New Order" to which it is responding in the reference timestamp field of the "New Order Acknowledgement Message." Furthermore, in some embodiments, compute nodes 140 may not include a new timestamp value in the node-specific timestamp field 110-13 in messages they generate, but may simply add the timestamp value from the previous associated message to that node-specific timestamp field 110-13.

メッセージフォーマット110は、エンティティタイプフィールド110-16及びエンティティカウントフィールド110-17も含み得る。メッセージのエンティティタイプは、それが電子取引システム100にゲートウェイ120によって導入されるのか又はそれともコンピュートノード140によって導入されるのか、言い換えると、メッセージが参加者デバイス130からゲートウェイ120において受信されている着信メッセージであるのか又はそれが参加者デバイス130に送信されるコンピュートノード140によって生成されている発信メッセージであるのかに依存し得る。例えば、一部の実施形態では、着信メッセージは、エンティティタイプ「フロー」とみなされる(かつエンティティタイプフィールド110-16には、タイプ「フロー」を表す値がゲートウェイ120によって着信メッセージに加えられる)一方で、発信メッセージはエンティティタイプ「銘柄記号」とみなされる(かつエンティティタイプフィールド110-16には、タイプ「銘柄記号」を表す値がコンピュートノード140によって発信メッセージに加えられる)。このような実施形態では、タイプ「フロー」のエンティティカウントがゲートウェイ120によって保持され、タイプ「銘柄記号」のエンティティカウントがコンピュートノード140によって保持される。 The message format 110 may also include an entity type field 110-16 and an entity count field 110-17. The entity type of a message may depend on whether it is introduced into the electronic trading system 100 by the gateway 120 or by the compute node 140; in other words, whether the message is an incoming message being received at the gateway 120 from a participant device 130 or an outgoing message being generated by the compute node 140 to be sent to a participant device 130. For example, in some embodiments, incoming messages are considered to be of entity type "flow" (and a value representing type "flow" is added to the entity type field 110-16 by the gateway 120), while outgoing messages are considered to be of entity type "stock symbol" (and a value representing type "stock symbol" is added to the entity type field 110-16 by the compute node 140). In such embodiments, an entity count of type "flow" is maintained by the gateway 120, and an entity count of type "stock symbol" is maintained by the compute node 140.

エンティティタイプ「フロー」を検討すると、ゲートウェイ120は、フローあたりの着信メッセージカウントを保持し、ゲートウェイ120上でアクティブな各フローを介してゲートウェイ120によって受信された着信メッセージをカウントする。例えば、4本の非冗長フローがゲートウェイ120上でアクティブな場合、各フローは上述のように固有のフロー識別子に割り当てられることになり、ゲートウェイ120はフローあたりの着信メッセージカウントを保持し、それら4本のフローの各々を介して受信された着信メッセージ数をカウントすることになる。このような実施形態では、ゲートウェイ120は、着信メッセージのエンティティカウントフィールド110-17に、(メッセージのフロー識別子フィールド110-12に加えられたフロー識別子の値によって電子取引システム100の全体を通じて識別されるような)着信メッセージのフローに関連するフローあたりの着信メッセージカウントを加える。 Considering the entity type "flow," the gateway 120 maintains a per-flow incoming message count, counting the incoming messages received by the gateway 120 through each flow active on the gateway 120. For example, if four non-redundant flows are active on the gateway 120, each flow would be assigned a unique flow identifier as described above, and the gateway 120 would maintain a per-flow incoming message count, counting the number of incoming messages received through each of those four flows. In such an embodiment, the gateway 120 adds to the entity count field 110-17 of the incoming message the per-flow incoming message count associated with the flow of the incoming message (as identified throughout the electronic trading system 100 by the flow identifier value added to the message's flow identifier field 110-12).

アクティブ/アクティブ構成(すなわち、上述したように、複数のフローが同じメッセージ又は少なくとも機能的に同等なメッセージを、1以上のゲートウェイ120を介して接続された参加者デバイス130から並列に受信する構成)における冗長フローの場合、各内在する冗長フローは、同じフロー識別子に割り当てられることになり、さらに、特に冗長フローが別個のゲートウェイ120上で実施される場合、フローあたりの着信メッセージカウントはそれでも各冗長フローに対して別個に保持され得る。参加者デバイス130は同じ順位(すなわち、順序)における同じ組のメッセージを電子取引システム100に冗長フローの各々を介して送信することが予想されることから、別個の冗長フローを介して受信される機能的に同等なメッセージに割り当てられるエンティティカウントは同一となるべきことも予想される。これらの機能的に同等な着信メッセージは、ゲートウェイ120によってシーケンサ150及びコンピュートノード140に転送され得る。したがって、このような実施形態では、シーケンサ150及びコンピュートノード140は、同じフロー識別子に関連する複数の機能的に同等な着信メッセージを受信し得るが、同じフロー識別子を有する複数のメッセージに対してエンティティカウントが同一である場合、シーケンサ150及びコンピュートノード140はそのようなメッセージが機能的に同等であるものとして識別し得る。一部の実施形態では、シーケンサ150及びコンピュートノード140は、各フローに関連する着信メッセージのエンティティカウントフィールド110-17に含まれていた最も高いエンティティカウントをフロー毎に追跡し得る。これにより、シーケンサ150及びコンピュートノード140は、各ノードが受信した複数の機能的に同等な着信メッセージの最初に到着するものに対してのみ行動をとり、後に到着する他の機能的に同等な着信メッセージを無視することができる。例えば、シーケンサ150は、一部の実施形態では、最初に到着するそのような機能的に同等な着信メッセージのみを順序付け、コンピュートノード140は最初に到着するそのような機能的に同等なメッセージに対してのみ処理を開始し得る。ノード(すなわち、シーケンサ150又はコンピュートノード140)によって受信される着信メッセージが、そのノードが当該フローに対して把握している最も高いエンティティカウント以下のエンティティカウントを有する場合には、そのノードは、着信メッセージは以前に受信された他の着信メッセージと機能的に同等である推定することができ、後に受信される機能的に同等な着信メッセージを単に無視してもよい。 In the case of redundant flows in an active/active configuration (i.e., a configuration in which multiple flows receive the same message, or at least functionally equivalent messages, in parallel from participant devices 130 connected via one or more gateways 120, as described above), each underlying redundant flow will be assigned the same flow identifier; further, the per-flow incoming message count may still be kept separate for each redundant flow, particularly if the redundant flows are implemented on separate gateways 120. Because the participant devices 130 are expected to send the same set of messages in the same order (i.e., sequence) to the electronic trading system 100 via each of the redundant flows, it is also expected that the entity counts assigned to functionally equivalent messages received via the separate redundant flows should be identical. These functionally equivalent incoming messages may be forwarded by the gateways 120 to the sequencer 150 and the compute node 140. Thus, in such embodiments, sequencer 150 and compute node 140 may receive multiple functionally equivalent incoming messages associated with the same flow identifier, but if the entity counts for the multiple messages with the same flow identifier are identical, sequencer 150 and compute node 140 may identify such messages as functionally equivalent. In some embodiments, sequencer 150 and compute node 140 may track, for each flow, the highest entity count contained in the entity count field 110-17 of the incoming messages associated with each flow. This allows sequencer 150 and compute node 140 to act only on the first of multiple functionally equivalent incoming messages received by each node and ignore other functionally equivalent incoming messages that arrive later. For example, in some embodiments, sequencer 150 may order only the first such functionally equivalent incoming message, and compute node 140 may begin processing only on the first such functionally equivalent message. If an incoming message received by a node (i.e., sequencer 150 or compute node 140) has an entity count less than or equal to the highest entity count known to the node for that flow, the node may infer that the incoming message is functionally equivalent to other previously received incoming messages and may simply ignore the subsequently received functionally equivalent incoming messages.

ここでエンティティタイプ「銘柄記号」の場合を検討すると、コンピュートノード140は、銘柄記号あたりの発信メッセージカウントを保持し、コンピュートノード140によって取り扱われる各銘柄記号に対してコンピュートノード140によって生成されてそこから送信される発信メッセージをカウントし得る。例えば、4個の銘柄記号(例えば、MSFT、GOOG、IBM、ORCL)がコンピュートノード140によって取り扱われる場合、各銘柄記号は、上述したように、メッセージの銘柄記号フィールド110-2に加えられた銘柄記号識別子に割り当てられ、コンピュートノード140は銘柄記号あたりの発信メッセージカウントを保持し、これら4個の銘柄記号の各々を取り扱っていた、それが生成及び送信した発信メッセージ数をカウントすることになる。このような実施形態では、コンピュートノード140は、(メッセージの銘柄記号フィールド110-2に加えられた値によって電子取引システム100の全体を通じて識別されるような)発信メッセージの銘柄記号に関連する銘柄記号あたりの発信メッセージカウントを着信メッセージのエンティティカウントフィールド110-17に加える。 Considering now the case of entity type "stock symbol," compute node 140 may maintain a per-stock-symbol outgoing message count, counting the outgoing messages generated by and sent from compute node 140 for each stock symbol handled by compute node 140. For example, if four stock symbols (e.g., MSFT, GOOG, IBM, ORCL) are handled by compute node 140, each stock symbol would be assigned a stock symbol identifier added to message stock symbol field 110-2, as described above, and compute node 140 would maintain a per-stock-symbol outgoing message count, counting the number of outgoing messages it generated and sent while handling each of these four stock symbols. In such an embodiment, compute node 140 adds the per-stock-symbol outgoing message count associated with the outgoing message's stock symbol (as identified throughout electronic trading system 100 by the value added to message stock symbol field 110-2) to the incoming message's entity count field 110-17.

一部の実施形態では、さらに後述するように、コンピュートノードは、複数のコンピュートノードが、高可用性の理由により、特定の銘柄記号を並行して取り扱うように構成されてもよい。シーケンサ150によって与えられる電子取引システム100の全体を通じたメッセージの確定的な順位付けのために、複数のコンピュートノードが所与の銘柄記号を取り扱っていても、それらは同じ銘柄記号を同じ順位(すなわち、順序)で同様に参照する着信メッセージを処理していることになり、それにより、機能的に同等な応答メッセージを並列に生成することが保証可能となる。複数のコンピュートノード140にわたって特定の銘柄記号に対して送出される発信メッセージを検討すると、当該銘柄記号を参照する各発信メッセージは、当該銘柄記号を積極的に取り扱う他の各コンピュートノード140によって送出されている機能的に同等なメッセージを有すべきである。これらの発信メッセージは全て、コンピュートノード140によってシーケンサ150及びゲートウェイ120に送信され得る。したがって、このような実施形態では、シーケンサ150及びゲートウェイ120は、同じ銘柄記号に関連する複数の機能的に同等な着信メッセージを受信し得るが、シーケンサ150及びゲートウェイ120は、同じ銘柄記号識別子を有する複数のメッセージに対してエンティティカウントが同一である場合、メッセージは機能的に同等であるものとして識別し得る。一部の実施形態では、シーケンサ150及びゲートウェイ120は、銘柄記号に関連する発信メッセージのエンティティカウントフィールド110-17に含まれていた最も高いエンティティカウントを銘柄記号毎に追跡し得る。これにより、シーケンサ150及びゲートウェイ120は、各ノードが受信した複数の機能的に同等な発信メッセージの最初に到着するものに対してのみ行動をとり、後に到着する他の機能的に同等な発信メッセージを無視することができる。例えば、シーケンサ150は、一部の実施形態では、最初に到着するそのような機能的に同等な発信メッセージのみを順序付けてもよい。同様に、ゲートウェイ120は、最初に到着するそのような機能的に同等なメッセージのみを処理し始めてもよい。ノード(すなわち、シーケンサ150又はゲートウェイ120)によって受信される発信メッセージが、そのノードが当該銘柄記号に対して以前に把握している最も高いエンティティカウント以下のエンティティカウントを有する場合には、そのノードは、発信メッセージは以前に受信された他の発信メッセージと機能的に同等である推定することができ、後に受信される機能的に同等な発信メッセージを単に無視してもよい。 In some embodiments, as described further below, compute nodes may be configured such that multiple compute nodes handle a particular stock symbol in parallel for high availability reasons. Due to the deterministic ordering of messages throughout the electronic trading system 100 provided by the sequencer 150, even if multiple compute nodes are handling a given stock symbol, they will be processing incoming messages that similarly reference the same stock symbol in the same order (i.e., sequence), thereby ensuring that functionally equivalent response messages are generated in parallel. Considering outgoing messages sent across multiple compute nodes 140 for a particular stock symbol, each outgoing message referencing that stock symbol should have a functionally equivalent message sent by each other compute node 140 actively handling that stock symbol. All of these outgoing messages may be sent by the compute nodes 140 to the sequencer 150 and the gateway 120. Thus, in such an embodiment, sequencer 150 and gateway 120 may receive multiple functionally equivalent incoming messages associated with the same stock symbol, but sequencer 150 and gateway 120 may identify messages as functionally equivalent if the entity counts are identical for multiple messages with the same stock symbol identifier. In some embodiments, sequencer 150 and gateway 120 may track, for each stock symbol, the highest entity count included in the entity count field 110-17 of an outgoing message associated with that stock symbol. This allows sequencer 150 and gateway 120 to act only on the first of multiple functionally equivalent outgoing messages received by each node and ignore other functionally equivalent outgoing messages that arrive later. For example, sequencer 150, in some embodiments, may order only the first such functionally equivalent outgoing message that arrives. Similarly, gateway 120 may begin processing only the first such functionally equivalent message that arrives. If an outgoing message received by a node (i.e., sequencer 150 or gateway 120) has an entity count that is less than or equal to the highest entity count previously known to the node for that stock symbol, the node may infer that the outgoing message is functionally equivalent to other previously received outgoing messages and may simply ignore subsequently received functionally equivalent outgoing messages.

シーケンサ150が、シーケンサに到着する複数の機能的に同等なメッセージの最初のメッセージのみを順序付ける実施形態では、シーケンサは様々な態様でそれを行うことができる。一例では、最初に到着する当該機能的に同等なメッセージと機能的に同等な他の後続の到着メッセージは、シーケンサによって単に無視されてもよい(この場合、機能的に同等なメッセージの組に対して単一の順序マーク付きメッセージのみがシーケンサによって出力されてもよい)。他の可能性は、シーケンサが、例えば、メッセージのエンティティカウント、そのフロー識別子又は銘柄記号識別子(「フロー」及び「銘柄記号」のエンティティタイプをそれぞれ有するメッセージについて)、及びその順序番号間を関連付けることによって最初の機能的に同等なメッセージに割り当てる順序番号を追跡することである。それにより、シーケンサは各機能的に同等なメッセージの順序付きバージョンを出力することができ、その各機能的に同等なメッセージの順序付きバージョンでは、全ての機能的に同等なメッセージの順序マーク付きバージョンについて順序識別子フィールド110-14の値が、シーケンサ150によって受信された機能的に同等なメッセージの間で最初に到着したメッセージにシーケンサによって割り当てられたものと同じである。 In embodiments in which the sequencer 150 orders only the first message of multiple functionally equivalent messages arriving at the sequencer, the sequencer can do so in various ways. In one example, other subsequently arriving messages that are functionally equivalent to the first arriving functionally equivalent message may simply be ignored by the sequencer (in which case only a single order-marked message for a set of functionally equivalent messages may be output by the sequencer). Another possibility is for the sequencer to track the sequence number it assigns to the first functionally equivalent message by, for example, correlating between the message's entity count, its flow identifier or stock symbol identifier (for messages with entity types of "flow" and "stock symbol," respectively), and its sequence number. The sequencer can then output an ordered version of each functionally equivalent message in which the value of the order identifier field 110-14 for all the order-marked versions of the functionally equivalent message is the same as that assigned by the sequencer to the first arriving message among the functionally equivalent messages received by the sequencer 150.

他の実施形態では、シーケンサ150は、メッセージが機能的に同等であるか否かを追跡しなくてもよく、当該メッセージが複数の機能的に同等なメッセージのうちの1つであるか否かにかかわらず、シーケンサ150に到着する各順序付けなしメッセージに固有の順序番号を割り当ててもよい。このような実施形態では、複数の機能的に同等なメッセージのうちの順序マーク付きバージョンのメッセージの各々は、順序識別子フィールド110-14における値としてシーケンサによって異なる順序識別子に割り当てられる。機能的に同等なメッセージの組に対して有効な順序識別子を決定するために、このような実施形態における順序付けられた機能的に同等なメッセージの受信者ノードは、最初にノードに到着する順序付けられた機能的に同等なメッセージのうちの順序付きバージョンのメッセージにおける順序識別子を用いてもよい。電子取引システム100におけるノードの間に直接のポイントツーポイント接続がある実施形態では、メッセージの順序マーク付きバージョンはシーケンサ150によって順序付けられた順位で送出されるので、シーケンサに直接接続された全てのノードの間では同じ順序付け順位で受信されるべきである。したがって、シーケンサとのそれぞれの直接ポイントツーポイント接続を介して順序マーク付きメッセージを受信する全てのノードについて、複数の機能的に同等な順序マーク付きメッセージのうちの最初に到着した順序マーク付きメッセージは、順序識別子フィールド110-14に同じ値を有すべきである。 In other embodiments, sequencer 150 may not track whether messages are functionally equivalent and may assign a unique sequence number to each unordered message that arrives at sequencer 150, regardless of whether the message is one of multiple functionally equivalent messages. In such embodiments, each order-marked version of a message among multiple functionally equivalent messages is assigned a different order identifier by the sequencer as the value in order identifier field 110-14. To determine a valid order identifier for a set of functionally equivalent messages, a recipient node of an ordered, functionally equivalent message in such an embodiment may use the order identifier in the ordered version of the ordered, functionally equivalent message that arrives at the node first. In embodiments where there are direct point-to-point connections between nodes in electronic trading system 100, order-marked versions of messages are sent out in the ordered order by sequencer 150 and should be received in the same ordered order among all nodes directly connected to the sequencer. Therefore, for all nodes receiving sequence-marked messages via their respective direct point-to-point connections with the sequencer, the first-arriving sequence-marked message of multiple functionally equivalent sequence-marked messages should have the same value in sequence identifier field 110-14.

上述から明らかとなるように、メッセージの順序識別子に加えて、メッセージフォーマット110などのメッセージフォーマットを有する実施形態では、電子取引システム100の全体を通じてメッセージを一意的に識別する多数の他の態様が存在し得る。例えば、メッセージがノード識別子及びノード特有タイムスタンプの双方を含む実施形態では、メッセージにおけるこれら2つの識別子の存在は、電子取引システム100の全体を通じてメッセージを一意的に識別するのに充分となり得る。そのようなフィールドは、メタデータを含むものとして理解され得る。そのような同一のメタデータを含む複数のメッセージは、共通のメタデータを含むものとして理解され得る。同様に、フロー識別子が電子取引システム100の全体を通じて固有である実施形態では、メッセージのフロー識別子及びノード特有タイムスタンプの組合せは、電子取引システム100の全体を通じてメッセージを一意的に識別するのに充分となり得る。またさらに、フロー識別子及びエンティティカウントの組合せはエンティティタイプ「フロー」のメッセージを一意的に識別するのに充分となり、銘柄記号識別子及びエンティティカウントの組合せはエンティティタイプ「銘柄記号」のメッセージを一意的に識別するのに充分となり得る。 As will become apparent from the above, in addition to a message sequence identifier, in embodiments having a message format such as message format 110, there may be numerous other aspects that uniquely identify a message throughout electronic trading system 100. For example, in embodiments in which a message includes both a node identifier and a node-specific timestamp, the presence of these two identifiers in a message may be sufficient to uniquely identify the message throughout electronic trading system 100. Such fields may be understood to include metadata. Multiple messages that include such identical metadata may be understood to include common metadata. Similarly, in embodiments in which flow identifiers are unique throughout electronic trading system 100, the combination of a message's flow identifier and node-specific timestamp may be sufficient to uniquely identify a message throughout electronic trading system 100. Furthermore, the combination of a flow identifier and an entity count may be sufficient to uniquely identify a message of entity type "flow," and the combination of a stock symbol identifier and entity count may be sufficient to uniquely identify a message of entity type "stock symbol."

ただし、メッセージに割り当てられた順序識別子に加えて、電子取引システム100の全体を通じてメッセージを一意的に識別する他の態様が存在し得るが、電子取引システム100の全体を通じて他のノードによって生成される他のメッセージの間でメッセージの相対順位付けを公平かつ確定的な態様で指定するために、依然として順序識別子が必要であることが注記されるべきである。例えば、ノード特有タイムスタンプが実際にタイムスタンプ値として実施される場合、ノード間のシステムクロックが完全に同期されていても、異なるノードによって各々生成された2つの異なるメッセージの各々がそれらのそれぞれの生成ノードによって同じタイムスタンプ値に割り当てられる場合があり、そしてこれら2つのメッセージ間の相対順位付けは曖昧となる。メッセージが一意的に識別可能であっても、両メッセージの受信者ノードは、依然としてメッセージに対して可能な行動をとる前に2つのメッセージの相対順位付けを決定する態様を必要とすることになる。 It should be noted, however, that while there may be other ways of uniquely identifying a message throughout the electronic trading system 100 in addition to the order identifier assigned to the message, an order identifier is still required to specify the relative ranking of the message among other messages generated by other nodes throughout the electronic trading system 100 in an unbiased and deterministic manner. For example, if the node-specific timestamp is actually implemented as a timestamp value, even if the system clocks between the nodes are perfectly synchronized, two different messages each generated by different nodes may each be assigned the same timestamp value by their respective generating nodes, and the relative ranking between these two messages will be ambiguous. Even if the messages are uniquely identifiable, the recipient nodes of both messages will still need a way to determine the relative ranking of the two messages before taking any possible action on the messages.

受信者ノードがその曖昧さを解消する1つの可能なアプローチとして、例えば、電子取引システム100の全体を通じてメッセージの相対順位付けにおける一方のメッセージを他方に先行するものとしてランダムに選択することによる、ランダム性の使用によるものが考えられる。ただし、曖昧さを解消するのにランダム性を用いることは、電子取引システム100の全体を通じて「状態確定性」を支持するものではない。異なる受信者ノードが、同じ組のメッセージの間での異なる相対順位付けをランダムに決定することになり、電子取引システム100内では予測不能で非確定的な挙動をもたらし、フォールトトレランス、高可用性及び災害復旧性などの重要な特徴の適正な実施を阻害してしまう。 One possible approach for a recipient node to resolve this ambiguity is through the use of randomness, for example, by randomly selecting one message to precede another in the relative ranking of messages throughout the electronic trading system 100. However, using randomness to resolve ambiguity does not support "state determinism" throughout the electronic trading system 100. Different recipient nodes would randomly determine different relative rankings between the same set of messages, resulting in unpredictable and non-deterministic behavior within the electronic trading system 100 and hindering the proper implementation of important features such as fault tolerance, high availability, and disaster recovery.

受信者ノードが順位付けにおける曖昧さを解消する他のアプローチとして、例えば、メッセージに関連するノード識別子に基づく所定の優先順位付け方法によるものが考えられる。ただし、そのようなアプローチは、電子取引システム100にメッセージを導入したノードのノード識別子に基づくだけで一部のメッセージに高い優先順位を与えることにより、公平性という重要な目標に反して作用する。例えば、一部の参加者デバイス130が、それらが偶発的に所定の優先順位付け方法において高いとみなされるゲートウェイ120を介して電子取引システム100に接続されたというだけで、優先されてしまうことになる。 Other approaches for recipient nodes to resolve ranking ambiguity include, for example, a predetermined prioritization scheme based on the node identifier associated with the message. However, such an approach works against the important goal of fairness by giving higher priority to some messages based solely on the node identifier of the node that introduced the message to the electronic trading system 100. For example, some participant devices 130 may be prioritized simply because they happen to be connected to the electronic trading system 100 via a gateway 120 that is considered high in the predetermined prioritization scheme.

メッセージが、メッセージがそれぞれ「銘柄記号」又は「フロー」のエンティティタイプを有するか否かに応じてエンティティカウント及び銘柄記号識別子又はフロー識別子のいずれかを介して一意的に識別されるとすると、当該銘柄記号(「銘柄記号」のエンティティタイプを有するメッセージの場合)又は当該フロー(「フロー」のエンティティタイプを有するメッセージの場合)に関連する他のメッセージの間での確定的な順位付けが存在し得る。ただし、それぞれ異なる銘柄記号及びフローに関連する他のメッセージの間での順位付けは、依然として非確定的となる。 Given that a message is uniquely identified via an entity count and either a stock symbol identifier or a flow identifier, depending on whether the message has an entity type of "stock symbol" or "flow," respectively, there can be deterministic ordering among other messages associated with that stock symbol (for messages with an entity type of "stock symbol") or that flow (for messages with an entity type of "flow"). However, ordering among other messages associated with different stock symbols and flows, respectively, remains non-deterministic.

したがって、メッセージフォーマット110における他のフィールドが電子取引システム100の全体を通じてメッセージを一意的に識別するのに充分となり得る場合であっても、電子取引システム100における他のメッセージに対するメッセージの順位付けを公平かつ確定的に指定するためには、シーケンサ150によってメッセージに割り当てられる順序識別子が依然として必要となり得る。このような実施形態では、シーケンサ150(又は複数のシーケンサ150が存在する場合には単一の現在アクティブなシーケンサ)は、電子取引システム100の全体を通じて順序マーク付きメッセージの間の真に確定的な順位付けの信頼できるソースとして作用する。 Thus, even if other fields in message format 110 may be sufficient to uniquely identify a message throughout electronic trading system 100, a sequence identifier assigned to the message by sequencer 150 may still be necessary to fairly and deterministically specify the ranking of the message relative to other messages in electronic trading system 100. In such an embodiment, sequencer 150 (or a single currently active sequencer, if multiple sequencers 150 are present) acts as the authoritative source of truly deterministic ranking among sequence-marked messages throughout electronic trading system 100.

一部の実施形態では、電子取引システム100におけるノードは、2つのバージョンのメッセージ:生成ノードによって電子取引システム100に導入されるような順序付けなし(マークなし)バージョンのメッセージ、及びシーケンサ150によって割り当てられた順序識別子を含むメッセージの(マーク付き)バージョンを受信し得る。これは、生成ノードがマークなしメッセージを1以上の受信者ノード及びシーケンサ150に送信する実施形態で起こり得る。そして、シーケンサ150は、同じメッセージの順序マーク付きバージョンを同じ受信者ノードを含むノードの組に送信し得る。 In some embodiments, a node in the electronic trading system 100 may receive two versions of a message: an unordered (unmarked) version of the message as introduced into the electronic trading system 100 by the originating node, and a (marked) version of the message that includes an order identifier assigned by the sequencer 150. This may occur in embodiments in which the originating node sends an unmarked message to one or more recipient nodes and the sequencer 150. The sequencer 150 may then send an order-marked version of the same message to a set of nodes that includes the same recipient node.

上述したように、順序マーク付きバージョンのメッセージは電子取引システム100における他のマーク付きメッセージ間のメッセージの相対処理順位(すなわち、順序内の位置)を決定するのに有用であるが、受信者ノードがマークなしバージョンのメッセージを受信するのにも有用となり得る。例えば、予期せぬ場合に(例えば、ノード間に直接の接続がある実施形態では)、マークなしバージョンのメッセージがマーク付きバージョンのメッセージの前に受信されることが確かに可能となる。なぜなら、マーク付きバージョンのメッセージは、介在するホップを介してシーケンサ150を通じて送信されるためである。したがって、一部の実施形態では、信頼性を以って他のマーク付きメッセージの間のマーク付きメッセージの相対順位付けを示すマーク付きバージョンのメッセージを受信者ノードが受信する前であっても、受信者ノードはマークなしメッセージの受信に応じてマークなしメッセージの処理を活性化させる機会がある。 As noted above, while the sequence-marked version of a message is useful for determining the relative processing order (i.e., position in the sequence) of the message among other marked messages in the electronic trading system 100, it may also be useful for a recipient node to receive an unmarked version of the message. For example, it is certainly possible that an unmarked version of a message will be received before a marked version of a message in unexpected circumstances (e.g., in embodiments where there is a direct connection between nodes) because the marked version of the message is transmitted through the sequencer 150 via an intervening hop. Thus, in some embodiments, a recipient node has the opportunity to activate processing of an unmarked message in response to receiving the unmarked message, even before the recipient node receives a marked version of the message that reliably indicates the relative ordering of the marked message among other marked messages.

同じメッセージのマーク付き及びマークなしバージョンの双方を受信するノードは、両バージョンのメッセージにおける同じ識別情報又は「共通のメタデータ」を介して2つのバージョンのメッセージを相互に相関付けることができる。例えば、上述したように、生成ノードは、それが生成するメッセージ(すなわち、マークなしメッセージ)に、電子取引システム100の全体を通じてともに各メッセージを一意的に識別し得るノード識別子及びノード特有タイムスタンプを含めてもよい。メッセージのマーク付き及びマークなしバージョンが、シーケンサ150によって割り当てられた順序識別子を除いて基本的に同一である実施形態では、マーク付きメッセージは対応するマークなしメッセージにも含まれる同じノード識別子及びノード特有タイムスタンプも含むことになり、それにより、両バージョンのメッセージの受信者ノードがマーク付き及びマークなしバージョンを相関付けることができる。したがって、マーク付きメッセージは電子取引システム100の全体を通じて他のマーク付きメッセージに対するマーク付きメッセージの相対順位付けを示すが、同じメッセージのマークなしバージョンとマーク付きバージョンの間で行われ得る相関付けのために、マーク付きメッセージは(少なくとも上述の相関付けを介して間接的に)電子取引システム100の全体を通じて(マーク付けされ又はマーク付けされない)他のメッセージに対するそのメッセージの相対順位付けを示す。電子取引システム100におけるノードが、上述したメッセージを一意的に識別する他の態様によってメッセージの順序マーク付きバージョンをマークなしバージョンに相関付けてもよいことが理解されるべきである。例えば、順序マーク付きメッセージとマークなしメッセージの間の相関付けは、フロー識別子及びノード特有タイムスタンプの組合せによって行われてもよい。そのような相関付けは、それぞれエンティティタイプ「銘柄記号」及び「フロー」を有するメッセージについて、メッセージにおける銘柄記号識別子又はフロー識別子とともにメッセージのエンティティカウントによって追加的又は代替的に行われてもよい。 A node receiving both the marked and unmarked versions of the same message can correlate the two versions via the same identifying information or "common metadata" in both versions of the message. For example, as described above, a generating node may include in the message it generates (i.e., the unmarked message) a node identifier and a node-specific timestamp that together may uniquely identify each message throughout the electronic trading system 100. In embodiments in which the marked and unmarked versions of a message are essentially identical except for an order identifier assigned by the sequencer 150, the marked message will also include the same node identifier and node-specific timestamp that are also included in the corresponding unmarked message, thereby allowing recipient nodes of both versions of the message to correlate the marked and unmarked versions. Thus, while a marked message indicates the relative ranking of the marked message with respect to other marked messages throughout the electronic trading system 100, due to correlations that may occur between the unmarked and marked versions of the same message, the marked message also indicates (at least indirectly via the correlations described above) the relative ranking of that message with respect to other messages (whether marked or unmarked) throughout the electronic trading system 100. It should be understood that nodes in the electronic trading system 100 may correlate sequence-marked versions of messages with unmarked versions by other ways of uniquely identifying messages as described above. For example, correlation between sequence-marked and unmarked messages may be performed by a combination of a flow identifier and a node-specific timestamp. Such correlation may additionally or alternatively be performed by the entity count of a message along with the stock symbol identifier or flow identifier in the message for messages having entity types "stock symbol" and "flow," respectively.

マイクロ秒又はさらにはナノ秒が重要となる高速取引の時代において、メッセージを電子取引システム100と交換する参加者デバイス130はレイテンシーに非常に影響を受け易いことが多く、低い予測可能なレイテンシーが好ましい。図1Dに示す構成は、少なくともゲートウェイ120の各々とコンピュートノード140の各々との間のポイントツーポイントメッシュ172のアーキテクチャを提供することによってこの要件に対応する。一部の実施形態では、メッシュ172における各ゲートウェイ120は、コンピュートノード140及びシーケンサ150に対する専用高速直接接続180を有し得る。 In an era of high-speed trading where microseconds or even nanoseconds matter, participant devices 130 exchanging messages with electronic trading system 100 are often highly latency-sensitive, and low, predictable latency is desirable. The configuration shown in FIG. 1D addresses this requirement by providing a point-to-point mesh 172 architecture between at least each of the gateways 120 and each of the compute nodes 140. In some embodiments, each gateway 120 in the mesh 172 may have a dedicated, high-speed, direct connection 180 to the compute nodes 140 and the sequencer 150.

例えば、専用接続180-1-1がゲートウェイ120-1(すなわち、GW1)とコアコンピュートノード140-1(すなわち、Core1)の間に設けられ、専用接続180-1-2が、ゲートウェイ120-1(すなわち、GW1)とコアコンピュートノード140-2(すなわち、Core2)の間に設けられ、それが続く。そして、例示の接続180-g-cがゲートウェイ120-gとコンピュートノード140-cの間に設けられ、例示の接続180-s-cがシーケンサ150とコアコンピュートノード140-c(すなわち、Core c)の間に設けられ、例示の接続180-gw1-s1がゲートウェイ120-1(すなわち、GW g)とシーケンサ150-1の間に設けられ、例示の接続180-c1-s1がコアコンピュートノード140-1(すなわち、Core1)とシーケンサ150-1の間に設けられる。 For example, a dedicated connection 180-1-1 is provided between gateway 120-1 (i.e., GW1) and core compute node 140-1 (i.e., Core1), a dedicated connection 180-1-2 is provided between gateway 120-1 (i.e., GW1) and core compute node 140-2 (i.e., Core2), and so on. An exemplary connection 180-g-c is provided between gateway 120-g and compute node 140-c, an exemplary connection 180-s-c is provided between sequencer 150 and core compute node 140-c (i.e., Core c), an exemplary connection 180-gw1-s1 is provided between gateway 120-1 (i.e., GW g) and sequencer 150-1, and an exemplary connection 180-c1-s1 is provided between core compute node 140-1 (i.e., Core 1) and sequencer 150-1.

ポイントツーポイントメッシュ172における各専用接続180は、一部の実施形態では、共有スイッチを利用しないポイントツーポイント直接接続であることが理解されるべきである。専用又は直接接続を、ここでは互換可能に直接又は専用「リンク」という場合があり、それは2つのエンドポイント間のその間の通信に専用の(すなわち、非共有の)直接接続である。このような専用/直接リンクは、以下にさらに開示するような任意の適宜の相互接続又はインターフェースであってもよく、有線イーサネットネットワーク接続又は他のタイプの有線若しくは無線ネットワークリンクなどのネットワークリンクに限られない。専用/直接の接続/リンクを、ここでは2つのエンドポイント間のエンドツーエンドパスという場合もある。このようなエンドツーエンドパスは、単一の接続/リンクであってもよいし、直列の接続/リンクを含んでいてもよい。ただし、その全体における、すなわち、一方のエンドポイントから他方のエンドポイントへの専用/直接の接続/リンクの帯域幅は、非共有であり、専用/直接の接続/リンクの帯域幅もレイテンシーも、要素が横断していたとしてもそのリソース利用によって影響を受け得ない。例えば、専用/直接の接続/リンクは、その利用に基づく帯域幅又はレイテンシーが影響を与えない1以上のバッファ又は他の要素を横断し得る。ただし、専用/直接の接続/リンクは、共有ネットワークスイッチを横断することはない。なぜなら、そのようなスイッチは、その共有使用に起因して帯域幅及び/又はレイテンシーに影響し得るためである。 It should be understood that, in some embodiments, each dedicated connection 180 in the point-to-point mesh 172 is a point-to-point direct connection that does not utilize a shared switch. A dedicated or direct connection may be referred to herein interchangeably as a direct or dedicated "link," which is a direct connection between two endpoints that is dedicated (i.e., unshared) for communication therebetween. Such a dedicated/direct link may be any suitable interconnect or interface, as further disclosed below, and is not limited to a network link, such as a wired Ethernet network connection or other type of wired or wireless network link. A dedicated/direct connection/link may also be referred to herein as an end-to-end path between two endpoints. Such an end-to-end path may be a single connection/link or may include serial connections/links. However, the bandwidth of the dedicated/direct connection/link in its entirety, i.e., from one endpoint to the other, is unshared, and neither the bandwidth nor the latency of the dedicated/direct connection/link may be affected by the resource utilization of elements traversed. For example, a dedicated/direct connection/link may traverse one or more buffers or other elements whose usage does not affect bandwidth or latency. However, a dedicated/direct connection/link does not traverse a shared network switch, because such a switch may affect bandwidth and/or latency due to its shared usage.

例えば、一部の実施形態では、ポイントツーポイントメッシュ172における専用接続180は、10ギガビットイーサネット(GigE)、25GigE、40GigE、100GigE、InfiniBand、Peripheral Component Interconnect-Express(PCIe)、RapidIO、Small Computer System Interface(SCSI)、FireWire、Universal Serial Bus(USB)、High Definition Multimedia Interface(HDMI)又はカスタムのシリアル若しくはパラレルバスなどの多数の態様で提供され得る。したがって、コンピュートエンジン140、ゲートウェイ120、シーケンサ150及び他の構成要素をここでは「ノード」ということもあるが、他のタイプの相互接続又はインターフェースが可能であるため、「コンピュートノード」、「ゲートウェイノード」、「シーケンサノード」又は「メッシュノード」などの用語の使用は、特定の構成要素が必ずネットワークリンクを用いて接続されることを意味するものと解釈されるべきではない。また、ここで開示される「ノード」は、ノードについて前述したそれぞれの機能を実行するように構成された任意の適宜のハードウェアコンポーネント、ソフトウェアコンポーネント、ファームウェアコンポーネント又はそれらの組合せであり得る。以下により詳細に説明するように、ノードは、プログラムされた汎用プロセッサであってもよいが、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)などの専用ハードウェアデバイス、又は他のハードウェアデバイス若しくはデバイス群、ハードウェアデバイス内のロジック、印刷回路基板(PCB)又は他のハードウェアコンポーネントであってもよい。 For example, in some embodiments, the dedicated connections 180 in the point-to-point mesh 172 may be provided in a number of ways, such as 10 Gigabit Ethernet (GigE), 25 GigE, 40 GigE, 100 GigE, InfiniBand, Peripheral Component Interconnect-Express (PCIe), RapidIO, Small Computer System Interface (SCSI), FireWire, Universal Serial Bus (USB), High Definition Multimedia Interface (HDMI), or a custom serial or parallel bus. Thus, while compute engine 140, gateway 120, sequencer 150, and other components are sometimes referred to herein as "nodes," other types of interconnections or interfaces are possible, the use of terms such as "compute node," "gateway node," "sequencer node," or "mesh node" should not be interpreted to imply that particular components are necessarily connected using a network link. Furthermore, a "node" as disclosed herein may be any suitable hardware, software, firmware, or combination thereof configured to perform the respective functions described above for the node. As described in more detail below, a node may be a programmed general-purpose processor, but may also be a dedicated hardware device such as a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or other hardware device or group of devices, logic within a hardware device, a printed circuit board (PCB), or other hardware component.

ここに開示されるノードは独立した要素であってもよいし、ロジックを実行してここに前述したようなノードの機能を実行するように構成された単一のFPGA、ASIC又は他の要素内などの単一の要素内で相互に集積されていてもよいことが理解されるべきである。また、ノードは、汎用コンピュータ及び/又は上記デバイスのいずれかによって実行されるソフトウェア実行ロジックの実体物であり得る。 It should be understood that the nodes disclosed herein may be separate entities or may be integrated together within a single entity, such as within a single FPGA, ASIC, or other entity configured to execute logic to perform the functions of the node as described herein. A node may also be an entity of software-implemented logic executed by a general-purpose computer and/or any of the above devices.

1以上の共有スイッチを通じてコンピュートエンジン140、ゲートウェイ120及びシーケンサ150などの構成要素を接続する従来のアプローチは、可能な最低レイテンシーを与えない。これらの従来のアプローチはまた、メッセージ通信量が増加した期間において、レイテンシーにおける予測不能なスパイクをもたらしてしまう。 Traditional approaches that connect components such as compute engines 140, gateways 120, and sequencers 150 through one or more shared switches do not provide the lowest possible latency. These traditional approaches also result in unpredictable spikes in latency during periods of increased message traffic.

例示実施形態では、専用接続180は、各ゲートウェイ120と各シーケンサ150の間、及び各シーケンサ150と各コアコンピュートノード140の間にも直接的に設けられる。またさらに、一部の実施形態では、専用接続180は、例示のシーケンサ150-1が他の各シーケンサ150-2、・・・、150-sに対する専用接続180を有するように、全てのシーケンサの間に設けられる。図1Dには図示していないが、一部の実施形態では、専用接続180はまた、各ゲートウェイ120-1が、図3に関して以下にさらに開示するような他の各ゲートウェイ120-2、・・・、120-gに対する専用接続180を有するように、全てのゲートウェイ120の間に設けられてもよい。同様に、一部の実施形態では、専用接続180はまた、例示のコアコンピュートノード140-1が、図3に関して以下にさらに開示するような他の各コアコンピュートノード140-2、・・・、140-cに対する専用接続180を有するように、全てのコンピュートノード140の間に設けられる。 In the illustrated embodiment, dedicated connections 180 are provided directly between each gateway 120 and each sequencer 150, and also between each sequencer 150 and each core compute node 140. Furthermore, in some embodiments, dedicated connections 180 are provided between all sequencers, such that the illustrated sequencer 150-1 has a dedicated connection 180 to each other sequencer 150-2, ..., 150-s. Although not shown in FIG. 1D , in some embodiments, dedicated connections 180 may also be provided between all gateways 120, such that each gateway 120-1 has a dedicated connection 180 to each other gateway 120-2, ..., 120-g, as further disclosed below with respect to FIG. 3. Similarly, in some embodiments, dedicated connections 180 are also provided between all of the compute nodes 140, such that the exemplary core compute node 140-1 has a dedicated connection 180 to each of the other core compute nodes 140-2, ..., 140-c, as further disclosed below with respect to FIG. 3.

2つのノード間(例えば、任意の2つのノード120、150又は140の間)の専用接続180は、一部の実施形態では、冗長性及び信頼性の増加のために、それらの同2つのノード間の複数の冗長専用接続として実施されてもよいことも理解されるべきである。例えば、ゲートウェイ120-1とコアコンピュートノード140-1の間の専用接続180-1-1は、実際に一対の専用接続として実施されてもよい。 It should also be understood that a dedicated connection 180 between two nodes (e.g., between any two nodes 120, 150, or 140) may, in some embodiments, be implemented as multiple redundant dedicated connections between those same two nodes for redundancy and increased reliability. For example, dedicated connection 180-1-1 between gateway 120-1 and core compute node 140-1 may actually be implemented as a pair of dedicated connections.

さらに、一部の実施形態によると、ノードによって送出された任意のメッセージは、ポイントツーポイントメッシュ172においてそれに直接接続された全てのノードに並列に送出される。ポイントツーポイントメッシュ172における各ノードは、メッセージの受信に応じて何らかの行動をとるのか、それとも単にメッセージを無視するのかを、例えば、ノードの構成に基づいて、それ自体で決定し得る。一部の実施形態では、ノードは、完全にメッセージを無視しなくてもよい。ノードが、その構成に起因して、メッセージの受信に応じて実質的な行動をとらない場合でも、シーケンサ150によってメッセージに割り当てられたいずれかの順序番号を消費するなど、少なくとも最小限の行動をとるようにしてもよい。すなわち、このような実施形態では、ノードは、ノードがより実質的な行動をメッセージに対してとる場合に適切な順序付け順位でそのようにすることを確実にするために、最後の受信順序番号を追跡してもよい。 Furthermore, in some embodiments, any message sent by a node is sent in parallel to all nodes directly connected to it in point-to-point mesh 172. Each node in point-to-point mesh 172 may decide for itself, based on, for example, the node's configuration, whether to take some action in response to receiving a message or simply ignore the message. In some embodiments, a node may not completely ignore a message. Even if a node, due to its configuration, does not take any substantive action in response to receiving a message, it may still take at least some minimal action, such as consuming any sequence number assigned to the message by sequencer 150. That is, in such embodiments, the node may track the last received sequence number to ensure that if the node takes more substantive action on the message, it does so in the appropriate ordering order.

例えば、「Microsoftを10株、190.00ドルで売る」という取引注文を含むメッセージが、トレーダーのパーソナルコンピュータなどの参加者デバイス130-1から生じ、ゲートウェイ120-1(すなわち、GW1)に到着するものとする。当該メッセージは、コアコンピュートノード140-2のみが現在Microsoft株の注文についてマッチングを実行しているとしても、全てのコアコンピュートノード140-1、140-2、・・・、140-cに送信される。全ての他のコアコンピュートノード140-1、140-3、・・・、140-cは、受信に応じてメッセージを無視し、又はメッセージに最小限の行動のみをとり得る。例えば、140-1、140-3、・・・、140-cによってとられる唯一の行動は、シーケンサ150-1によってメッセージに割り当てられた順序番号を消費することとなり得る。当該メッセージは、単一のシーケンサ(本例では、シーケンサ150-1)が、メッシュにサービスを提供する現在アクティブなシーケンサであってもシーケンサ150-1、150-2、・・・、150-sの全てにも送信される。他のシーケンサ150-2、・・・、150-sもメッセージを受信して、シーケンサ150-1(現在アクティブなシーケンサ)が故障した場合、又は異なるアクティブなシーケンサを移動することによって電子取引システム100の全体的信頼性が増加することになる場合、現在アクティブなシーケンサを引き継ぐ機会をそれらに与える。他のシーケンサの1以上(例えば、シーケンサ150-2)も、ディザスタリカバリサイト155にシステム状態を中継する責任を担う。ディザスタリカバリサイト155は他の物理的位置に電子取引システム100の複製を含んでいてもよく、その複製は電子取引システム100の個々の構成要素の一部又は全部の物理的又は仮想的な実体物を備える。 For example, suppose a message containing a trade order to "sell 10 shares of Microsoft at $190.00" originates from participant device 130-1, such as a trader's personal computer, and arrives at gateway 120-1 (i.e., GW1). The message is transmitted to all core compute nodes 140-1, 140-2, ..., 140-c, even though only core compute node 140-2 is currently performing matching on the order for Microsoft stock. All other core compute nodes 140-1, 140-3, ..., 140-c may ignore the message upon receipt or may take only minimal action on the message. For example, the only action taken by 140-1, 140-3, ..., 140-c may be to consume the sequence number assigned to the message by sequencer 150-1. The message is also sent to all of sequencers 150-1, 150-2, ..., 150-s, even though a single sequencer (in this example, sequencer 150-1) is the currently active sequencer serving the mesh. The other sequencers 150-2, ..., 150-s also receive the message, giving them the opportunity to take over as the currently active sequencer if sequencer 150-1 (the currently active sequencer) fails or if moving to a different active sequencer would increase the overall reliability of electronic trading system 100. One or more of the other sequencers (e.g., sequencer 150-2) are also responsible for relaying the system state to disaster recovery site 155. Disaster recovery site 155 may include a replica of electronic trading system 100 at another physical location, with the replica comprising physical or virtual instances of some or all of the individual components of electronic trading system 100.

各メッセージを全ての直接接続されたノードに並列に送出することによって、電子取引システム100は、複雑さを減少させ、さらに冗長性及び高可用性を促進する。全ての直接接続されたノードがデフォルト設定で全てのメッセージを受信する場合、複数のノードは同じメッセージに対して冗長的な態様で行動をとるように構成され得る。「Microsoftを10株、190.00ドルで売る」という注文の上記例に戻ると、一部の実施形態では、複数のコアコンピュートノード140が、Microsoft株の注文についてのマッチングを同時に実行し得る。例えば、コアコンピュートノード140-1及びコアコンピュートノード140-2の双方が、Microsoft株メッセージについてのマッチングを同時に行うことになり、当該「売り」注文の着信メッセージを受信した後、コアコンピュートノード140-1及びコアコンピュートノード140-2の各々がシーケンサ150を通じてゲートウェイ120に送信して1以上の参加者デバイス130に渡される承認又は実行メッセージなどの応答メッセージを各々独立して生成し得る。 By sending each message in parallel to all directly connected nodes, electronic trading system 100 reduces complexity and promotes redundancy and high availability. While all directly connected nodes receive all messages by default, multiple nodes may be configured to act in a redundant manner on the same message. Returning to the example of the "sell 10 shares of Microsoft at $190.00" order above, in some embodiments, multiple core compute nodes 140 may simultaneously match the Microsoft stock order. For example, both core compute node 140-1 and core compute node 140-2 would simultaneously match the Microsoft stock message, and after receiving the incoming "sell" order message, each of core compute node 140-1 and core compute node 140-2 may independently generate a response message, such as an acknowledgement or execution message, that is sent to gateway 120 via sequencer 150 and passed to one or more participant devices 130.

シーケンサ150によって保証される厳密な順位付け及び状態確定性のために、コアコンピュートノード140-1及び140-2によって独立して生成されてそこから送信された関連する応答メッセージの各々が、実質的にかつ機能的に同等となることが保証可能となる。したがって、電子取引システム100のアーキテクチャはメッセージの冗長な処理を直ちにサポートするので、システムの可用性及び復元性が増加する。このような実施形態では、ゲートウェイ120は、同じ対応する着信メッセージに対してコアコンピュートノード140から複数の関連する発信メッセージを受信し得る。これら複数の関連する応答メッセージが同等となることが保証可能であるということに起因して、ゲートウェイ120は、単に最初に受信した発信メッセージのみを処理すればよく、同じ着信メッセージに対応する後続の関連する発信メッセージを無視する。一部の実施形態では、「最初の」及び「後続の」メッセージは、当該メッセージは順序マーク付きメッセージであり得るため、それらの関連する順序番号によって識別され得る。しかし、シーケンサ150が複数の機能的に同等なメッセージの間で単一の順序識別子を割り当てるものなど、他の実施形態では、メッセージは、図1Eに関連してさらに上述したように、エンティティタイプフィールド110-16及びエンティティカウントフィールド110-17における値など、メッセージにおける他の識別情報に基づいて機能的に同等であるものとして識別され得る。 Because of the strict ordering and state determinism guaranteed by sequencer 150, each associated response message independently generated by and transmitted from core compute nodes 140-1 and 140-2 can be guaranteed to be substantially and functionally equivalent. Therefore, the architecture of electronic trading system 100 readily supports redundant processing of messages, thereby increasing system availability and resilience. In such an embodiment, gateway 120 may receive multiple associated outgoing messages from core compute node 140 for the same corresponding incoming message. Because these multiple associated response messages can be guaranteed to be equivalent, gateway 120 need only process the first received outgoing message and ignore subsequent associated outgoing messages corresponding to the same incoming message. In some embodiments, the "first" and "subsequent" messages may be identified by their associated sequence numbers, as the messages may be sequence-marked messages. However, in other embodiments, such as those in which the sequencer 150 assigns a single ordering identifier among multiple functionally equivalent messages, messages may be identified as functionally equivalent based on other identifying information in the messages, such as the values in the entity type field 110-16 and entity count field 110-17, as further described above in connection with FIG. 1E.

したがって、ゲートウェイ120が複数の機能的に同等な関連する応答メッセージのうちの最初にそれらに到着するものに対して行動をとることを可能とすることは、電子取引システム100のレイテンシー全体を改善することにもなり得る。またさらに、電子取引システム100は、任意の着信メッセージが複数のコンピュートノード140によって処理されるように容易に構成可能であり、複数のコンピュートノード140の各々は先着順にゲートウェイ120によって処理され得る同等な応答メッセージを生成する。そのようなアーキテクチャは、コンピュートノード140が(システム故障、ノード再構成又は保守作業に起因するかにかかわらず)所定期間にわたって着信メッセージを取り扱っていない場合に、レイテンシーに知覚可能な影響を与えることなく高い可用性に供する。 Thus, allowing the gateway 120 to act on the first of multiple functionally equivalent related response messages to arrive can also improve the overall latency of the electronic trading system 100. Furthermore, the electronic trading system 100 can be easily configured so that any incoming message is processed by multiple compute nodes 140, each of which generates an equivalent response message that can be processed by the gateway 120 on a first-come, first-served basis. Such an architecture provides for high availability when a compute node 140 is not handling incoming messages for a predetermined period of time (whether due to a system failure, node reconfiguration, or maintenance activity) without any perceptible impact on latency.

このような電子取引システム100のポイントツーポイントメッシュ172のアーキテクチャは、低い予測可能なレイテンシー及びメッセージの冗長処理を維持することに加えて、複数の内蔵冗長パスにも供するものである。図から分かるように、任意のゲートウェイ120と任意のコンピュートノード140の間には複数のパスが存在する。ゲートウェイ120-1とコンピュートノード140-1の間の直接接続180-1-1が利用不能となった場合でも、通信は、代わりにシーケンサ150の1つを横断することによるなどして、代替のパスを介してこれら2つの要素間で依然として可能である。したがって、より一般的には、ポイントツーポイントメッシュ172では、任意のノードと任意の他のノードの間に複数のパスが存在する。 The architecture of the point-to-point mesh 172 of such an electronic trading system 100 not only maintains low, predictable latency and redundant processing of messages, but also provides for multiple built-in redundant paths. As can be seen, multiple paths exist between any gateway 120 and any compute node 140. If the direct connection 180-1-1 between gateway 120-1 and compute node 140-1 becomes unavailable, communication is still possible between these two elements via an alternative path, such as by traversing one of the sequencers 150 instead. Thus, more generally, in the point-to-point mesh 172, multiple paths exist between any node and any other node.

またさらに、このポイントツーポイントメッシュアーキテクチャは、金融取引システムの他の重要な目標、すなわち、公平性を本来的に維持する。ノード間の直接接続を有するポイントツーポイントアーキテクチャは、任意のゲートウェイ120と任意のコアコンピュートノード140の間又はシーケンサ150と任意の他のノードの間のパスが同一の又は少なくとも非常に近似するレイテンシーを有することを確実にする。したがって、2つの異なるゲートウェイ120から同時にシーケンサ150に送出される2つの着信メッセージは、実質的に同時にシーケンサ150に到着するはずである。同様に、コアコンピュートノード140から送信される発信メッセージは、全てのゲートウェイ120に同時に送信され、実質的に同時に各ゲートウェイによって受信されるはずである。ポイントツーポイントメッシュのトポロジーはいずれか1つのゲートウェイ120を選好しないため、特定のゲートウェイ120に接続されることが参加者デバイス130に不公平な優劣を与え得る機会が最小化される。 Furthermore, this point-to-point mesh architecture inherently maintains another important goal of financial trading systems: fairness. A point-to-point architecture with direct connections between nodes ensures that the paths between any gateway 120 and any core compute node 140, or between the sequencer 150 and any other node, have identical or at least very similar latency. Thus, two incoming messages sent to the sequencer 150 simultaneously from two different gateways 120 should arrive at the sequencer 150 at substantially the same time. Similarly, an outgoing message sent from a core compute node 140 should be sent to all gateways 120 simultaneously and received by each gateway at substantially the same time. Because the point-to-point mesh topology does not favor any one gateway 120, the opportunity for connecting to a particular gateway 120 to unfairly impact a participant device 130 is minimized.

さらに、電子取引システム100のポイントツーポイントメッシュアーキテクチャは、ノードの機能、すなわち、ノードが現在ゲートウェイ120、コアコンピュートノード140又はシーケンサ150として作用しているかを容易に再構成することを可能とする。各ノードがそれ自体とポイントツーポイントメッシュにおける他の各ノードとの間の直接接続を有する実施形態においてそのような再構成を実行することは、特に容易である。各ノードがメッシュにおける他の各ノードに直接接続を介して接続される場合、メッシュ内でのノードの機能の変更(例えば、ノードの機能をコアコンピュートノード140からゲートウェイ120に、又はゲートウェイ120からシーケンサ150に変更すること)のために、ポイントツーポイントメッシュ172内の接続180(物理的か仮想的かにかかわらず)の配線又はケーブルの引き直しが必要となる。このような実施形態では、ポイントツーポイントメッシュ172の内部的に必要な再構成は、遠隔で実行される構成変更を通じて容易に実現され得る。ノードが新たなゲートウェイ120として作用するように再構成され、又はゲートウェイ120として作用することから他の機能に再構成される場合、ポイントツーポイントメッシュ172の外部的に幾らかの付随的なネットワーキング変更が必要となり得るが、メッシュの内部的な配線はそのままであってもよい。 Furthermore, the point-to-point mesh architecture of the electronic trading system 100 allows for easy reconfiguration of a node's function, i.e., whether the node is currently acting as a gateway 120, a core compute node 140, or a sequencer 150. Performing such reconfiguration is particularly easy in embodiments in which each node has a direct connection between itself and each other node in the point-to-point mesh. When each node is connected via a direct connection to each other node in the mesh, changing a node's function within the mesh (e.g., changing a node's function from a core compute node 140 to a gateway 120, or from a gateway 120 to a sequencer 150) requires rewiring or recabling the connections 180 (whether physical or virtual) within the point-to-point mesh 172. In such embodiments, any necessary reconfiguration internal to the point-to-point mesh 172 can be easily achieved through configuration changes performed remotely. If a node is reconfigured to act as a new gateway 120, or from acting as a gateway 120 to some other function, some accompanying networking changes may be required external to the point-to-point mesh 172, but the internal wiring of the mesh may remain the same.

したがって、一部の実施形態では、ノードの機能の再構成は、取引時間中にライブで、さらには動的に実現され得る。例えば、電子取引システム100の負荷の特性の変化又は新たな要求に起因して、コアコンピュートノード140-1を代わりに追加のゲートウェイ120として作用するように再構成することが有用となる場合がある。他のコンピュートノード140への状態又は構成の幾つかの可能な再分散後に、新たなゲートウェイ120が利用可能となり、参加者デバイス130からの新たな接続を受け入れ始めることになる。 Thus, in some embodiments, reconfiguration of node functionality may be achieved live, even dynamically, during trading hours. For example, due to changing load characteristics or new demands on the electronic trading system 100, it may be useful to reconfigure core compute node 140-1 to act instead as an additional gateway 120. After some possible redistribution of state or configuration to other compute nodes 140, the new gateway 120 will become available and begin accepting new connections from participant devices 130.

一部の実施形態では、より低速で潜在的により高遅延の共有接続182が、ゲートウェイ120及び/又はコアコンピュートノード140の間など、システム構成要素の間に設けられてもよい。これらの共有接続182は、図1B-2に関して以上に開示したメッセージ106及び応答107などの、ポイントツーポイントメッシュ172における専用接続180を介して実行される取引アクティビティに関連するメッセージとは対照的に、非常に低遅延の通信を必要としない保守、管制作業、管理作業及び/又は同様の作業に使用され得る。取引アクティビティに関連するトラフィックを搬送する第1の直接接続180-a、第2の直接接続180-b及び第3の直接接続180-cとは対照的に、共有接続182g及び182cは非取引アクティビティタイプのトラフィックを搬送する。非取引トラフィックを搬送する共有接続182は、1以上の共有ネットワークを介し、かつ1以上のネットワークスイッチを介するものであってもよく、メッシュにおけるノードは異なる態様でこれらの共有ネットワーク間で分散されてもよい。例えば、一部の実施形態では、ゲートウェイ120は全てゲートウェイ全域共有ネットワーク182-g内にあり、コンピュートノード140はそれら自体のそれぞれのコンピュートノード全域共有ネットワーク182-c内にあり、シーケンサ150はそれら自体の別個のシーケンサ全域共有ネットワーク182-s内にあり得るが、他の実施形態では、メッシュ内の全てのノードはそれらのレイテンシーに影響を受けない作業のための同じ共有ネットワークを介して通信し得る。 In some embodiments, slower, potentially higher latency shared connections 182 may be provided between system components, such as between gateways 120 and/or core compute nodes 140. These shared connections 182 may be used for maintenance, control, administrative, and/or similar activities that do not require very low latency communications, as opposed to messages related to trading activity performed over dedicated connections 180 in point-to-point mesh 172, such as messages 106 and responses 107 disclosed above with respect to FIG. 1B-2. In contrast to first direct connection 180-a, second direct connection 180-b, and third direct connection 180-c, which carry traffic related to trading activity, shared connections 182g and 182c carry non-trading activity types of traffic. Shared connections 182 carrying non-trading traffic may be via one or more shared networks and via one or more network switches, and the nodes in the mesh may be distributed across these shared networks in different manners. For example, in some embodiments, the gateways 120 may all be in gateway-wide shared network 182-g, the compute nodes 140 may be in their own respective compute node-wide shared network 182-c, and the sequencers 150 may be in their own separate sequencer-wide shared network 182-s, while in other embodiments, all nodes in the mesh may communicate over the same shared network for their latency-insensitive operations.

電子取引システム100などの分散コンピューティング環境は、種々の構成要素の間で緊密な同期を維持するように高分解能クロックに従うことがある。この目的のため、ノード120、140、150のうちの1以上には、一部の実施形態では、高分解能の全地球測位システム(GPS)クロック195などのクロックへのアクセスが与えられてもよい。以下の記載の目的のため、ポイントツーポイントメッシュ172に接続されたゲートウェイ120、コンピュートノード140及びシーケンサ150を「メッシュノード」といい、それらは図2に関して以下にさらに開示するようなアーキテクチャを有し得る。 Distributed computing environments such as electronic trading system 100 may rely on high-resolution clocks to maintain close synchronization among various components. To this end, one or more of nodes 120, 140, 150 may, in some embodiments, be provided with access to a clock, such as a high-resolution Global Positioning System (GPS) clock 195. For purposes of the following description, gateways 120, compute nodes 140, and sequencers 150 connected in point-to-point mesh 172 are referred to as "mesh nodes," which may have an architecture as further disclosed below with respect to FIG. 2.

図1Fは、電子取引システム100によって実行されてメッセージを処理し得る処理125の例示実施形態のフロー図である。図1B-2を参照すると、ゲートウェイ120-1は参加者デバイスからメッセージを受信し(131)、これに対して、メッセージ106をシーケンサ150-1及びコンピュートノード140-1に送信し得る(132)。ゲートウェイ120-1はメッセージ106におけるゲートウェイ120-1によって生成される識別子を任意選択的に含んでいてもよく、複数のコンピュートノード及び/又はシーケンサを備える電子取引システムにおいて、ゲートウェイ120-1はメッセージ106を全ての当該ノードに送信し得る。コンピュートノード140-1は、メッセージ106の受信に応じて、まず、メッセージ106はコンピュートノード140-1が処理に対して割り当てたものなのか否かを判定し、メッセージ106の1以上の値又は識別子(例えば、所与の金融商品を表す銘柄記号又はトランザクションのタイプなどの共通パラメータの値)に基づいてこの判定を行ってもよい。メッセージ106が処理に割り当てられたものである場合には、コンピュートノード140-1はメッセージ106に前処理を実行して(134)予備結果を生成し得る。例えば、コンピュートノード140-1は、メッセージ106において参照される値に関連する情報(例えば、金融商品の銘柄記号)をメモリに読み込んでもよい。代替的又は追加的に、一部の実施形態では、前処理は、非限定的な例として、承認メッセージ又は実行メッセージを含む応答メッセージを生成すること、メッセージ106において参照される値(例えば、金融商品についての銘柄記号)に対する注文控え帳の予備更新を行うことなど、マッチング機能を実行することを含み得る。このような前処理は、それが有害な副作用を有さないように行われてもよいし、又は必要に応じて、前処理が実行されたメッセージが順通りには受信されなかったことが後に判定される場合にアトミックに(すなわち、トランザクション毎に)「ロールバック」されてもよい。 FIG. 1F is a flow diagram of an example embodiment of a process 125 that may be performed by electronic trading system 100 to process a message. Referring to FIG. 1B-2, gateway 120-1 may receive a message from a participant device (131) and, in response, transmit message 106 to sequencer 150-1 and compute node 140-1 (132). Gateway 120-1 may optionally include an identifier generated by gateway 120-1 in message 106; in an electronic trading system with multiple compute nodes and/or sequencers, gateway 120-1 may transmit message 106 to all such nodes. In response to receiving message 106, compute node 140-1 may first determine whether message 106 is one that compute node 140-1 has assigned for processing, and may make this determination based on one or more values or identifiers in message 106 (e.g., the value of a common parameter such as a stock symbol representing a given financial instrument or a transaction type). If message 106 is assigned for processing, compute node 140-1 may perform pre-processing (134) on message 106 to generate preliminary results. For example, compute node 140-1 may load information related to values referenced in message 106 (e.g., stock symbols for financial instruments) into memory. Alternatively or additionally, in some embodiments, pre-processing may include performing matching functions, such as generating response messages, including, by way of non-limiting example, acknowledgement messages or execution messages, or performing preliminary order book updates for values referenced in message 106 (e.g., stock symbols for financial instruments). Such pre-processing may be performed such that it has no adverse side effects, or, if desired, may be "rolled back" atomically (i.e., transactionally) if it is later determined that the messages on which pre-processing was performed were received out of order.

同時に、シーケンサ150-1は、例えば、所与の順位(すなわち、順序)で処理される必要があり得る一連のメッセージ内でメッセージ106の位置が識別されることを可能とする固有順序識別子にメッセージ106を関連付けること(133)によってメッセージ106を順序付けて、メッセージ106の順序マーク付きバージョン、すなわち、順序マーク付きメッセージ106´を生成し得る。完了すると、シーケンサ150-1は、メッセージ106(又はその表示)及び順序識別子を含む順序マーク付きメッセージ106´をコンピュートノード140-1に送信してもよい(135)。コンピュートノード140-1が順序マーク付きメッセージ106´を受信すると、それは、一部の実施形態では、それがその前処理を実行した(順序付けなし)メッセージ106が順通りに受信されたか否かを判定し、すなわち、順序を検証し得る(136)。順序を検証することの一部として、コンピュートノード140-1は、両バージョンのメッセージにおける共通のメタデータ又は共通の識別情報によってメッセージ106を順序マーク付きメッセージ106´に相関付けてもよい。例示実施形態の処理125において、メッセージ106は順通りに受信されており、コンピュートノード140-1はメッセージ106を処理するステップを継続すること(137)に進むことができる。前処理の結果として、コンピュートノード140-1は、順序マーク付きメッセージ106´を受信した後に実行していたことになる幾つかの動作(例えば、値のキャッシュメモリ参照)を既に完了しており、それにより、コンピュートノード140-1は、前処理動作がなかったとした場合に完了するよりも早くメッセージ106を処理するステップを完了し得る。 Concurrently, sequencer 150-1 may order message 106 by, for example, associating message 106 with a unique order identifier (133) that enables message 106's position to be identified within a sequence of messages that may need to be processed in a given order (i.e., order), to generate an order-marked version of message 106, i.e., order-marked message 106'. Upon completion, sequencer 150-1 may send order-marked message 106', including message 106 (or a representation thereof) and the order identifier, to compute node 140-1 (135). When compute node 140-1 receives order-marked message 106', it may, in some embodiments, determine whether the messages 106 on which it performed its preprocessing (unordered) were received in order, i.e., verify the order (136). As part of verifying the order, compute node 140-1 may correlate message 106 with order-marked message 106' via common metadata or common identifying information in both versions of the message. In the example embodiment, in process 125, message 106 was received in order, and compute node 140-1 may proceed to continue processing message 106 (137). As a result of the pre-processing, compute node 140-1 has already completed some operations (e.g., cache lookups for values) that it would have performed after receiving order-marked message 106', thereby allowing compute node 140-1 to complete processing message 106 more quickly than it would have done absent the pre-processing operations.

図1Gは、電子取引システムの動作の他の例示実施形態を示す処理165の例示実施形態のフロー図である。処理165は、電子取引システム100によって実行されてメッセージを処理し得る。図1Gの実施形態では、電子取引システム100は、少なくとも第2のゲートウェイであるゲートウェイ120-2を含む。図1B-2を参照すると、ゲートウェイ120-1は、第1のメッセージ(M1)を参加者デバイスから受信し(166)、これに対して、第1のメッセージM1に対応するメッセージ106をシーケンサ150-1及びコンピュートノード140-1に送信し得る(167)。メッセージ106を第1のメッセージM1ともいう場合があるが、ゲートウェイがそのメッセージを、非限定的な例として、ゲートウェイ120-1の識別子など異なるメタデータを含むように修正している場合があるため、メッセージ106はM1と同一ではない場合があることが理解されるべきである。ゲートウェイ120-2は、第2のメッセージ(M2)を他の参加者デバイスから受信し(168)、第2のメッセージM2に対応するメッセージをシーケンサ150-1及びコンピュートノード140-1に送信し得る(169)。第2のメッセージM2に対応するメッセージを、ここでは第2のメッセージM2という場合もある。本例では、第1及び第2のメッセージは共通の一連のメッセージに属し、それにより、第1及び第2のメッセージが処理される相対順位(すなわち、順序)が電子取引システム100の状態に影響を与え得る。図1Gの例示実施形態では、コンピュートノード140-1は第1のメッセージを受信する前に第2のメッセージを受信し、第2のメッセージはコンピュートノード140-1が処理に割り当てたものであると確認すると、その後にコンピュートノード140-1はメッセージに対して前処理を実行し得る(171)。第1のメッセージ(M1)を受信すると、コンピュートノード140-1は、第1のメッセージ(M1)に対しても前処理を実行し得る(173)。 FIG. 1G is a flow diagram of an example embodiment of process 165 illustrating another example embodiment of the operation of an electronic trading system. Process 165 may be executed by electronic trading system 100 to process a message. In the embodiment of FIG. 1G, electronic trading system 100 includes at least a second gateway, gateway 120-2. Referring to FIG. 1B-2, gateway 120-1 may receive a first message (M1) from a participant device (166) and, in response, transmit a message 106 corresponding to first message M1 to sequencer 150-1 and compute node 140-1 (167). While message 106 may also be referred to as first message M1, it should be understood that message 106 may not be identical to M1 because the gateway may have modified the message to include different metadata, such as, by way of non-limiting example, an identifier for gateway 120-1. Gateway 120-2 may receive a second message (M2) from another participant device (168) and may transmit a message corresponding to second message M2 to sequencer 150-1 and compute node 140-1 (169). The message corresponding to second message M2 may also be referred to herein as second message M2. In this example, the first and second messages belong to a common series of messages, such that the relative order (i.e., sequence) in which the first and second messages are processed may affect the state of electronic trading system 100. In the example embodiment of FIG. 1G, compute node 140-1 receives the second message before receiving the first message, and upon verifying that the second message is the one that compute node 140-1 assigned for processing, compute node 140-1 may then perform pre-processing on the message (171). Upon receiving the first message (M1), compute node 140-1 may also perform pre-processing on the first message (M1) (173).

シーケンサ150-1は、第1及び第2のメッセージの双方を受信し得る。そして、シーケンサ150-1は、第1及び第2のメッセージの各々に、第1及び第2のメッセージの相対順位付け、すなわち、順序を決定するのに使用され得るそれぞれの固有順序識別子を割り当て得る(170、174)。一部の実施形態では、シーケンサによってメッセージに割り当てられる順序識別子は、非限定的な例として単調増加する順序番号であり得る。またさらに、一部の実施形態では、シーケンサによってメッセージに割り当てられる順序識別子の値は、シーケンサ150-1におけるメッセージの到着時刻に基づいていてもよい。すなわち、一部の実施形態では、非限定的な例として、メッセージは、それらがシーケンサ150-1によって受信される毎に先入先出(FIFO)キューに入れられ、それらがFIFOキューから除去される毎に順序識別子を割り当てられる。図1Gの例示実施形態では、シーケンサ150-1においてメッセージM1はメッセージM2よりも先に受信されているので、順序識別子が単調増加する順序番号である実施形態では、シーケンサ150-1によって、メッセージM1は、メッセージM2に割り当てられた他方の順序番号に相対してより低い順序番号を割り当てられることになる。順序識別子を各メッセージに割り当てる処理が完了すると、シーケンサ150-1は、第1及び第2のメッセージ又はそれらの表示に対応するマーク付きメッセージ(すなわち、順序識別子を含むメッセージ)をコンピュートノード140-1に送信し得る(175、177)。一部の実施形態では、コンピュートノード140-1がマーク付きメッセージを受信すると、それがその前処理を実行した(順序付けなし)メッセージ106が順通りに受信されたか否かを判定し、すなわち、順序を検証し得る(176)。順序を検証することの一部として、コンピュートノード140-1は、両バージョンのメッセージにおける共通のメタデータ又は共通の識別情報によって順序付けなしメッセージ106を順序マーク付きメッセージ106´に相関付けてもよい。処理165において、コンピュートノード140-1は、第2のメッセージを順通りには受信されていない。この結果において、前処理(例えば、非限定的な例として、メッセージの共通パラメータの値についてのキャッシュ参照)の成果物の一部又は全部は、任意選択的に破棄されてもよく、又は他のタイプの前処理についてはアトミックロールバックされてもよい。そして、コンピュートノード140-1は、第1及び第2のメッセージの双方をシーケンサ150-1によって示されるように順位(すなわち、順序)通りに処理すること(178)に進み得る。 Sequencer 150-1 may receive both the first and second messages. Sequencer 150-1 may then assign each of the first and second messages a respective unique sequence identifier that can be used to determine the relative ranking, i.e., order, of the first and second messages (170, 174). In some embodiments, the sequence identifiers assigned to messages by the sequencer may be, as a non-limiting example, monotonically increasing sequence numbers. Furthermore, in some embodiments, the value of the sequence identifier assigned to messages by the sequencer may be based on the arrival time of the messages at sequencer 150-1. That is, in some embodiments, as a non-limiting example, messages are placed in a first-in, first-out (FIFO) queue as they are received by sequencer 150-1 and are assigned a sequence identifier as they are removed from the FIFO queue. 1G , because message M1 was received before message M2 at sequencer 150-1, in an embodiment in which the order identifiers are monotonically increasing order numbers, sequencer 150-1 will assign message M1 a lower order number relative to the other order number assigned to message M2. After assigning order identifiers to each message is complete, sequencer 150-1 may send marked messages (i.e., messages including order identifiers) corresponding to the first and second messages or representations thereof to compute node 140-1 (175, 177). In some embodiments, once compute node 140-1 receives the marked messages, it may determine whether the (unordered) messages 106 on which it performed preprocessing were received in order, i.e., verify the order (176). As part of verifying the order, compute node 140-1 may correlate unordered message 106 with ordered marked message 106′ via common metadata or common identifying information in both versions of the messages. In operation 165, compute node 140-1 receives the second message out of order. As a result, some or all of the artifacts of prior processing (e.g., as a non-limiting example, cache lookups for values of common parameters of the messages) may optionally be discarded, or, for other types of prior processing, may be atomically rolled back. Compute node 140-1 may then proceed to process (178) both the first and second messages in the order (i.e., sequential) indicated by sequencer 150-1.

順序付けなしメッセージがコンピュートノード140-1において順通りには受信されなかったことが判定された場合でも、ノード140-1は前処理をメッセージに行うことから依然として利益を受けることになる。メッセージを前処理することによって、コンピュートノード140-1は、このメッセージを将来処理する必要がありそうであると判定しており、これにより、時間を節約する先手の行動をとることができる。例えば、同じ株式表示記号に対する現在の未決済取引注文についての情報など、メッセージを完全に処理するのに必要となる情報は、メッセージが完全に処理可能となる前により高速側メモリ(例えば、図2に示す固定ロジックメモリ250などのFPGAメモリ、又は他のキャッシュメモリ)に存在している必要があり、高速側メモリに未だ存在していない場合には、低速側メモリ(例えば、ハードディスク、又は図2に示すDRAM280などのDRAM)からの取得が最初に必要となり得る。最近参照されていないメッセージの株式表示記号などの共通パラメータの値について、この情報は現在高速側メモリに存在ない場合もあるが、コンピュートノード140-1は、順序通りでないメッセージの場合であっても予めメモリコピー動作を実行し、それにより、順序付きメッセージが適切な順位(すなわち、順序)でその後に速やかに到着する場合に時間を節約することができる。高速側メモリが複数の値に対して情報を保持するのに充分に大容量であることを条件として、コンピュートノードが予め多数の値に対して情報をプリフェッチすることを可能とすることによって、複数の連続する順通りでないメッセージの列を受信することさえも有益となり得る。したがって、コンピュートノード140-1は、前処理動作の結果を無視するのではなく、その結果を後の処理動作中の参照のために一時的に保存してもよい。 Even if compute node 140-1 determines that an unordered message was received out of order, node 140-1 still benefits from preprocessing the message. By preprocessing the message, compute node 140-1 has determined that it is likely that it will need to process this message in the future, allowing it to take preemptive action that saves time. For example, information needed to fully process the message, such as information about currently open trading orders for the same stock symbol, must be present in faster memory (e.g., FPGA memory, such as fixed logic memory 250 shown in FIG. 2, or other cache memory) before the message can be fully processed; if not already present in faster memory, it may first need to be retrieved from slower memory (e.g., a hard disk or DRAM, such as DRAM 280 shown in FIG. 2). For values of common parameters, such as stock symbols, for messages that have not been referenced recently, this information may not currently reside in fast-side memory, but compute node 140-1 may perform a memory copy operation in advance even for out-of-order messages, thereby saving time if an ordered message arrives quickly thereafter in the proper order (i.e., sequence). Provided that fast-side memory is large enough to hold information for multiple values, even receiving a sequence of multiple consecutive out-of-order messages may be beneficial by allowing the compute node to prefetch information for many values in advance. Thus, rather than ignoring the results of pre-processing operations, compute node 140-1 may temporarily store the results for reference during later processing operations.

一部の例示実施形態では、コンピュートノードによる前処理の成果物は、順序順位付けに従わないインスタンスにおいては依然として有効であり得る。例えば、各コンピューティングノードが、メッセージの共通パラメータの値の一部の組(例えば、限定的な数の株式表示記号、又は金融商品の他のインジケータ)など、動作の一部の組を取り扱う実施形態では、コンピューティングノードは、それが取り扱わない他の株式表示記号を参照するメッセージを依然として受信し得るが、順序の順位は、コンピューティングノードが取り扱う値にそれが影響を与える限りにおいてのみ、コンピュートノードに関連し得る。また、異なる値を参照するメッセージの順位付けは、相互から独立しているものとみなされ得る。例えば、メッセージが、異なる値の株式表示記号を参照する他のメッセージに相対して順通りに受信されない場合、これら2つのメッセージが処理される順序はマッチング機能動作の結果に影響することはなく、前処理に関する更なる行動(例えば、ロールバック)は必要とならず、前処理された結果は、最終的には修正なしに使用され及び/又は分散システムの状態に拘束され得る。 In some example embodiments, the results of preprocessing by a compute node may remain valid in instances where the order ranking is not followed. For example, in embodiments in which each computing node handles a subset of operations, such as a subset of values for a common parameter of messages (e.g., a limited number of stock symbols or other indicators of financial instruments), a computing node may still receive messages that reference other stock symbols that it does not handle, but the order ranking may be relevant to the compute node only insofar as it affects the values that the computing node handles. Also, the ordering of messages that reference different values may be considered independent of one another. For example, if a message is received out of order relative to another message that references a stock symbol with a different value, the order in which these two messages are processed does not affect the outcome of the matching function operation, no further action (e.g., rollback) related to preprocessing is required, and the preprocessed results may ultimately be used without modification and/or bound to the state of the distributed system.

一部の実施形態では、順序を検証すること(図1Fの136及び図1Gの176)は、コンピュートノード140-1によって実行される前処理の性質によっては必要でない場合もあることが理解されるべきである。例えば、順序付けなしメッセージに対して実行される前処理が有害な副作用を有さず、他のメッセージの処理(例えば、メッセージにおいて参照される銘柄記号に関連するデータを高速側のメモリに読み込むこと)の結果に影響することがない場合には、順序付けなしメッセージの前処理がシーケンサ150-1によって決定される順序に応じて行われたことを検証する必要はない場合があり、確かに前処理の結果を破棄又はアトミックロールバックする必要がない場合もある。このような実施形態では、コンピュートノード140-1は、単にその後に、前処理された結果を利用する間は常に、順序マーク付きメッセージ106´において順序識別子によって指定された順序の順位で、順序マーク付きメッセージ106´を受信したことに応じてメッセージの処理を完了し得る。 It should be understood that in some embodiments, verifying the order (136 in FIG. 1F and 176 in FIG. 1G) may not be necessary depending on the nature of the pre-processing performed by compute node 140-1. For example, if the pre-processing performed on the unordered message does not have adverse side effects and does not affect the results of processing other messages (e.g., loading data related to stock symbols referenced in the message into high-speed memory), then it may not be necessary to verify that the pre-processing of the unordered message was performed in accordance with the order determined by sequencer 150-1, and certainly it may not be necessary to discard or atomically roll back the results of the pre-processing. In such an embodiment, compute node 140-1 may simply complete processing of the message in accordance with receiving the order-marked message 106' in the order specified by the order identifier in the order-marked message 106', whenever thereafter utilizing the pre-processed results.

順序付けなしメッセージについて行われ得る前処理の量、及びその前処理の結果が破棄又はロールバックされる必要があるか否かは、図1Eの実施形態に係るメッセージタイプフィールド110-1、銘柄記号フィールド110-2、サイドフィールド110-3又は価格フィールド110-4など、メッセージにおけるフィールドに応じていてもよい。それは、同じ株式表示記号など、メッセージにおける共通パラメータに対する同じ値を参照する他の順序付けなしメッセージが現在未処理である(すなわち、それに対して対応する順序マーク付きメッセージが未だ受信されていない)か否かに応じてもよい。 The amount of pre-processing that can be performed on an unordered message, and whether the results of that pre-processing need to be discarded or rolled back, may depend on fields in the message, such as the message type field 110-1, stock symbol field 110-2, side field 110-3, or price field 110-4 in the embodiment of FIG. 1E. It may also depend on whether other unordered messages that reference the same value for a common parameter in the message, such as the same stock symbol, are currently outstanding (i.e., for which a corresponding order-marked message has not yet been received).

例えば、「新規注文」のメッセージタイプを有する順序付けなしメッセージがコアコンピュートノード140-1によって受信された場合、コアコンピュートノード140-1は注文控え帳の関連部分に関連する銘柄記号情報を高速メモリに読み込み、その新規注文が注文控え帳において未決済注文に対して一致するものである場合、コンピュートノード140-1は、それにより「約定」メッセージを生成し始めるが、当該メッセージの順序付きバージョンを受信するまで、注文控え帳の更新を確約すること及び「約定」メッセージを送出することを控えることになる。ただし、コンピュートノード140-1が、注文控え帳における同じ未決済注文に対する潜在的な一致ともなるような、同じ株式表示記号、サイド、価格などを参照する他の未処理の順序付けなし「新規注文」メッセージも受信している場合、コアコンピュートノード140-1はその前処理を異なる態様で実行してもよい。一部の実施形態では、コアコンピュートノード140-1は、未決済注文に対して一致として作用し得る2つの未処理の順序付けなし「新規注文」メッセージの各々について、競合する潜在的な「約定」メッセージを生成し得る。メッセージの順序付きバージョンに基づいて、潜在的な「約定」メッセージの1つが破棄されてもよく、他方は注文控え帳に確約されてゲートウェイ120に送出されることになる。他の実施形態では、2以上の可能性ある未処理の順序付けなしメッセージが潜在的に同じ未決済注文に一致し得る場合、コンピュートノード140-1は、破棄若しくはロールバックされる必要があるいずれの前処理も実行せず(例えば、いずれの潜在的な「約定」メッセージも作成せず)又はこれらの未処理の順序付けなしメッセージについてのいずれの当該前処理も中止若しくは中断し得る。 For example, when an unordered message having a message type of "New Order" is received by core compute node 140-1, core compute node 140-1 will load stock symbol information associated with the relevant portion of the order book into high-speed memory, and if the new order is a match for an open order in the order book, compute node 140-1 will begin generating a "fill" message accordingly, but will refrain from committing to updating the order book and sending the "fill" message until it receives an ordered version of the message. However, if compute node 140-1 is also receiving other outstanding unordered "New Order" messages referencing the same stock symbol, side, price, etc. that are also potential matches for the same open order in the order book, core compute node 140-1 may perform its pre-processing differently. In some embodiments, core compute node 140-1 may generate a competing potential "fill" message for each of two outstanding unordered "new order" messages that could potentially act as a match for an outstanding order. Based on the ordered version of the message, one of the potential "fill" messages may be discarded, while the other will be committed to the order book and sent to gateway 120. In other embodiments, if two or more potential outstanding unordered messages could potentially match the same outstanding order, compute node 140-1 may not perform any pre-processing that needs to be discarded or rolled back (e.g., not create any potential "fill" messages), or may abort or suspend any such pre-processing for these outstanding unordered messages.

他の例として、注文控え帳における未決済注文に対する潜在的な一致となる未処理の順序付けなし「新規注文」メッセージは、「新規注文」メッセージに対する潜在的な一致として作用することになる注文控え帳における同じ未決済注文をそれぞれ置き換え又は取り消すことを試みる未処理の順序付けなし「置換え注文」メッセージ又は「取消し注文」メッセージと競合し得る。この場合、「新規注文」メッセージ対「置換え/取消し注文」メッセージの、シーケンサによって割り当てられた相対順序に応じて、最終結果は、注文控え帳における未決済注文と「新規注文」メッセージとの間の一致となるか、それとも当該未決済注文が取り消され又は異なる価格若しくは数量の新規注文によって置き換えられるかのいずれかとなり得る。競合する未処理の順序付けなしメッセージの順序マーク付きバージョンがシーケンサ150-1によって受信されるまで、コンピュートノード140-1はこれら2つの結果のいずれとなるべきかを決定することはできない。 As another example, an outstanding unordered "New Order" message that is a potential match for an open order in the order book may conflict with an outstanding unordered "Replace Order" message or "Cancel Order" message that attempts to replace or cancel, respectively, the same open order in the order book that would otherwise serve as a potential match for the "New Order" message. In this case, depending on the relative order assigned by the sequencer to the "New Order" message versus the "Replace/Cancel Order" message, the end result may be either a match between the open order in the order book and the "New Order" message, or the open order may be canceled or replaced by a new order at a different price or quantity. Until an order-marked version of the conflicting outstanding unordered message is received by sequencer 150-1, compute node 140-1 cannot determine which of these two outcomes should occur.

この場合、コンピュートノード140-1は、前処理を異なる態様で実行し得る。一部の実施形態では、複数の競合する未処理の順序付けなしメッセージがある場合、コンピュートノード140-1は、両競合メッセージにおいて参照される銘柄記号に関連する注文控え帳の関連部分を高速側のメモリに読み込むなど、ロールバック又は破棄される必要のない前処理を単に実行し得る。他の実施形態では、コンピュートノード140-1は、各々が複数の競合シナリオの1つに対応する1以上の暫定の潜在的な応答を構成するなど、追加の前処理を実行してもよい。例えば、コンピュートノード140-1は、潜在的な「約定」メッセージ及び/又は潜在的な「置換え承認」メッセージ又は「取消し承認」メッセージを作成し、場合によっては、複数の可能性ある結果のうちの1以上に対応する注文控え帳の暫定的な更新を行ってもよい。一部の実施形態では、コンピュートノード140-1はこの追加の前処理を全ての当該競合シナリオについて実行し得るが、他の実施形態では、コンピュートノード140-1は追加の前処理を競合シナリオのうちの1つ又は一部の組についてのみ実行し得る。例えば、コンピュートノード140-1は、他の未処理の競合する順序付けなしメッセージがない場合にのみ追加の前処理を未処理の順序付けなしメッセージに対して実行してもよい。代替的又は追加的に、コンピュートノード140-1は、前処理の結果をロールバック又は破棄することに伴う時間及び/又は複雑さの量に従って未処理の競合する順序付けなしメッセージについて、追加の前処理の実行を優先し得る。コンピュートノード140-1は、未処理の順序付けなしメッセージの順序マーク付きバージョンを受信すると、その後、未処理の順序付けなしメッセージが処理されるべき(シーケンサ150-1によって割り当てられるような)順序を決定し、その順序でのメッセージの処理を完了し得る。これは、一部の実施形態では、前処理の1以上の結果をロールバック又は破棄することを含み得る。 In this case, compute node 140-1 may perform pre-processing differently. In some embodiments, if there are multiple conflicting unordered messages outstanding, compute node 140-1 may simply perform pre-processing that does not need to be rolled back or discarded, such as loading into fast-side memory the relevant portions of the order book associated with the stock symbols referenced in both conflicting messages. In other embodiments, compute node 140-1 may perform additional pre-processing, such as constructing one or more provisional potential responses, each corresponding to one of multiple conflict scenarios. For example, compute node 140-1 may create potential "fill" messages and/or potential "replace acknowledge" or "cancel acknowledge" messages, and possibly perform provisional updates to the order book corresponding to one or more of multiple possible outcomes. In some embodiments, compute node 140-1 may perform this additional pre-processing for all such conflict scenarios, while in other embodiments, compute node 140-1 may perform the additional pre-processing for only one or a subset of the conflict scenarios. For example, compute node 140-1 may perform additional pre-processing on unprocessed unordered messages only if there are no other outstanding conflicting unordered messages. Alternatively or additionally, compute node 140-1 may prioritize performing additional pre-processing on unprocessed conflicting unordered messages according to the amount of time and/or complexity associated with rolling back or discarding the results of the pre-processing. Upon receiving an order-marked version of an unprocessed unordered message, compute node 140-1 may then determine the order (as assigned by sequencer 150-1) in which the unprocessed unordered messages should be processed and complete processing of the messages in that order. This may, in some embodiments, include rolling back or discarding one or more results of the pre-processing.

既に上述した前処理のタイプに加えて、一部の実施形態では、コンピュートノード140-1は、追加的又は代替的に、メッセージの有効性に関して前処理を実行してメッセージを受諾するのか拒否するのかを決定し得る。例えば、前処理は、メッセージによって指定された価格又は数量が最大値を超えないこと(すなわち、「最大価格確認」又は「最大数量確認」)、メッセージにおける銘柄記号が既知の銘柄記号であること(すなわち、「未知銘柄記号確認」)、当該銘柄記号に対して取引が現在許可されていること(すなわち、「銘柄記号停止確認」)又は価格が正しい小数点以下の桁数に従って適正に指定されていること(すなわち、「サブペニー確認」)を確認することなど、メッセージにリアルタイムリスク確認を行うことを含み得る。一部の実施形態では、前処理のタイプは、特定のクライアント又は取引注文に対して「自己取引防止」が有効化されている場合、特定の潜在的な一致が自己取引となること、すなわち、取引中のクライアントがそれ自体に対してマッチングすることを防止するための「自己取引防止」有効性確認を含み得る。取引注文がこれらの有効性確認の1以上に失敗した場合、電子取引システム100は適宜の拒否メッセージで応答し得る。これらの有効性確認が上記実施形態ではコンピュートノード140-1によって実行されるものとして説明するが、これらのタイプの有効性確認の少なくとも一部は、一部の実施形態では、ゲートウェイ120又は電子取引システム100における他のノードによって代替的又は追加的に実行され得ることが理解されるべきである。 In addition to the types of pre-processing already described above, in some embodiments, compute node 140-1 may additionally or alternatively perform pre-processing on the message regarding its validity to determine whether to accept or reject it. For example, pre-processing may include performing real-time risk checks on the message, such as verifying that the price or quantity specified by the message does not exceed a maximum value (i.e., a "max price check" or a "max quantity check"), that the stock symbol in the message is a known stock symbol (i.e., an "unknown stock symbol check"), that trading is currently permitted for that stock symbol (i.e., a "stock symbol stop check"), or that the price is properly specified with the correct number of decimal points (i.e., a "sub-penny check"). In some embodiments, a type of pre-processing may include an "anti-self-trading" validation check to prevent a particular potential match from being a self-trading, i.e., a trading client from matching against itself, if "anti-self-trading" is enabled for the particular client or trade order. If the trade order fails one or more of these validation checks, electronic trading system 100 may respond with an appropriate rejection message. While these validation checks are described in the above embodiment as being performed by compute node 140-1, it should be understood that in some embodiments, at least some of these types of validation checks may alternatively or additionally be performed by gateway 120 or other nodes in electronic trading system 100.

更なる実施形態では、ゲートウェイ120-1が、クライアントから生じたメッセージに関連する固有のシステム全体順序識別子を通知されることが有益又は必要となり得る。この情報によって、ゲートウェイ120-1が当初の着信メッセージを固有順序番号に一致することが可能となり得る。これは、電子取引システム100の全体を通じてメッセージの適正な順位付けを確実にするのに使用される。ゲートウェイにおけるこのような構成は、電子取引システム100が状態確定性を実現してゲートウェイにおけるアクティビティに関してフォールトトレランス、高可用性及び災害復旧性を与えることを必要とし得る。着信メッセージに関連する順序識別子の情報を保持するようにゲートウェイ120-1を構成する1つの解決手段は、ゲートウェイ120-1に、メッセージをコンピュートノード140-1に転送する前に順序識別子とともにシーケンサ150-1からの返信を待機させることである。このようなアプローチは、メッセージの処理にレイテンシーを付加し得る。更なる例では、コンピュートノード140-1に、それがゲートウェイ120-1から当初受信した順序マーク付きメッセージを転送することに加えて、シーケンサ150-1は順序マーク付きメッセージ(例えば、図1B-2に示すようなマーク付きメッセージ106´)をゲートウェイ120-1に並列に送信してもよい。結果として、ゲートウェイ120-1は、電子取引システム100におけるレイテンシーを最小化しつつ、順序識別子の情報を保持し得る。 In further embodiments, it may be beneficial or necessary for gateway 120-1 to be informed of a unique system-wide sequence identifier associated with a client-originated message. This information may enable gateway 120-1 to match the original incoming message to a unique sequence number, which is used to ensure proper ordering of messages throughout electronic trading system 100. Such a configuration at the gateway may be required for electronic trading system 100 to achieve state determinism to provide fault tolerance, high availability, and disaster recovery with respect to activity at the gateway. One solution for configuring gateway 120-1 to maintain information about sequence identifiers associated with incoming messages is to have gateway 120-1 wait for a reply from sequencer 150-1 with the sequence identifier before forwarding the message to compute node 140-1. Such an approach may add latency to the processing of messages. In a further example, in addition to forwarding to compute node 140-1 the sequence-marked message it originally received from gateway 120-1, sequencer 150-1 may send sequence-marked messages (e.g., marked messages 106' as shown in FIG. 1B-2) in parallel to gateway 120-1. As a result, gateway 120-1 may retain sequence identifier information while minimizing latency in electronic trading system 100.

図2は、以上に開示した電子取引システム100などの電子取引システムのポイントツーポイントメッシュアーキテクチャにおけるメッシュノードの例示実施形態のブロック図である。図2は、電子取引システム100のポイントツーポイントメッシュ172のアーキテクチャにおけるメッシュノード200の例示実施形態を示す。メッシュノード200は、例えば、ゲートウェイ120、シーケンサ150又はコアコンピュートノード140を表し得る。本例ではメッシュノード200における機能はハードウェア及びソフトウェアの双方にわたって分散されているが、メッシュノード200は純粋なハードウェア及び純粋なソフトウェアの実施例を含むハードウェア及びソフトウェアの任意の適宜の組合せで実施されてもよいし、一部の実施形態では、ゲートウェイ120、コンピュートノード140及び/又はシーケンサ150のいずれか又は全てが市販品のコンポーネントで実施されてもよい。 FIG. 2 is a block diagram of an example embodiment of a mesh node in a point-to-point mesh architecture of an electronic trading system, such as the electronic trading system 100 disclosed above. FIG. 2 illustrates an example embodiment of a mesh node 200 in the point-to-point mesh 172 architecture of the electronic trading system 100. The mesh node 200 may represent, for example, a gateway 120, a sequencer 150, or a core compute node 140. While the functionality in the mesh node 200 is distributed across both hardware and software in this example, the mesh node 200 may be implemented in any suitable combination of hardware and software, including pure hardware and pure software implementations, and in some embodiments, any or all of the gateway 120, the compute node 140, and/or the sequencer 150 may be implemented with commercially available components.

図2に示す実施形態では、ローレイテンシーを達成するために、一部の機能は固定ロジックデバイス230においてハードウェアで実施される一方で、他の機能はデバイスドライバ220及びメッシュソフトウェアアプリケーション210においてソフトウェアで実施される。固定ロジックデバイス230は、特定用途向け集積回路(ASIC)、組み込みプロセッサ又はフィールドプログラマブルゲートアレイ(FPGA)を含む任意の適宜の態様で実施され得る。メッシュソフトウェアアプリケーション210及びデバイスドライバ220は、中央処理装置(CPU)などの1以上のプログラマブルデータプロセッサを実行する命令として実施され得る。異なるバージョン又は構成のメッシュソフトウェアアプリケーション210が、その役割に応じてメッシュノード200にインストールされ得る。例えば、メッシュノード200がゲートウェイ120、シーケンサ150又はコアコンピュートノード140のいずれで動作しているのかに基づいて、異なるバージョン又は構成のメッシュソフトウェアアプリケーション210がインストールされ得る。 In the embodiment shown in FIG. 2, to achieve low latency, some functions are implemented in hardware in a fixed logic device 230, while other functions are implemented in software in a device driver 220 and a mesh software application 210. The fixed logic device 230 may be implemented in any suitable manner, including an application-specific integrated circuit (ASIC), an embedded processor, or a field-programmable gate array (FPGA). The mesh software application 210 and the device driver 220 may be implemented as instructions executing on one or more programmable data processors, such as a central processing unit (CPU). Different versions or configurations of the mesh software application 210 may be installed on a mesh node 200 depending on its role. For example, different versions or configurations of the mesh software application 210 may be installed based on whether the mesh node 200 is operating as a gateway 120, a sequencer 150, or a core compute node 140.

任意の適宜の物理通信リンクレイヤが採用され得るが(ユニバーサルシリアルバス(USB)、ペリフェラルコンポーネントインターコネクト(PCI)エクスプレス(PCI-Express、すなわち、PCI-E)、高精細度マルチメディアインターフェース(HDMI)、10ギガビットイーサネット(GigE)、40GigE、100GigE又はInfiniBand(IB)を含み、ファイバ又は銅ケーブルを介する)、本例では、メッシュノード200は複数の低遅延10ギガビットイーサネット・スモールフォームファクタープラガブルプラス(SFP+)コネクタ(インターフェース)270-1、270-2、270-3、・・・、270-n(コネクタ270としてまとめて示す)を有する。コネクタ270は、例えば、専用接続180を介してポイントツーポイントメッシュにおいて他のノードに直接接続され、共有接続182を介して接続され、及び/又はゲートウェイ120を介して参加者デバイス130に接続され得る。これらのコネクタ270は、本例では、それぞれ10GigEメディアアクセス(MAC)コア260-1、260-2、260-3、・・・、260-n(GigEコア260としてまとめて示す)に電子的に結合され、それは本実施形態では最小のレイテンシーを確実にするように固定ロジックデバイス230によって実施される。他の実施形態では、10GigE MACコア260は、例えば、PCI-Eネットワークインターフェースカードアダプタにおいて、固定ロジックデバイス230の外部の機能によって実施され得る。 While any suitable physical communication link layer may be employed (including Universal Serial Bus (USB), Peripheral Component Interconnect (PCI) Express (PCI-Express, i.e., PCI-E), High-Definition Multimedia Interface (HDMI), 10 Gigabit Ethernet (GigE), 40 GigE, 100 GigE, or InfiniBand (IB), over fiber or copper cable), in this example, mesh node 200 has multiple low-latency 10 Gigabit Ethernet Small Form Factor Pluggable Plus (SFP+) connectors (interfaces) 270-1, 270-2, 270-3, ..., 270-n (collectively referred to as connectors 270). Connectors 270 may be directly connected to other nodes in a point-to-point mesh via, for example, dedicated connections 180, connected via shared connections 182, and/or connected to participant devices 130 via gateway 120. These connectors 270 are, in this example, electronically coupled to respective 10GigE media access (MAC) cores 260-1, 260-2, 260-3, ..., 260-n (collectively referred to as GigE cores 260), which in this embodiment are implemented by fixed logic device 230 to ensure minimal latency. In other embodiments, 10GigE MAC cores 260 may be implemented by a function external to fixed logic device 230, for example, in a PCI-E network interface card adapter.

一部の実施形態では、固定ロジックデバイス230は、他のコンポーネントも含み得る。図2の例では、固定ロジックデバイス230は、固定ロジック240のコンポーネントも含む。一部の実施形態では、固定ロジックコンポーネント240は、メッシュノード200の役割に応じて、例えば、それがゲートウェイ120、シーケンサ150又はコアコンピュートノード140のいずれであるのかに応じて、異なる機能を実施し得る。固定ロジックデバイス230には、固定ロジック240によって最小のレイテンシーでアクセスされるメモリとなり得る固定ロジックメモリ250も含まれる。固定ロジックデバイス230は、PCIエクスプレス機能を実施し得るPCI-Eコア235も含む。本例では、PCIエクスプレスは、ハードウェアとソフトウェアの間で、より具体的には、固定ロジックデバイス240とメッシュソフトウェアアプリケーション210の間で、PCIエクスプレスバス233を介してデバイスドライバ220によってデータを転送するコンジット機構として使用される。ただし、ダイレクトメモリアクセス(DMA)、共有メモリバッファ又はメモリマッピングを含む任意の適宜のデータ転送機構が、ハードウェアとソフトウェアの間で採用されてもよい。 In some embodiments, fixed logic device 230 may also include other components. In the example of FIG. 2, fixed logic device 230 also includes a fixed logic 240 component. In some embodiments, fixed logic component 240 may perform different functions depending on the role of mesh node 200, for example, whether it is gateway 120, sequencer 150, or core compute node 140. Fixed logic device 230 also includes fixed logic memory 250, which may be memory accessed with minimal latency by fixed logic 240. Fixed logic device 230 also includes PCI-E core 235, which may perform PCI Express functions. In this example, PCI Express is used as a conduit mechanism by device driver 220 to transfer data between hardware and software, more specifically, between fixed logic device 240 and mesh software application 210 via PCI Express bus 233. However, any suitable data transfer mechanism may be employed between hardware and software, including direct memory access (DMA), shared memory buffers, or memory mapping.

一部の実施形態では、メッシュノード200は、他のハードウェアコンポーネントも含み得る。例えば、電子取引システム100におけるその役割に応じて、メッシュノード200は、一部の実施形態では、電子取引システム100内のノード間の高分解能クロック同期の実施に使用される高分解能クロック195(図1Dとの関連でも図示及び開示される)を含んでいてもよい。ダイナミックランダムアクセスメモリ(DRAM)280も、固定ロジックメモリ250との関連で追加のメモリとしてメッシュノード200に含まれ得る。DRAM280は、1以上のランダムアクセスメモリバンク、ハードディスク及びソリッドステートディスクを含む任意の適宜の揮発性又は不揮発性メモリであってもよく、任意の適宜のメモリ又はストレージインターフェースを介してアクセスされてもよい。以上に開示したように、メッシュノード200は、ゲートウェイ120、シーケンサ150又はコアコンピュートノード140を表し得るものであり、図1A~Dに関して以上に開示し、以下にさらに図3に関して開示するようなポイントツーポイントメッシュアーキテクチャにおいて構成され得る。 In some embodiments, mesh node 200 may also include other hardware components. For example, depending on its role in electronic trading system 100, mesh node 200 may, in some embodiments, include high-resolution clock 195 (also shown and disclosed in connection with FIG. 1D ) used to implement high-resolution clock synchronization between nodes in electronic trading system 100. Dynamic random access memory (DRAM) 280 may also be included in mesh node 200 as additional memory in connection with fixed logic memory 250. DRAM 280 may be any suitable volatile or non-volatile memory, including one or more random access memory banks, hard disks, and solid-state disks, and may be accessed via any suitable memory or storage interface. As disclosed above, mesh node 200 may represent gateway 120, sequencer 150, or core compute node 140, and may be configured in a point-to-point mesh architecture as disclosed above with respect to FIGS. 1A-D and further below with respect to FIG. 3.

図1B-1、1B-2、1C、1D、1E及び図2において記載した例示実施形態の観点では、電子取引システム100のポイントツーポイントメッシュアーキテクチャ172が多数の態様でレイテンシーの改善に供することは明らかなはずである。メッセージがスイッチを横断することなく直接専用接続180を介して電子取引システム100内のノード間で交換される実施形態では、スイッチを回避すること自体によって、レイテンシー関連の多数の有利な効果が可能となる。
a)スイッチが単一のメッセージを処理するのに必要な時間(メッセージがスイッチに入ってからそのメッセージがスイッチから出るまでの時間間隔)が完全に排除される。このスイッチ処理のレイテンシーは、通常は約1.0マイクロ秒であり、メッセージのヘッダにおいて指定されるように、バッファリング時間及びメッセージを適切な宛先にルーティングする時間を含む。
b)2つの伝送時間(送信ノードとスイッチの間の伝送時間及びスイッチと受信ノードの間の伝送時間)が送信ノードと受信ノードの間で直接メッセージを伝送するための単一の伝送時間によって置き換えられる。
c)スイッチなしの直接のポイントツーポイント接続を介して通信することは、スイッチによって必要とされ得るが送信ノード及び受信ノードにも処理時間オーバーヘッドを付加し得るTCP/IPなどの特定の確立されたプロトコルに従うメッシュ内でのメッセージを交換する要件も排除する。送信ノードが、TCP/IPヘッダを構成すること、チェックサムを計算することなどのプロトコル特有の処理を実行するのに必要となる時間、及び受信ノードがさらに、TCP/IPヘッダを解釈すること、チェックサムを検証することなどの同様のプロトコル特定の処理を実行するのに必要となる時間は、送信ノード及び受信ノードの各々に約0.5マイクロ秒、合計約1.0マイクロ秒となる。このプロトコル特有のオーバーヘッドは、任意選択的に、TCP/IPなど、スイッチによって必要とされる特定の確立されたプロトコルではなく、1以上のカスタムのプロトコルに応じてメッセージを交換するポイントツーポイントメッシュアーキテクチャ172の一部の実施形態では排除され得る。
d)メッセージは、さらに後述するように、直接接続されたノードに完全に同時にブロードキャストされ、直接接続された受信者ノードによって完全に同時に受信され得る。異なるメッセージも、さらに後述するように、複数の直接接続された送信者ノードから完全に同時に受信され得る。
1B-1, 1B-2, 1C, 1D, 1E, and 2, it should be apparent that the point-to-point mesh architecture 172 of the electronic trading system 100 provides for latency improvements in a number of ways. In embodiments in which messages are exchanged between nodes in the electronic trading system 100 via direct, dedicated connections 180 without traversing a switch, the avoidance of the switch itself enables a number of latency-related advantages.
a) The time required for a switch to process a single message (the time interval between when a message enters the switch and when it leaves the switch) is completely eliminated. This switch processing latency is typically around 1.0 microseconds, and includes buffering time and the time to route the message to its appropriate destination, as specified in the message's header.
b) Two transmission times (transmission time between the sending node and the switch and transmission time between the switch and the receiving node) are replaced by a single transmission time for transmitting a message directly between the sending node and the receiving node.
c) Communicating via direct, switch-less, point-to-point connections also eliminates the requirement to exchange messages within the mesh according to specific established protocols, such as TCP/IP, which may be required by switches but may also add processing time overhead to the sending and receiving nodes. The time required for the sending node to perform protocol-specific processing, such as constructing a TCP/IP header and calculating a checksum, and the time required for the receiving node to perform similar protocol-specific processing, such as interpreting the TCP/IP header and verifying the checksum, amounts to approximately 0.5 microseconds for each sending and receiving node, for a total of approximately 1.0 microseconds. This protocol-specific overhead may optionally be eliminated in some embodiments of point-to-point mesh architecture 172 that exchange messages according to one or more custom protocols rather than the specific established protocols required by switches, such as TCP/IP.
d) Messages may be broadcast to directly connected nodes at exactly the same time and received by directly connected recipient nodes at exactly the same time, as described further below. Different messages may also be received at exactly the same time from multiple directly connected sender nodes, as described further below.

ノード間の直接専用接続180が、図2に関連して上述したように、それぞれGigE MACコア260及びコネクタ270など、専用通信ロジック及び専用インターフェースを介して実施される実施形態では、レイテンシーが改善し得る。一部のこのような実施形態では、GigE MACコア260の各々はそのノードと単一の他のノードとの間のメッセージ通信を扱い、コネクタ270の各々はポイントツーポイントメッシュアーキテクチャ172内の単一の他のノードに専用接続180を介して接続される。例えば、図1Dの実施形態のポイントツーポイントメッシュ内の3個のノード(ゲートウェイ120-1、コアコンピュートノード140-1及びコアコンピュートノード140-2)を検討すると、ゲートウェイ120-1はコアコンピュートノード140-1に専用接続180-1-1を介して接続され、ゲートウェイ120-1はコアコンピュートノード140-2にも別個の専用接続180-1-2を介して接続される。これら3個のノードの各々が図2の実施形態によって実施される場合、専用接続180-1-1を介して、ゲートウェイ120-1に対するGigE MACコア260-1及びコネクタ270-1がコアコンピュートノード140-1との通信に対して単独で使用され、コアコンピュートノード140-1に対するGigE MACコア260-1及びコネクタ270-1がゲートウェイ120-1との通信に対して単独で使用され得る。同様に、専用接続180-1-2を介して、ゲートウェイ120-1に対するGigE MACコア260-2及びコネクタ270-2がコアコンピュートノード140-2との通信に対して単独で使用され、コアコンピュートノード140-2に対するGigE MACコア260-1及びコネクタ270-1がゲートウェイ120-1との通信に対して単独で使用され得る。したがって、このような実施形態によると、GigE MACコア260の1つ及びコネクタ270の1つなど専用コンピュートリソースは、専用接続180を有する他の各ノードと通信するための各ノードに対して使用される。 Improved latency may be achieved in embodiments in which direct, dedicated connections 180 between nodes are implemented via dedicated communication logic and dedicated interfaces, such as GigE MAC cores 260 and connectors 270, respectively, as described above in connection with FIG. 2. In some such embodiments, each GigE MAC core 260 handles message communication between that node and a single other node, and each connector 270 is connected to a single other node in the point-to-point mesh architecture 172 via a dedicated connection 180. For example, considering the three nodes in the point-to-point mesh of the embodiment of FIG. 1D (gateway 120-1, core compute node 140-1, and core compute node 140-2), gateway 120-1 is connected to core compute node 140-1 via dedicated connection 180-1-1, and gateway 120-1 is also connected to core compute node 140-2 via a separate, dedicated connection 180-1-2. 2, GigE MAC core 260-1 and connector 270-1 for gateway 120-1 may be used solely for communications with core compute node 140-1, and GigE MAC core 260-1 and connector 270-1 for core compute node 140-1 may be used solely for communications with gateway 120-1, via dedicated connection 180-1-1. Similarly, GigE MAC core 260-2 and connector 270-2 for gateway 120-1 may be used solely for communications with core compute node 140-2, and GigE MAC core 260-1 and connector 270-1 for core compute node 140-2 may be used solely for communications with gateway 120-1, via dedicated connection 180-1-2. Thus, according to such an embodiment, dedicated compute resources, such as one of the GigE MAC cores 260 and one of the connectors 270, are used for each node to communicate with each other node with a dedicated connection 180.

専用接続180あたりのこれらの専用コンピュートリソースによって、メッセージは、特にGigEコア260が固定ロジックデバイス230などのハードウェアで実施される場合に、送信ノードによって、当該送信ノードに(例えば、専用接続180を介して)直接接続される他のメッシュノードの間で完全に同時にブロードキャスト可能となる。逆に、送信ノードからのブロードキャストメッセージは、全ての受信ノードによって完全に同時に受信され得る。各受信ノードは、送信ノードに対するそれぞれの専用接続180を有し、受信者ノードに直接接続された各ノードについて、受信が専用接続通信ロジック及び専用インターフェースによって実施される。各受信ノードはブロードキャストメッセージを完全に同時に受信し、メッシュ内の異なるノード間での内部的なメッセージレイテンシーは同一となるはずであるので、いずれの受信ノードも選好されない。さらに、受信ノードは、それに直接接続された異なるノードから各々、異なるメッセージを完全に同時に受信し得る。 These dedicated compute resources per dedicated connection 180 allow messages to be broadcast at exactly the same time by a sending node among other mesh nodes directly connected to it (e.g., via dedicated connections 180), particularly when GigE core 260 is implemented in hardware such as fixed logic device 230. Conversely, a broadcast message from a sending node can be received at exactly the same time by all receiving nodes. Each receiving node has its own dedicated connection 180 to the sending node, and reception is performed by dedicated connection communication logic and a dedicated interface for each node directly connected to the receiving node. Since each receiving node receives the broadcast message at exactly the same time, and internal message latency between different nodes in the mesh should be identical, no receiving node is preferred. Furthermore, a receiving node may receive different messages from different nodes directly connected to it at exactly the same time.

複数のメッセージを完全に同時に送受信する能力は、サーバ間の通信がスイッチを介して行われる他の環境とは対照的であり、そのような環境は通常、メッセージの送受信がシリアル化されることを要する。通信がスイッチを介して行われる場合、通常、各サーバはそれ自体とスイッチの間に単一の接続(又は複数の冗長接続の場合もあるが、それでも単一の論理的接続とみなされるものとする)を有する。サーバがメッセージをシステム内の複数の他のサーバにブロードキャストする必要がある場合、それらのメッセージは、実際にはスイッチに同時に送信されるわけでもスイッチによって同時に受信されるわけでもないが、その代わりに、サーバとスイッチの間の単一の論理的接続を介して直列的に順次送信/受信される必要がある。同様に、スイッチが、同じサーバに宛てられているが(スイッチが発生サーバの各々への単一の接続を有し得るために)異なる送信サーバから発生する複数の異なるメッセージを同時に受信することが可能である場合であっても、これらの複数の異なるメッセージはスイッチと宛先サーバの間の単一の論理的接続を介して1つずつそれらを送信するためには、依然としてスイッチによってシリアル化される必要がある。このような環境で必要となるメッセージのシリアル化は、システムのレイテンシー全体を増加させるだけでなく、このようなシステム内のサーバ間の予測し難いレイテンシーをもたらすことになる。例えば、メッセージがサーバからシステム内の15個の他のサーバにブロードキャストされる必要がある場合、これら15個のメッセージは、それらがスイッチに送信されるにつれてシリアル化される必要があり、レイテンシーの差は、特定の宛先サーバに宛てられたメッセージが一連のブロードキャストメッセージにおいて最初のメッセージとなるのか15番目のメッセージとなるのかによって大きくなり得る。 The ability to send and receive multiple messages completely simultaneously contrasts with other environments where communication between servers occurs through a switch, which typically requires that messages be serialized. When communication occurs through a switch, each server typically has a single connection (or possibly multiple redundant connections, which are still considered a single logical connection) between itself and the switch. If a server needs to broadcast a message to multiple other servers in the system, those messages are not actually sent to or received by the switch simultaneously, but instead must be sent/received serially, one after the other, over a single logical connection between the server and the switch. Similarly, even if a switch is capable of simultaneously receiving multiple different messages that are destined for the same server but originate from different originating servers (because the switch may have a single connection to each of the originating servers), these multiple different messages still must be serialized by the switch in order to send them one at a time over a single logical connection between the switch and the destination server. The message serialization required in such environments not only increases the overall latency of the system, but also leads to unpredictable latency between servers in such a system. For example, if a message needs to be broadcast from a server to 15 other servers in the system, those 15 messages will need to be serialized as they are sent to the switch, and the difference in latency can be significant depending on whether the message addressed to a particular destination server is the first or 15th message in a series of broadcast messages.

スイッチの横断を必要としない専用接続180の使用から得ることができるレイテンシーの有利な効果に加えて、ポイントツーポイントメッシュアーキテクチャ172は、さらに他のレイテンシーの改善を可能とする。図1B-1との関連で上述したように、ゲートウェイ120-1からコアコンピュートノード140-1になど、ポイントツーポイントメッシュ内での2つのノード間で送信されているメッセージは、メッセージが他のメッセージに対する確定的な順序で電子取引システム100の全体を通じて処理可能となることを確実にするために、順位付けパス117を介して送信され得る。メッセージが順位付けパス117を通じて横断するにつれて、シーケンサ150-1を通過し、シーケンサ150-1はメッセージを固有順序識別子でマーク付けし、その後にシーケンサ150-1が宛先ノード(本例では、コアコンピュートノード140-1)に送信する順序マーク付きメッセージを生成する。順序マーク付きメッセージの受信により、宛先ノード(本例では、コアコンピュートノード140-1)は、電子取引システム100内の他のメッセージ(これもシーケンサによって順序マーク付けされている)に対して順序マーク付きメッセージの順序識別子によって指定されるように、メッセージが正しい確定的順位で処理されることを確実にし得る。 In addition to the latency benefits that can be gained from using dedicated connections 180 that do not require switch traversal, the point-to-point mesh architecture 172 enables further latency improvements. As discussed above in connection with FIG. 1B-1, messages being sent between two nodes in a point-to-point mesh, such as from gateway 120-1 to core compute node 140-1, can be sent through ordering path 117 to ensure that the messages can be processed throughout electronic trading system 100 in a deterministic order relative to other messages. As messages traverse ordering path 117, they pass through sequencer 150-1, which marks the messages with a unique order identifier and then generates an order-marked message that sequencer 150-1 sends to the destination node (in this example, core compute node 140-1). Upon receipt of the sequence-marked message, the destination node (in this example, core compute node 140-1) can ensure that the message is processed in the correct, deterministic order, as specified by the sequence identifier of the sequence-marked message relative to other messages in the electronic trading system 100 (which are also sequence-marked by the sequencer).

図1B-1との関連で上述したように、この順位付けパス117は、複数の直接接続:送信ノードとシーケンサの間の直接接続(ゲートウェイ120-1とシーケンサ150-1の間の直接接続180-gw1-s1など)及びさらにシーケンサと宛先ノードの間の直接接続(シーケンサ150-1とコンピュートノード140-1の間の直接接続180-c1-s1など)を含み得る。順位付けパス117を備えるこれら複数の直接接続は、一部の実施形態では、スイッチを通過せず、既に上述したレイテンシーの有利な効果から利益を受けることができる。それでもなお、このような実施形態では、順位付けパス117のレイテンシーは、シーケンサ150-1におけるメッセージの処理時間(すなわち、シーケンサ150-1が非順序マーク付き(すなわち、順序付けなし)メッセージを受信し、それを順序識別子でマーク付けし、順序マーク付きメッセージを宛先に送信するのに必要な時間)及び2つの直接接続を通じるメッセージの伝送時間によって影響される。(すなわち、非順序マーク付きバージョンが最初に送信者ノードからシーケンサに直接接続を介して送信され、その後に順序マーク付きバージョンがシーケンサから宛先ノードに別個の直接接続を介して送信される)。試験は、単一の直接接続と比較した場合の順位付けパス117のこのレイテンシーの影響が、TCP/IPなどの特定の確立されたプロトコルではなくカスタムプロトコルが使用されるのか否かなどの要因に応じて、順位付けパス117に対して追加の0.5~1.0マイクロ秒であることを示す。 1B-1, this ordering path 117 may include multiple direct connections: a direct connection between a sending node and a sequencer (e.g., direct connection 180-gw1-s1 between gateway 120-1 and sequencer 150-1) and a further direct connection between a sequencer and a destination node (e.g., direct connection 180-c1-s1 between sequencer 150-1 and compute node 140-1). These multiple direct connections comprising ordering path 117, in some embodiments, do not traverse a switch and can benefit from the latency advantages already described above. Nevertheless, in such embodiments, the latency of ordering path 117 is affected by the message processing time at sequencer 150-1 (i.e., the time required for sequencer 150-1 to receive a non-order-marked (i.e., unordered) message, mark it with an order identifier, and send the order-marked message to its destination) and the transmission time of the message over the two direct connections. (i.e., the unordered version is first sent from the sender node to the sequencer via a direct connection, and then the ordered version is sent from the sequencer to the destination node via a separate direct connection.) Testing indicates that the latency impact of this ordering path 117 compared to a single direct connection is an additional 0.5-1.0 microseconds for the ordering path 117, depending on factors such as whether a custom protocol is used rather than a specific established protocol such as TCP/IP.

したがって、順位付けパス117を通じたメッセージの横断の可能性あるレイテンシーの影響を最小化するための最適化として、非順序マーク付きメッセージも、ゲートウェイ120-1とコアコンピュートノード140-1の間の直接接続180-1-1など、送信者ノードと宛先ノードの間の単一の直接接続であり得る活性化リンク180-1-1を介して並列に送信されてもよい。したがって、一部の実施形態では、非順序マーク付きメッセージは、活性化リンク180-1-1を介して宛先ノード(例えば、コアコンピュートノード140-1)に、及び順位付けパス117の一部として、送信ノードとシーケンサ150-1の間の直接接続(例えば、直接接続180-gw1-s1)を介してシーケンサ150-1に、送信ノード(例えば、ゲートウェイ120-1)によって完全に同時に送信され得る。このような実施形態によると、シーケンサ150-1及び宛先ノード(例えば、コアコンピュートノード140-1)は、メッセージの非順序マーク付きバージョンを同時に受信することができ、これにより、宛先ノードがその受信に応じて直ちに非順序マーク付きメッセージの処理を活性化することが可能となる。順序マーク付きメッセージがシーケンサ150-1によって生成されて宛先ノードに送信されているのと同時に、宛先ノードは、並行して非順序マーク付きメッセージを処理することを開始してもよく、この処理は、メッセージにおいて参照される銘柄記号に関連するデータを高速側メモリに読み込むこと、予備応答メッセージを構築すること、又は電子取引のためのマッチング機能アクティビティを開始することを含む。上述したように、宛先ノードは、順序マーク付きメッセージを受信すると、順序識別子によって指定されるような適正な確定的順位(すなわち、順序)に応じてメッセージの処理を完了し得る。ただし、宛先ノードが順位付けパス117を介して順序マーク付きメッセージを受信する時間までに、宛先ノードはメッセージの非順序マーク付きバージョンの有用な処理を実行する機会(例えば、0.5~1.0マイクロ秒の処理時間に相当)を既に有していることになり、宛先ノードが活性化リンク180-1-1を介してメッセージの非順序マーク付きバージョンをまだ受信していない場合よりも迅速に順序マーク付きメッセージの処理を完了し、より低い対応のレイテンシーの応答メッセージを生成することが可能となる。 Thus, as an optimization to minimize the impact of potential latency in traversing messages through ordering path 117, unordered marked messages may also be transmitted in parallel over activation link 180-1-1, which may be a single direct connection between a sender node and a destination node, such as direct connection 180-1-1 between gateway 120-1 and core compute node 140-1. Thus, in some embodiments, unordered marked messages may be transmitted simultaneously by a sending node (e.g., gateway 120-1) to a destination node (e.g., core compute node 140-1) over activation link 180-1-1 and to sequencer 150-1 over a direct connection between the sending node and sequencer 150-1 (e.g., direct connection 180-gw1-s1) as part of ordering path 117. According to such an embodiment, sequencer 150-1 and a destination node (e.g., core compute node 140-1) can simultaneously receive the unordered version of the message, thereby enabling the destination node to immediately activate processing of the unordered message in response to its receipt. At the same time that the order-marked message is being generated by sequencer 150-1 and sent to the destination node, the destination node may begin processing the unordered message in parallel, which may include loading data associated with the stock symbol referenced in the message into fast-side memory, constructing a preliminary response message, or initiating matching function activities for electronic trading. As described above, upon receiving the order-marked message, the destination node may complete processing of the message in the proper deterministic order (i.e., order) as specified by the order identifier. However, by the time the destination node receives the order-marked message via ordering path 117, the destination node has already had an opportunity to perform useful processing on the unorder-marked version of the message (e.g., equivalent to 0.5 to 1.0 microseconds of processing time), allowing it to complete processing of the order-marked message and generate a response message with a corresponding lower latency than if the destination node had not yet received the unorder-marked version of the message via activation link 180-1-1.

したがって、上述したように、ポイントツーポイントメッシュアーキテクチャ(例えば、102及び172)は、多数の態様でレイテンシーの改善に供する。試験を通じて、これらのレイテンシーの改善の少なくとも一部は、経験的に定量化されてきた。例えば、スイッチを回避するノード間の直接接続の使用に起因するレイテンシーの改善は、少なくとも合計1.0マイクロ秒となり、場合によっては、各方向(すなわち、着信対発信)において3.0マイクロ秒までとなる。さらに、順位付けパス117を介したメッセージの処理及び伝送と並行して、活性化リンク180-1-1を介して受信された非順序マーク付きメッセージを宛先ノードが処理する機会に起因するレイテンシーの改善は、各方向にさらに0.5~1.0マイクロ秒となる。したがって、着信メッセージが参加者デバイス130からゲートウェイ120を介して電子取引システム100に入る時間から対応の応答メッセージがゲートウェイ120から参加者デバイス130に送信される時間までの全体の可能なレイテンシーの改善は、少なくとも2.5~7.0マイクロ秒となる。電子取引など、レイテンシーの影響を受け易いアプリケーションでは、マイクロ秒のレイテンシーの差でさえも非常に重要となる。これらのレイテンシーの改善によって、電子取引システム100の一部の実施形態は、5.0~7.0マイクロ秒の所望の応答時間レイテンシーに応じて確実に応答することが可能となる。これは従来技術の取引システムに対する顕著な改善であり、その最良のものは現在のところ50~75マイクロ秒の範囲の応答時間レイテンシーを有する。 Thus, as described above, point-to-point mesh architectures (e.g., 102 and 172) offer latency improvements in a number of ways. Through testing, at least some of these latency improvements have been empirically quantified. For example, latency improvements resulting from the use of direct connections between nodes, avoiding switches, can total at least 1.0 microseconds, and in some cases, up to 3.0 microseconds in each direction (i.e., inbound vs. outbound). Additionally, latency improvements resulting from the opportunity for the destination node to process unordered marked messages received over activation link 180-1-1 in parallel with the processing and transmission of messages over ordering path 117 can be an additional 0.5 to 1.0 microseconds in each direction. Thus, the overall potential latency improvement from the time an incoming message enters electronic trading system 100 from participant device 130 via gateway 120 to the time a corresponding response message is transmitted from gateway 120 to participant device 130 can be at least 2.5 to 7.0 microseconds. In latency-sensitive applications such as electronic trading, even a difference of a few microseconds in latency can be very significant. These latency improvements enable some embodiments of electronic trading system 100 to respond reliably according to desired response time latencies of 5.0 to 7.0 microseconds. This is a significant improvement over prior art trading systems, the best of which currently have response time latencies in the 50 to 75 microsecond range.

図3は、ポイントツーポイントメッシュシステム302の他の例示実施形態のブロック図である。ポイントツーポイントメッシュシステム302は、複数のゲートウェイ320、複数のコアコンピュートノード340及びシーケンサ350を含む。複数のゲートウェイ320の各ゲートウェイ320-1、320-2、・・・、320-gが、それぞれの第1の直接接続、すなわち、第1の直接接続380-aを介して複数のコアコンピュートノード340の各コアコンピュートノード340-1、340-2、・・・、340-cに結合される。シーケンサ350は、それぞれの第2の直接接続、すなわち、第2の直接接続380-bを介して複数のゲートウェイ320の各ゲートウェイに結合され、それぞれの第3の直接接続、すなわち、第3の直接接続380-cを介して複数のコアコンピュートノードの各コアコンピュートノードに結合される。図1B-1、1B-2、1D及び図3を参照すると、ゲートウェイ120-1は、図1Dに関して以上に開示したような共有ゲートウェイネットワークを介して又は図3の直接接続384a、384b、・・・、384gを介して相互に通信可能に結合された複数のゲートウェイ320のうちの所与のゲートウェイであり得る。複数のゲートウェイ320は、例示実施形態では、ゲートウェイ320-1、320-2、・・・、320-gを含む。コアコンピュートノード140-1は、図1Dに関して以上に開示したような共有コアコンピュートノードネットワークを介して、又は図3の直接接続386a、386b、・・・、386cを介して相互に通信可能に結合され得るコアコンピュートノード340-1、340-2、・・・、340-cを含む複数のコアコンピュートノード340のうちの所与のコアコンピュートノードであり得る。ゲートウェイの番号gは、ポイントツーポイントメッシュシステム302におけるコアコンピュートノードの他の番号cと同じであっても異なっていてもよいことが理解されるべきである。例示実施形態によると、シーケンサ150-1は、図1Dに関して以上に開示したシーケンサ全域共有ネットワーク182-sなどの共有シーケンサネットワークを介して、又は図4に関して以下に開示する第4の直接接続482などの直接接続を介して相互に通信可能に結合された複数のシーケンサのうちの所与のシーケンサであり得る。 3 is a block diagram of another exemplary embodiment of a point-to-point mesh system 302. The point-to-point mesh system 302 includes a plurality of gateways 320, a plurality of core compute nodes 340, and a sequencer 350. Each gateway 320-1, 320-2, ..., 320-g of the plurality of gateways 320 is coupled to each core compute node 340-1, 340-2, ..., 340-c of the plurality of core compute nodes 340 via a respective first direct connection, i.e., first direct connection 380-a. The sequencer 350 is coupled to each gateway of the plurality of gateways 320 via a respective second direct connection, i.e., second direct connection 380-b, and to each core compute node of the plurality of core compute nodes via a respective third direct connection, i.e., third direct connection 380-c. 1B-1, 1B-2, 1D, and 3, gateway 120-1 may be a given gateway of multiple gateways 320 that are communicatively coupled to one another via a shared gateway network as disclosed above with respect to FIG. 1D or via direct connections 384a, 384b, ..., 384g of FIG. 3. Multiple gateways 320, in the exemplary embodiment, include gateways 320-1, 320-2, ..., 320-g. Core compute node 140-1 may be a given core compute node of multiple core compute nodes 340 that include core compute nodes 340-1, 340-2, ..., 340-c that may be communicatively coupled to one another via a shared core compute node network as disclosed above with respect to FIG. 1D or via direct connections 386a, 386b, ..., 386c of FIG. 3. It should be understood that the gateway number g may be the same as or different from the other number c of core compute nodes in point-to-point mesh system 302. According to an example embodiment, sequencer 150-1 may be a given sequencer among multiple sequencers communicatively coupled to one another via a shared sequencer network, such as sequencer-wide shared network 182-s disclosed above with respect to FIG. 1D, or via a direct connection, such as fourth direct connection 482 disclosed below with respect to FIG. 4.

図4は、ポイントツーポイントメッシュシステム402の他の例示実施形態のブロック図である。図1B-2及び図4を参照すると、シーケンサ150-1は、ポイントツーポイントメッシュシステム402において、シーケンサ450-1及び少なくとも1つの他のシーケンサ450-2を含む複数のシーケンサのうちの所与のシーケンサであり得る。 Figure 4 is a block diagram of another example embodiment of a point-to-point mesh system 402. With reference to Figures 1B-2 and 4, sequencer 150-1 may be a given sequencer among multiple sequencers in point-to-point mesh system 402, including sequencer 450-1 and at least one other sequencer 450-2.

ポイントツーポイントメッシュシステム402において、複数のゲートウェイ420の各ゲートウェイ420-1、420-2、・・・、420-gは、それぞれの第1の直接接続、すなわち、第1の直接接続480aを介して複数のコアコンピュートノードの各コアコンピュートノード440-1、440-2、・・・、440-cに結合される。複数のゲートウェイ420の各ゲートウェイは、それぞれの第2の直接接続、すなわち、第2の直接接続480-b-1及び480-b-2を介して複数のシーケンサの各シーケンサ450-1、・・・、450-2に結合される。複数のコアコンピュートノード440の各コアコンピュートノード440-1、440-2、・・・、440-cは、それぞれの第3の直接接続、すなわち、第3の直接接続480-c-1及び480-c-2を介して複数のシーケンサの各シーケンサ450-1、・・・、450-2に結合される。 In the point-to-point mesh system 402, each gateway 420-1, 420-2, ..., 420-g of the plurality of gateways 420 is coupled to each core compute node 440-1, 440-2, ..., 440-c of the plurality of core compute nodes via a respective first direct connection, i.e., first direct connection 480a. Each gateway 420 is coupled to each sequencer 450-1, ..., 450-2 of the plurality of sequencers via a respective second direct connection, i.e., second direct connections 480-b-1 and 480-b-2. Each core compute node 440-1, 440-2, ..., 440-c of the plurality of core compute nodes 440 is coupled to each sequencer 450-1, ..., 450-2 of the plurality of sequencers via a respective third direct connection, i.e., third direct connection 480-c-1 and 480-c-2.

所与のシーケンサ、すなわち、シーケンサ450-1・・・450-2の特定のシーケンサは、ポイントツーポイントメッシュシステムにサービス提供している現在アクティブなシーケンサであってもよく、複数のシーケンサの他の各シーケンサは現在アクティブなシーケンサを引き継ぐことを待機しているスタンバイシーケンサであってもよい。複数のシーケンサの各シーケンサは、第4の直接接続482などのそれぞれの第4の直接接続を介して複数のシーケンサの他の各シーケンサに結合され得る。複数のゲートウェイ420の各ゲートウェイ420-1、420-2、・・・、420-gは、さらに、そこから送信されるそれぞれのコンピュートノード宛てメッセージ(不図示)を複数のシーケンサ450-1、・・・、450-2のうちの所与のシーケンサに送信するように構成され得る。複数のコアコンピュートノード440の各コアコンピュートノード440-1、440-2、・・・、440-cは、さらに、そこから送信されるそれぞれのゲートウェイ宛てメッセージ(不図示)を複数のシーケンサ450-1、・・・、450-2のうちの所与のシーケンサに送信するように構成される。少なくとも1つの他のシーケンサは、スタンバイ状態である。 A given sequencer, i.e., a particular one of sequencers 450-1...450-2, may be the currently active sequencer serving the point-to-point mesh system, and each of the other sequencers of the plurality of sequencers may be a standby sequencer waiting to take over as the currently active sequencer. Each sequencer of the plurality of sequencers may be coupled to each of the other sequencers of the plurality of sequencers via a respective fourth direct connection, such as fourth direct connection 482. Each gateway 420-1, 420-2...420-g of the plurality of gateways 420 may be further configured to transmit a respective compute node-destined message (not shown) sent therefrom to a given one of the plurality of sequencers 450-1...450-2. Each core compute node 440-1, 440-2, ..., 440-c of the plurality of core compute nodes 440 is further configured to transmit a respective gateway-destined message (not shown) sent therefrom to a given sequencer among the plurality of sequencers 450-1, ..., 450-2. At least one other sequencer is in a standby state.

スタンバイ状態(スタンバイロール)は、少なくとも1つの他のシーケンサが電源投入されて「リスニングオンリー」モードとなるように構成された受動状態を表し得る。「リスニングオンリー」モードでは、少なくとも1つのシーケンサは、メッセージを受信するように構成されるが、メッセージを送信せず、現在アクティブなシーケンサが故障した場合にアクティブなシーケンサを引き継ぐことが可能となっている。現在アクティブなシーケンサは、メッセージを送受信可能なアクティブ状態(アクティブロール)である。一般的に、スタンバイシーケンサは、電源投入され、メッセージを受信可能であり、アクティブシーケンサを引き継ぐことが可能となっている冗長な(バックアップの)シーケンサである。このような切換え、すなわち、スタンバイ状態(ロール)からアクティブ状態(ロール)への切換えは、現在アクティブなシーケンサの故障に起因して又は非限定的な例として現在アクティブなシーケンサに適用されているソフトウェアアップデートなど、他の理由によってコントローラ(不図示)によって発出された切換コマンドの受信に基づき得る。 A standby state (standby role) may represent a passive state in which at least one other sequencer is configured to be powered on and in a "listen-only" mode. In the "listen-only" mode, at least one sequencer is configured to receive messages but not send messages and is capable of taking over as the active sequencer if the currently active sequencer fails. The currently active sequencer is in an active state (active role) capable of sending and receiving messages. Typically, a standby sequencer is a redundant (backup) sequencer that is powered on, capable of receiving messages, and capable of taking over as the active sequencer. Such a switch, i.e., from a standby state (role) to an active state (role), may be based on receipt of a switch command issued by a controller (not shown) due to a failure of the currently active sequencer or for other reasons, such as, but not limited to, a software update being applied to the currently active sequencer.

所与のシーケンサ(アクティブ状態にある)は、さらに、現在アクティブなシーケンサが故障した場合又は非限定的な例としてソフトウェアアップデートなど、その他の理由でアクティブなシーケンサとして指定されなくなった場合に、順序マーク付きメッセージ106´及び順序マーク付き応答107´などの順序マーク付きメッセージを各それぞれの第4の直接接続482を介して複数のシーケンサ450-1、・・・、450-2の他の各シーケンサに送信して、スタンバイシーケンサが現在アクティブなシーケンサを引き継ぐことができるように構成され得る。ただし、アクティブなシーケンサ、すなわち、アクティブ状態にある所与のシーケンサは順序付けされたマーク付きメッセージをスタンバイシーケンサ、すなわち、スタンバイ状態にあるシーケンサに転送する必要はなく、代替的に、継続的に、図1Dに関して以上に開示したようなスタンバイシーケンサに状態ログ(そこにおける順序情報を含むことになる)ともいうジャーナルをブロードキャスト/複製し得ることが理解されるべきである。 A given sequencer (in an active state) may further be configured to send order-marked messages, such as order-marked message 106' and order-marked response 107', to each of the other sequencers of the plurality of sequencers 450-1, ..., 450-2 via each respective fourth direct connection 482, so that a standby sequencer can take over as the currently active sequencer if the currently active sequencer fails or is no longer designated as the active sequencer for other reasons, such as, by way of non-limiting example, a software update. However, it should be understood that the active sequencer, i.e., the given sequencer in the active state, need not forward the order-marked messages to the standby sequencer, i.e., the sequencer in the standby state, but may instead continuously broadcast/replicate a journal, also referred to as a state log (which would include the order information therein), to the standby sequencer as disclosed above with respect to FIG. 1D.

電子取引システム100は、図1Dを参照して上述したようなシステム状態ログ(不図示)をさらに備え得る。アクティブなシーケンサは、共有シーケンサネットワークを介してアクティブなシーケンサから複数のシーケンサの少なくとも1つの他のシーケンサにシステム状態ログを送信するように構成され得る。例えば、共有シーケンサネットワークは、第4の直接接続482を含んでいてもよく、シーケンサ450-1がアクティブ状態にある所与のシーケンサである場合にシステム状態ログはシーケンサ450-1からシーケンサ450-2に送信され得る。 The electronic trading system 100 may further include a system status log (not shown) as described above with reference to FIG. 1D. The active sequencer may be configured to transmit the system status log from the active sequencer to at least one other sequencer of the plurality of sequencers via a shared sequencer network. For example, the shared sequencer network may include a fourth direct connection 482, such that the system status log may be transmitted from sequencer 450-1 to sequencer 450-2 when sequencer 450-1 is the given sequencer in the active state.

図5は、電子取引を実行するための方法の例示実施形態のフロー図500である。方法が開始し(502)、金融商品を買付又は売却する指値を伴う電子取引要求を表すメッセージを、ゲートウェイからコアコンピュートノードに第1の直接接続を介して送信する(504)。メッセージは、これに対して、電子取引システムにおいて電子取引機能を実行するためにコアコンピュートノードによって受信される。方法は、メッセージをゲートウェイから電子取引システムのシーケンサに第2の直接接続を介して送信し(506)、これに対して、順序マーク付きメッセージをシーケンサからコアコンピュートノードに第3の直接接続を介して送信する(508)。第1、第2及び第3の直接接続は、それぞれの非共有帯域幅を有する。シーケンサは、ゲートウェイとコアコンピュートノードとの間に第2及び第3の直接接続を介して挿入される。シーケンサによって送信された順序マーク付きメッセージは、第2の直接接続を介してゲートウェイから送信されるメッセージの順序付けされたバージョンである。順序マーク付きメッセージは、これに対して、コアコンピュートノードによって受信される。方法は、コアコンピュートノードにおいて、他のメッセージをゲートウェイから受信し、他のメッセージの順序マーク付きバージョンをシーケンサから受信し、コアコンピュートノードにおいて、電子取引システムにおいてコアコンピュートノードによって受信された他のメッセージの順序マーク付きバージョン間で順序マーク付きメッセージの相対順位付けを決定する(510)。コアコンピュートノードは、決定された相対順位付けに応じて、電子取引要求に対する電子取引マッチング機能を完了する。この完了によって、金融商品について指値が反対指値とマッチングされ、当該金融商品の電子取引が可能となる。方法は、その後、例示実施形態において終了する(512)。 FIG. 5 is a flow diagram 500 of an example embodiment of a method for executing electronic trading. The method begins (502) by sending a message representing an electronic trade request with a limit price to buy or sell a financial instrument from a gateway to a core compute node via a first direct connection (504). The message is then received by the core compute node for executing an electronic trading function in the electronic trading system. The method then sends the message from the gateway to a sequencer of the electronic trading system via a second direct connection (506), and in response, sends an order-marked message from the sequencer to the core compute node via a third direct connection (508). The first, second, and third direct connections have respective unshared bandwidths. The sequencer is inserted between the gateway and the core compute node via the second and third direct connections. The order-marked message sent by the sequencer is an ordered version of the message sent from the gateway via the second direct connection. The order-marked message is then received by the core compute node. The method includes receiving, at the core compute node, another message from the gateway, receiving an order-marked version of the other message from the sequencer, and determining, at the core compute node, a relative ranking of the order-marked message among the order-marked versions of the other messages received by the core compute node in the electronic trading system (510). The core compute node completes an electronic trade matching function for the electronic trade request in response to the determined relative ranking. This completion matches a limit price with a contra-limit price for the financial instrument, enabling electronic trading of the financial instrument. The method then ends (512) in the exemplary embodiment.

メッセージは、ゲートウェイメッセージであり得る。方法は、ゲートウェイにおいて参加者デバイスから着信メッセージを受信するステップをさらに備え得る。ゲートウェイメッセージを送信するステップは、参加者デバイスからゲートウェイによって着信メッセージの受信に応じてゲートウェイによってゲートウェイメッセージを送信するステップを含み得る。順序マーク付きメッセージは、第1の順序マーク付きメッセージであり得る。方法は、第1の順序マーク付きメッセージをシーケンサからゲートウェイに第2の直接接続を介して送信するステップをさらに備え得る。これに対して、第1の順序マーク付きメッセージは、ゲートウェイによって受信される得る。方法は、メッセージの受信に応じて、コアコンピュートノードメッセージをコアコンピュートノードからゲートウェイに第1の直接接続を介して送信するステップと、コアコンピュートノードメッセージをシーケンサに第3の直接接続を介して送信し、これに対して第2の順序マーク付きメッセージをシーケンサからゲートウェイに第2の直接接続を介して送信するステップとをさらに備え得る。第2の順序マーク付きメッセージは、コアコンピュートノードメッセージの順序付けされたバージョンである。方法は、コアコンピュートノードからゲートウェイに送信された第2の順序マーク付きメッセージ及び他のメッセージの順序マーク付きバージョンの相対順位付けをゲートウェイにおいて決定ステップと、発信メッセージを参加者デバイスに送信するステップであって、発信メッセージは決定された相対順位付けに応じて送信される、ステップと、第2の順序マーク付きメッセージをシーケンサからコアコンピュートノードに第3の直接接続を介して送信するステップとをさらに備え得る。 The message may be a gateway message. The method may further include receiving an incoming message from the participant device at the gateway. Sending the gateway message may include sending the gateway message by the gateway in response to receiving the incoming message by the gateway from the participant device. The order-marked message may be a first order-marked message. The method may further include sending the first order-marked message from the sequencer to the gateway via the second direct connection. In response to receiving the message, the first order-marked message may be received by the gateway. The method may further include sending a core compute node message from the core compute node to the gateway via the first direct connection, and sending the core compute node message to the sequencer via the third direct connection and in response sending a second order-marked message from the sequencer to the gateway via the second direct connection. The second order-marked message is an ordered version of the core compute node message. The method may further include determining at the gateway a relative ranking of the second order-marked message and order-marked versions of other messages sent from the core compute node to the gateway; sending an outgoing message to the participant device, the outgoing message being sent according to the determined relative ranking; and sending the second order-marked message from the sequencer to the core compute node via a third direct connection.

ゲートウェイは複数のゲートウェイのうちの所与のゲートウェイであり、コアコンピュートノードは複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり得る。方法は、複数のゲートウェイの各ゲートウェイからのそれぞれのコンピュートノード宛てメッセージを複数のコアコンピュートノードの全てのコアコンピュートノード及びシーケンサに送信するステップをさらに備え得る。方法は、複数のコアコンピュートノードの各コアコンピュートノードからのそれぞれのゲートウェイ宛てメッセージを複数のゲートウェイの全てのゲートウェイ及びシーケンサに送信するステップと、シーケンサにおいて受信されたそれぞれのコンピュートノード宛てメッセージ及びそれぞれのゲートウェイ宛てメッセージに応じて、それぞれの順序マーク付きメッセージをシーケンサから複数のゲートウェイ及び複数のコアコンピュートノードに送信するステップとをさらに備え得る。 The gateway may be a given gateway among the plurality of gateways, and the core compute node may be a given core compute node among the plurality of core compute nodes. The method may further include transmitting a message destined for a respective compute node from each gateway of the plurality of gateways to all core compute nodes of the plurality of core compute nodes and the sequencer. The method may further include transmitting a message destined for a respective gateway from each core compute node of the plurality of core compute nodes to all gateways of the plurality of gateways and the sequencer, and transmitting each order-marked message from the sequencer to the plurality of gateways and the plurality of core compute nodes in response to the message destined for a respective compute node and the message destined for a respective gateway received at the sequencer.

シーケンサは、複数のシーケンサのうちの所与のシーケンサであり得る。方法は、それぞれのコンピュートノード宛てメッセージを複数のゲートウェイの各ゲートウェイから所与のシーケンサに送信するステップと、それぞれのゲートウェイ宛てメッセージを複数のコアコンピュートノードの各コアコンピュートノードから所与のシーケンサに送信するステップと、順序マーク付きメッセージを所与のシーケンサから複数のシーケンサのうちの他の各シーケンサに送信するステップとをさらに備え得る。 The sequencer may be a given sequencer of a plurality of sequencers. The method may further include the steps of: sending a message destined for a respective compute node from each gateway of the plurality of gateways to the given sequencer; sending a message destined for a respective gateway from each core compute node of the plurality of core compute nodes to the given sequencer; and sending an order-marked message from the given sequencer to each other sequencer of the plurality of sequencers.

方法は、複数のコアコンピュートノードにおいて同じメッセージを受信するステップであって、同じメッセージは所与のゲートウェイによって送信されたそれぞれのコンピュートノード宛てメッセージである、ステップと、同じメッセージの受信に応じて、複数のコアコンピュートノードにおいて応答メッセージを生成するステップと、所与のゲートウェイにおいて、複数のコアコンピュートノードの中から応答メッセージを受信するステップとをさらに備え得る。方法は、同じメッセージの受信に応じて生成された応答メッセージのうちの所与の応答メッセージに基づいて所与のゲートウェイにおいて行動を実行するステップをさらに備え得る。所与の応答メッセージは、同じメッセージの受信に応じて生成された応答メッセージのうちの他の応答メッセージに相対して最初に所与のゲートウェイに到着するものであり得る。方法は、所与の応答メッセージの後に所与のゲートウェイに到着する他の応答メッセージを無視するステップをさらに備え得る。このように、「同じメッセージ」とは、単一のゲートウェイから全てのコンピュートノードにブロードキャストされ、それにより、各コンピュートノードが当該単一のメッセージの1つのコピーを取得するような単一のメッセージをいう。そして、複数のコンピュートノードの各々は、当該単一の同じメッセージに応答し、複数の機能的に同等な応答が、所与のゲートウェイによって受信されることなど、全てのゲートウェイにブロードキャストされることになり得る。そして、所与のゲートウェイを含むゲートウェイは、これら複数の機能的に同等なメッセージを「先着」順にソートすることができる。 The method may further include receiving an identical message at multiple core compute nodes, the identical message being a message sent by a given gateway and destined for each compute node; generating response messages at the multiple core compute nodes in response to receiving the identical message; and receiving the response messages from among the multiple core compute nodes at the given gateway. The method may further include performing an action at the given gateway based on a given response message among the response messages generated in response to receiving the identical message. The given response message may be the first to arrive at the given gateway relative to other response messages among the response messages generated in response to receiving the same message. The method may further include ignoring other response messages that arrive at the given gateway after the given response message. Thus, the "same message" refers to a single message that is broadcast from a single gateway to all compute nodes, such that each compute node receives one copy of the single message. Multiple compute nodes may then each respond to the same single message, resulting in multiple functionally equivalent responses being broadcast to all gateways, such as being received by a given gateway. Gateways, including the given gateway, may then sort these multiple functionally equivalent messages in "first come, first served" order.

方法は、所与のコンピュートノードにおいて、複数のゲートウェイのうちの少なくとも2つのゲートウェイから複数のコンピュートノード宛てメッセージを受信するステップを備え得る。複数のコンピュートノード宛てメッセージの各コンピュートノード宛てメッセージは、同じメッセージのそれぞれのバージョンを表してもよく、それぞれのバージョンはそれぞれの高可用性フローを介して少なくとも2つのゲートウェイのうちのそれぞれのゲートウェイに入力されている。方法は、複数のコンピュートノード宛てメッセージのうちの所与のコンピュートノード宛てメッセージに基づいて所与のコンピュートノードにおいて行動を実行するステップをさらに備え得る。所与のコンピュートノード宛てメッセージは、複数のコンピュートノード宛てメッセージのうちの他のコンピュートノード宛てメッセージに相対して最初に所与のコンピュートノードに到着するものであり得る。方法は、所与のコンピュートノード宛てメッセージの後に所与のコンピュートノードに到着する他のコンピュートノード宛てメッセージを無視するステップをさらに備え得る。 The method may include receiving, at a given compute node, a plurality of messages destined for the compute node from at least two of the plurality of gateways. Each of the plurality of messages destined for the compute node may represent a respective version of the same message, with each version having been input to a respective one of the at least two gateways via a respective high availability flow. The method may further include performing an action at the given compute node based on a message destined for the given compute node among the plurality of messages destined for the compute node. The message destined for the given compute node may be the first to arrive at the given compute node relative to messages destined for other compute nodes among the plurality of messages destined for the compute node. The method may further include ignoring messages destined for other compute nodes that arrive at the given compute node after the message destined for the given compute node.

方法は、実行される電子取引マッチング機能に基づいて、コアコンピュートノードにおいて、金融商品に関する取引注文をマッチングさせるステップをさらに備え得る。方法は、注文控え帳における金融商品の残持ち高を維持するステップをさらに備えていてもよく、残持ち高は実行された電子取引マッチング機能によってもたらされた金融商品の金額不一致である。 The method may further include matching, at the core compute node, trade orders for the financial instruments based on the executed electronic trade matching function. The method may further include maintaining an open position for the financial instruments in the order book, the open position being an amount discrepancy for the financial instruments resulting from the executed electronic trade matching function.

方法は、ゲートウェイ、コアコンピュートノード及びシーケンサをクロックに基づいて同期させるステップをさらに備え得る。 The method may further include synchronizing the gateway, the core compute node, and the sequencer based on a clock.

メッセージは、ゲートウェイメッセージであり得る。方法は、ゲートウェイにおいて少なくとも1つの参加者デバイスにサービスを提供するステップと、ゲートウェイにおいて着信メッセージを受信するステップと、ゲートウェイにおける着信メッセージの受信に応じてゲートウェイメッセージをゲートウェイからシーケンサ及びコアコンピュートノードに送信するステップとをさらに備え得る。着信メッセージは、少なくとも1つの参加者デバイスによって発送されたものであり得る。方法は、固有順序識別子を用いてメッセージ又はその表示をマーク付けすることによって、順序マーク付きメッセージを生成するステップをさらに備え得る。 The message may be a gateway message. The method may further include servicing at least one participant device at the gateway, receiving an incoming message at the gateway, and transmitting a gateway message from the gateway to the sequencer and the core compute node in response to receiving the incoming message at the gateway. The incoming message may have been dispatched by at least one participant device. The method may further include generating an order-marked message by marking the message or a representation thereof with a unique order identifier.

方法は、第1の直接接続、第2の直接接続及び第3の直接接続又はこれらの一部の組を、少なくとも1つのそれぞれの冗長直接接続を介して保護するステップをさらに備え得る。 The method may further comprise protecting the first direct connection, the second direct connection, and the third direct connection, or some set thereof, via at least one respective redundant direct connection.

ゲートウェイは複数のゲートウェイのうちの所与のゲートウェイであり、コアコンピュートノードは複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり、シーケンサは複数のシーケンサのうちの所与のシーケンサであり得る。方法は、複数のゲートウェイが共有ゲートウェイネットワークを介して通信可能となるようにするステップと、複数のコアコンピュートノードが共有コアコンピュートノードネットワークを介して通信可能となるようにするステップと、複数のシーケンサが共有シーケンサネットワークを介して又はそれぞれの第4の直接接続を介して通信可能となるようにするステップとをさらに備え得る。 The gateway may be a given gateway among the plurality of gateways, the core compute node may be a given core compute node among the plurality of core compute nodes, and the sequencer may be a given sequencer among the plurality of sequencers. The method may further include enabling the plurality of gateways to communicate via a shared gateway network, enabling the plurality of core compute nodes to communicate via a shared core compute node network, and enabling the plurality of sequencers to communicate via the shared sequencer network or via their respective fourth direct connections.

方法は、所与のシーケンサから複数のシーケンサのうちの少なくとも1つの他のシーケンサに共有シーケンサネットワークを介してシステム状態ログを送信し、又は所与のシーケンサによってシステム状態ログをデータストアに記憶するステップをさらに備え得る。データストアは、共有シーケンサネットワークを介して複数のシーケンサにアクセス可能であり得る。 The method may further include transmitting the system status log from the given sequencer to at least one other sequencer of the plurality of sequencers via a shared sequencer network, or storing the system status log by the given sequencer in a data store. The data store may be accessible to the plurality of sequencers via the shared sequencer network.

電子取引システムは、アクティブな電子取引システムであり得る。方法は、複数のシーケンサのうちの少なくとも1つのシーケンサがディザスタリカバリサイトと通信可能となるようにするステップを備え得る。ディザスタリカバリサイトは、スタンバイ電子取引システムを含み得る。スタンバイ電子取引システムは、アクティブな電子取引システムの複製であり、アクティブな電子取引システムが故障した場合に電子取引が継続可能となるように構成され得る。 The electronic trading system may be an active electronic trading system. The method may include enabling at least one sequencer of the plurality of sequencers to communicate with a disaster recovery site. The disaster recovery site may include a standby electronic trading system. The standby electronic trading system may be a replica of the active electronic trading system and configured to allow electronic trading to continue if the active electronic trading system fails.

図6は、以上に開示した電子取引システム100などの電子取引システムのシーケンサ650の例示実施形態のブロック図である。例示実施形態では、シーケンサ650は、以上に開示した電子取引システム100のポイントツーポイントメッシュシステム102などのポイントツーポイントメッシュシステムにおいて第1の直接接続680aを介してゲートウェイ620と直接通信するように構成された第1の通信モジュール652を備える。シーケンサ650は、電子取引システムにおけるポイントツーポイントメッシュシステムにおいて第2の直接接続680bを介してコアコンピュートノード640と直接通信するように構成された第2の通信モジュール654をさらに備える。シーケンサ650は、第1の通信モジュール652及び第2の通信モジュール654と結合された順序付けロジック656をさらに備える。 6 is a block diagram of an example embodiment of a sequencer 650 of an electronic trading system, such as the electronic trading system 100 disclosed above. In the example embodiment, the sequencer 650 comprises a first communication module 652 configured to communicate directly with a gateway 620 via a first direct connection 680a in a point-to-point mesh system, such as the point-to-point mesh system 102 of the electronic trading system 100 disclosed above. The sequencer 650 further comprises a second communication module 654 configured to communicate directly with a core compute node 640 via a second direct connection 680b in the point-to-point mesh system of the electronic trading system. The sequencer 650 further comprises sequencing logic 656 coupled to the first communication module 652 and the second communication module 654.

順序付けロジック656は、メッセージ606又はその表示を固有順序識別子(不図示)でマーク付けすることによって順序マーク付きメッセージ606´を生成するように構成され、メッセージ606は、それぞれ第1の直接接続680a又は第2の直接接続680bを介して第1の通信モジュール652又は第2の通信モジュール654によって受信される。順序付けロジック656はさらに、順序マーク付きメッセージ606´を、それぞれ第1の通信モジュール652及び第2の通信モジュール654を介してゲートウェイ620及びコアコンピュートノード640に送信するように構成される。 The ordering logic 656 is configured to generate an order-marked message 606' by marking the message 606, or a representation thereof, with a unique order identifier (not shown), and the message 606 is received by the first communication module 652 or the second communication module 654 via the first direct connection 680a or the second direct connection 680b, respectively. The ordering logic 656 is further configured to transmit the order-marked message 606' to the gateway 620 and the core compute node 640 via the first communication module 652 and the second communication module 654, respectively.

例示実施形態によると、順序付けロジックは、例えば、以上に開示した図2の固定ロジックデバイス230におけるFPGAの論理の部分又はASICである。さらに、通信モジュール652及び654の双方とも、FPGAにおいて、例えば、図2を参照して以上に開示した10 GigE MACコア260において実施され得る。 According to an exemplary embodiment, the sequencing logic is an ASIC or part of the logic of, for example, an FPGA in fixed logic device 230 of FIG. 2 disclosed above. Additionally, both communications modules 652 and 654 may be implemented in an FPGA, for example, in 10 GigE MAC core 260 disclosed above with reference to FIG. 2.

図7は、以上に開示した図1B-1及び図1B-2の電子取引システム100などの電子取引システムの他の例示実施形態のブロック図である。図1B-2及び図7を参照すると、ゲートウェイ120-1、コアコンピュートノード140-1、シーケンサ150-1、第1の直接接続180-1-1、第2の直接接続180-gw1-s1及び第3の直接接続180-c1-s1が第1のポイントツーポイントメッシュシステム702aを構成する。電子取引システム100は、プロキシノード772と通信可能に結合した第1の電子取引システム700aであり得る。プロキシノード772は、さらに、少なくとも1つの参加者デバイス730及び第2の電子取引システム700bと通信可能に結合され得る。第2の電子取引システム700bは、図1B-2に関して以上に開示したポイントツーポイントメッシュシステム102などの第2のポイントツーポイントメッシュシステム702bを含み得る。 FIG. 7 is a block diagram of another example embodiment of an electronic trading system, such as the electronic trading system 100 of FIGS. 1B-1 and 1B-2 disclosed above. With reference to FIGS. 1B-2 and 7, the gateway 120-1, core compute node 140-1, sequencer 150-1, first direct connection 180-1-1, second direct connection 180-gw1-s1, and third direct connection 180-c1-s1 constitute a first point-to-point mesh system 702a. The electronic trading system 100 may be a first electronic trading system 700a communicatively coupled to a proxy node 772. The proxy node 772 may further be communicatively coupled to at least one participant device 730 and a second electronic trading system 700b. The second electronic trading system 700b may include a second point-to-point mesh system 702b, such as the point-to-point mesh system 102 disclosed above with respect to FIG. 1B-2.

プロキシノード772は、少なくとも1つの参加者デバイス730からの着信メッセージ703の受信に応じて、メッセージ703´を第1の電子取引システム700a及び第2の電子取引システム700bに送信するように構成される。第1及び第2の電子取引システムは、プロキシノード772によって送信されたメッセージに対するそれぞれの応答を生成するように構成され得る。プロキシノード772は、さらに、第1の電子取引システム700a又は第2の電子取引システム700bから受信された第1の到着応答705´の受信に応じて、応答、すなわち、発信メッセージ705を少なくとも1つの参加者デバイス730に送信するように構成され得る。第1の電子取引システム700a及び第2の電子取引システム700bは、例えば、日時を提供する共通のクロックに基づいて、例えば、同期され得る(777)。ただし、第1の電子取引システム700a及び第2の電子取引システム700bは、共通のクロックに基づいて同期されること(777)に限定されない。 The proxy node 772 is configured to transmit a message 703' to the first electronic trading system 700a and the second electronic trading system 700b in response to receiving an incoming message 703 from at least one participant device 730. The first and second electronic trading systems may be configured to generate respective responses to the message transmitted by the proxy node 772. The proxy node 772 may further be configured to transmit a response, i.e., an outgoing message 705, to at least one participant device 730 in response to receiving a first incoming response 705' received from the first electronic trading system 700a or the second electronic trading system 700b. The first electronic trading system 700a and the second electronic trading system 700b may be synchronized (777), for example, based on a common clock providing, for example, the date and time. However, the first electronic trading system 700a and the second electronic trading system 700b are not limited to being synchronized (777) based on a common clock.

例示実施形態によると、電子取引システム700a及び電子取引システム700bの双方を包含する全体のシステムの単一のアクティブ/プライマリシーケンサ(不図示)は、電子取引システム700aと電子取引システム700bの間の順序番号を調整するのに採用され得る。例えば、単一のアクティブ/プライマリシーケンサは、到着応答705´が電子取引システム700a及び電子取引システム700bの双方によって同じ順序番号を割り当てられるようにこの順序番号を調整してもよく、それにより、プロキシノード772はメッセージの相対順位付けを適切に決定できる。例えば、単一のアクティブ/プライマリシーケンサが電子取引システム700aにある場合、例えば、アクティブシーケンサは電子取引システム700bにおいてスタンバイシーケンサと通信することによって電子取引システム700bと通信するように構成されてもよく、順序番号はメッセージ毎に割り当てられる。 According to an example embodiment, a single active/primary sequencer (not shown) for the overall system encompassing both electronic trading system 700a and electronic trading system 700b may be employed to coordinate sequence numbers between electronic trading system 700a and electronic trading system 700b. For example, the single active/primary sequencer may coordinate the sequence numbers so that arriving responses 705' are assigned the same sequence number by both electronic trading system 700a and electronic trading system 700b, thereby allowing proxy node 772 to properly determine the relative ordering of messages. For example, if there is a single active/primary sequencer in electronic trading system 700a, the active sequencer may be configured to communicate with electronic trading system 700b by communicating with a standby sequencer in electronic trading system 700b, and sequence numbers are assigned on a message-by-message basis.

ポイントツーポイントメッシュアーキテクチャなどの上記アーキテクチャは、電子取引システム以外の用途で使用され得る。例えば、証券取引注文を扱う以外の用途のために、ネットワークを流れるデータストリームを監視し、パケットを捕捉し、パケットの生データを復号し、パケットの内容をリアルタイムで分析し、応答を提供するために使用され得ることが可能である。 The above-described architectures, such as a point-to-point mesh architecture, can be used for applications other than electronic trading systems. For example, they can be used to monitor data streams flowing through a network, capture packets, decode the raw data in the packets, analyze the packet contents in real time, and provide responses for applications other than handling securities trading orders.

さらに、ここで開示される例示実施形態は、コンピュータプログラム製品を使用して構成されてもよく、例えば、制御が、例示実施形態を実施するためのソフトウェアにプログラムされてもよい。更なる例示実施形態は、プロセッサによって実行され得る命令を含む非一時的なコンピュータ可読媒体を含んでいてもよく、読み込まれて実行されると、ここに記載される方法をプロセッサに完了させることができる。ブロック図及びフロー図の要素は、以上に開示した図2の回路の1つ以上の配置、又はその均等物、ファームウェア、カスタム設計された半導体ロジック、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、それらの組合せ、又は将来的に決定する他の同様の実施例などによって、ソフトウェア又はハードウェアで実施されてもよいことが理解されるべきである。 Additionally, the exemplary embodiments disclosed herein may be configured using a computer program product, e.g., control may be programmed in software to implement the exemplary embodiments. Further exemplary embodiments may include a non-transitory computer-readable medium containing instructions executable by a processor, which, when loaded and executed, cause the processor to complete the methods described herein. It should be understood that elements of the block diagrams and flow diagrams may be implemented in software or hardware, such as by one or more arrangements of the circuitry of FIG. 2 disclosed above, or equivalents thereof, firmware, custom-designed semiconductor logic, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), combinations thereof, or other similar implementations determined in the future.

さらに、ここで記載されたブロック図及びフロー図の要素は、ソフトウェア、ハードウェア又はファームウェアにおいて、任意の方法で組み合わせ又は分割され得る。ソフトウェアで実施される場合、ソフトウェアは、ここに開示される例示実施形態に対応し得る任意の言語で書かれてもよい。ソフトウェアは、1以上のランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、コンパクトディスク読み取り専用メモリ(CD-ROM)などの任意の形態のコンピュータ可読媒体に記憶されてもよい。動作において、汎用又は特定用途向けプロセッサ又は処理コアは、当技術分野でよく理解されている方法でソフトウェアを読み込み、実行する。さらに、ブロック図及びフロー図は、より多数の又はより少数の要素を含み、異なる態様で配置若しくは配向され、又は異なるように表現されてもよいことが理解されるべきである。実施例は、ここに開示される実施形態の実行を示すブロック図、フロー図及び/又はネットワーク図並びにブロック図及びフロー図の数を決定し得ることが理解されるべきである。 Furthermore, the elements of the block diagrams and flow diagrams described herein may be combined or divided in any manner in software, hardware, or firmware. If implemented in software, the software may be written in any language that can correspond to the example embodiments disclosed herein. The software may be stored in any form of computer-readable medium, such as one or more random access memories (RAMs), read-only memories (ROMs), or compact disc read-only memories (CD-ROMs). In operation, a general-purpose or application-specific processor or processing core loads and executes the software in a manner well understood in the art. Furthermore, it should be understood that the block diagrams and flow diagrams may include more or fewer elements, may be arranged or oriented in a different manner, or may be represented differently. It should be understood that examples may determine the number of block diagrams, flow diagrams, and/or network diagrams illustrating the implementation of the embodiments disclosed herein.

したがって、更なる実施形態は、様々なコンピュータアーキテクチャ、物理的な、仮想的な、クラウドのコンピュータ及び/又はそれらの何らかの組合せで実施されてもよく、したがって、ここに記載されるデータ処理システムは例示のみを目的としており、実施形態の限定を意図するものではない。 Accordingly, further embodiments may be implemented in a variety of computer architectures, physical, virtual, cloud computers, and/or any combination thereof, and therefore, the data processing systems described herein are for illustrative purposes only and are not intended to limit the embodiments.

例示実施形態を具体的に図示及び説明してきたが、添付の特許請求の範囲によって包含される実施形態の範囲から逸脱することなく、形態及び詳細における種々の変更がここでなされ得ることは当業者に理解されるはずである。
While example embodiments have been particularly shown and described, it should be understood by those skilled in the art that various changes in form and detail can be made therein without departing from the scope of the embodiments encompassed by the appended claims.

Claims (30)

電子取引システムであって、
ゲートウェイと、
電子取引マッチング機能を実行するように構成されたコアコンピュートノードと、
シーケンサと、
を備え、
前記ゲートウェイと前記コアコンピュートノードとは第1の直接接続を介して結合され、前記ゲートウェイと前記シーケンサとは第2の直接接続を介して結合され、前記シーケンサと前記コアコンピュートノードとは第3の直接接続を介して結合され、前記第1、第2及び第3の直接接続はそれぞれの非共有帯域幅を有し、
前記ゲートウェイは、金融商品を買付又は売却する指値を伴う電子取引要求を表すメッセージを前記コアコンピュートノードに前記第1の直接接続を介して送信するように構成され、これに対して、前記メッセージは、前記コアコンピュートノードによって受信され、前記ゲートウェイはさらに、前記メッセージを前記シーケンサに前記第2の直接接続を介して送信するように構成され、前記シーケンサは、これに対して順序マーク付きメッセージを前記コアコンピュートノードに前記第3の直接接続を介して送信するように構成され、前記シーケンサは、前記ゲートウェイと前記コアコンピュートノードの間に前記第2及び第3の直接接続を介して挿入され、前記シーケンサによって送信される前記順序マーク付きメッセージは、前記ゲートウェイによって送信された前記メッセージの順序付けされたバージョンであり、これに対して、前記順序マーク付きメッセージは、前記コアコンピュートノードによって受信され、前記コアコンピュートノードは、前記電子取引システムにおいて前記コアコンピュートノードによって受信される他のメッセージの順序マーク付きバージョンの間で前記順序マーク付きメッセージの相対順位付けを決定するように構成され、前記コアコンピュートノードはさらに、決定された前記相対順位付けに応じて前記電子取引要求について前記電子取引マッチング機能を完了し、前記金融商品について前記指値を相手方指値とマッチングさせ、前記金融商品の電子取引を可能とするように構成されている、電子取引システム。
1. An electronic trading system comprising:
A gateway;
a core compute node configured to perform electronic trade matching functions;
A sequencer,
Equipped with
the gateway and the core compute node are coupled via a first direct connection, the gateway and the sequencer are coupled via a second direct connection, and the sequencer and the core compute node are coupled via a third direct connection, the first, second, and third direct connections having respective unshared bandwidths;
the gateway is configured to send a message representing an electronic transaction request with a limit price to buy or sell a financial instrument to the core compute node via the first direct connection, wherein the message is received by the core compute node; the gateway is further configured to send the message to the sequencer via the second direct connection, wherein the sequencer is configured to send an order-marked message to the core compute node via the third direct connection; the sequencer is interposed between the gateway and the core compute node via the second and third direct connections, wherein the order-marked message sent by the sequencer is an ordered version of the message sent by the gateway, whereby the order-marked message is received by the core compute node, the core compute node being configured to determine a relative ranking of the order-marked message among order-marked versions of other messages received by the core compute node in the electronic trading system, and the core compute node being further configured to complete the electronic trade matching function for the electronic trade request in response to the determined relative ranking, to match the limit price with a counterparty limit price for the financial instrument, and to enable electronic trading of the financial instrument.
前記メッセージ及び前記順序マーク付きメッセージは同一のユーザデータを含み、該ユーザデータは前記電子取引要求に対応付けられる、請求項1に記載の電子取引システム。 The electronic trading system of claim 1, wherein the message and the sequence-marked message contain the same user data, and the user data is associated with the electronic trading request. 前記メッセージは、参加者デバイスから前記ゲートウェイによって受信された着信メッセージの受信に応じて前記ゲートウェイによって送信されたゲートウェイメッセージであり、前記シーケンサはさらに、これに対して、前記順序マーク付きメッセージを前記ゲートウェイに前記第2の直接接続を介して送信するように構成され、これに対して、前記順序マーク付きメッセージは前記ゲートウェイによって受信され、前記順序マーク付きメッセージは第1の順序マーク付きメッセージであり、前記コアコンピュートノードはさらに、
前記ゲートウェイメッセージの受信に応じて、コアコンピュートノードメッセージを前記ゲートウェイに前記第1の直接接続を介して送信するように構成され、
前記コアコンピュートノードメッセージを前記シーケンサに前記第3の直接接続を介して送信するように構成され、前記シーケンサはさらに、これに対して第2の順序マーク付きメッセージを前記ゲートウェイに前記第2の直接接続を介して送信するように構成され、前記第2の順序マーク付きメッセージは前記コアコンピュートノードメッセージの順序付けされたバージョンであり、前記ゲートウェイはさらに、
前記コアコンピュートノードから前記ゲートウェイに送信された前記第2の順序マーク付きメッセージ及び他のメッセージの順序マーク付きバージョンの前記相対順位付けを決定するように構成され、
発信メッセージを前記参加者デバイスに送信するように構成され、前記発信メッセージは決定された前記相対順位付けに応じて送信され、前記シーケンサはさらに、これに対して前記第2の順序マーク付きメッセージを前記コアコンピュートノードに前記第3の直接接続を介して送信するように構成されている、請求項1に記載の電子取引システム。
the message is a gateway message sent by the gateway in response to receiving an incoming message received by the gateway from a participant device, the sequencer is further configured to, in response, send the order-marked message to the gateway via the second direct connection, whereby the order-marked message was received by the gateway, the order-marked message is a first order-marked message, and the core compute node is further configured to:
configured to, in response to receiving the gateway message, send a core compute node message to the gateway via the first direct connection;
the core compute node is configured to send the message to the sequencer via the third direct connection, the sequencer being further configured to in response send a second order-marked message to the gateway via the second direct connection, the second order-marked message being an ordered version of the core compute node message, and the gateway being further configured to:
configured to determine the relative ranking of the second order-marked message and order-marked versions of other messages sent from the core compute node to the gateway;
2. The electronic trading system of claim 1, wherein the sequencer is configured to send an outgoing message to the participant device, the outgoing message being sent according to the determined relative ranking, and the sequencer is further configured to in response send the second order-marked message to the core compute node via the third direct connection.
前記ゲートウェイは複数のゲートウェイのうちの所与のゲートウェイであり、前記コアコンピュートノードは複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり、
前記複数のゲートウェイの各前記ゲートウェイは、前記複数のコアコンピュートノードの各前記コアコンピュートノードにそれぞれの前記第1の直接接続を介して結合され、
前記シーケンサは、前記複数のゲートウェイの各前記ゲートウェイにそれぞれの前記第2の直接接続を介して結合され、前記複数のコアコンピュートノードの各前記コアコンピュートノードにそれぞれの前記第3の直接接続を介して結合され、前記複数のゲートウェイ、前記複数のコアコンピュートノード、前記シーケンサ及びそれぞれの直接接続は、ポイントツーポイントメッシュシステムの少なくとも一部分を構成し、該ポイントツーポイントメッシュシステム内で、
前記複数のゲートウェイの各前記ゲートウェイは、そこから送信されるそれぞれのコンピュートノード宛てメッセージを前記複数のコアコンピュートノードの全てのコンピュートノード及び前記シーケンサに送信するように構成され
前記複数のコアコンピュートノードの各前記コアコンピュートノードは、そこから送信されたそれぞれのゲートウェイ宛てメッセージを前記複数のゲートウェイの全ての前記ゲートウェイ及び前記シーケンサに送信するように構成され、
前記シーケンサはさらに、前記それぞれのコンピュートノード宛てメッセージ又は前記それぞれのゲートウェイ宛てメッセージの受信に応じて、それぞれの前記順序マーク付きメッセージを前記複数のゲートウェイ及び前記複数のコアコンピュートノードに送信するように構成されている、請求項1に記載の電子取引システム。
the gateway is a given gateway among a plurality of gateways, and the core compute node is a given core compute node among a plurality of core compute nodes;
each of the plurality of gateways is coupled to a respective one of the plurality of core compute nodes via a respective one of the first direct connections;
the sequencer is coupled to each of the plurality of gateways via the respective second direct connections and to each of the plurality of core compute nodes via the respective third direct connections, the plurality of gateways, the plurality of core compute nodes, the sequencer, and the respective direct connections forming at least a portion of a point-to-point mesh system, within the point-to-point mesh system:
Each of the plurality of gateways is configured to transmit a message destined for a respective compute node sent therefrom to all of the plurality of core compute nodes and to the sequencer; and each of the plurality of core compute nodes is configured to transmit a message destined for a respective gateway sent therefrom to all of the plurality of gateways and to the sequencer.
2. The electronic trading system of claim 1, wherein the sequencer is further configured to transmit each of the sequence-marked messages to the plurality of gateways and the plurality of core compute nodes in response to receiving a message destined for the respective compute node or a message destined for the respective gateway.
前記シーケンサは、前記ポイントツーポイントメッシュシステムにおける複数のシーケンサのうちの所与のシーケンサであり、
前記複数のゲートウェイの各前記ゲートウェイは、前記複数のシーケンサの各前記シーケンサにそれぞれの前記第2の直接接続を介して結合され、
前記複数のコアコンピュートノードの各前記コアコンピュートノードは、前記複数のシーケンサの各前記シーケンサにそれぞれの前記第3の直接接続を介して結合され、
前記所与のシーケンサは前記ポイントツーポイントメッシュシステムにサービス提供中の現在アクティブなシーケンサであり、前記複数のシーケンサの他の各シーケンサは前記現在アクティブなシーケンサを引き継ぐために待機しているスタンバイシーケンサであり、
前記複数のシーケンサの各前記シーケンサは、前記複数のシーケンサの他の各シーケンサにそれぞれの第4の直接接続を介して結合され、
前記複数のゲートウェイの各前記ゲートウェイはさらに、それぞれのコンピュートノード宛てメッセージを前記複数のシーケンサのうちの前記所与のシーケンサに送信するように構成され、
前記複数のコアコンピュートノードの各前記コアコンピュートノードはさらに、それぞれのゲートウェイ宛てメッセージを前記複数のシーケンサのうちの前記所与のシーケンサに送信するように構成され、
前記所与のシーケンサにはさらに、前記順序マーク付きメッセージを前記複数のシーケンサの他の各シーケンサに各それぞれの前記第4の直接接続を介して送信して、前記現在アクティブなシーケンサが故障した場合に、前記スタンバイシーケンサが前記現在アクティブなシーケンサを引き継ぐことを可能とするように構成されている、請求項4に記載の電子取引システム。
the sequencer is a given sequencer among a plurality of sequencers in the point-to-point mesh system;
each of the plurality of gateways is coupled to a respective one of the plurality of sequencers via a respective one of the second direct connections;
each core compute node of the plurality of core compute nodes is coupled to a respective sequencer of the plurality of sequencers via a respective third direct connection;
the given sequencer is a currently active sequencer serving the point-to-point mesh system, and each other sequencer of the plurality of sequencers is a standby sequencer waiting to take over for the currently active sequencer;
each said sequencer of said plurality of sequencers is coupled to each other sequencer of said plurality of sequencers via a respective fourth direct connection;
each of the plurality of gateways further configured to send a message destined for a respective compute node to the given sequencer of the plurality of sequencers;
each core compute node of the plurality of core compute nodes further configured to send a respective gateway-destined message to the given sequencer of the plurality of sequencers;
5. The electronic trading system of claim 4, wherein the given sequencer is further configured to send the order-marked message to each other sequencer of the plurality of sequencers via each respective fourth direct connection to enable the standby sequencer to take over for the currently active sequencer if the currently active sequencer fails.
前記所与のゲートウェイによって送信される前記それぞれのコンピュートノード宛てメッセージは、前記複数のコアコンピュートノードによって受信される同じメッセージであり、前記複数のコアコンピュートノードは、前記同じメッセージの受信に応じて、応答メッセージを生成するように構成され、該応答メッセージは前記複数のコアコンピュートノードの中から前記所与のゲートウェイにおいて受信され、前記所与のゲートウェイはさらに、
前記同じメッセージの受信に応じて生成された前記応答メッセージのうちの所与の応答メッセージに基づいて行動をとるように構成され、該所与の応答メッセージは前記同じメッセージの受信に応じて生成された他の応答メッセージに相対して最初に前記所与のゲートウェイに到着するものであり、前記所与のゲートウェイはさらに、
前記所与の応答メッセージの後に到着する前記他の応答メッセージを無視するように構成されている、請求項4に記載の電子取引システム。
The message destined for each of the compute nodes transmitted by the given gateway is the same message received by the plurality of core compute nodes, the plurality of core compute nodes are configured to generate a response message in response to receiving the same message, the response message being received at the given gateway from among the plurality of core compute nodes, and the given gateway further:
and configured to take action based on a given one of the response messages generated in response to receipt of the same message, the given response message being a first to arrive at the given gateway relative to other response messages generated in response to receipt of the same message, the given gateway further comprising:
5. The electronic trading system of claim 4, configured to ignore the other response messages that arrive after the given response message.
同じメッセージを表す複数のコンピュートノード宛てメッセージは、所与のコンピュートノードにおいて前記複数のゲートウェイの中から受信され、前記所与のコンピュートノードはさらに、
前記複数のコンピュートノード宛てメッセージのうちの所与のコンピュートノード宛てメッセージに基づいて行動をとるように構成され、該所与のコンピュートノード宛てメッセージは前記同じメッセージを表す前記複数のコンピュートノード宛てメッセージのうちの他のコンピュートノード宛てメッセージに相対して最初に前記所与のコンピュートノードに到着するものであり、前記所与のコンピュートノードはさらに、
前記所与のコンピュートノード宛てメッセージの後に到着する前記他のコンピュートノード宛てメッセージを無視するように構成されている、請求項4に記載の電子取引システム。
Messages destined for multiple compute nodes representing the same message are received from among the multiple gateways at a given compute node, and the given compute node further comprises:
configured to take action based on a message destined for a given compute node among the plurality of messages destined for the given compute node, the message destined for the given compute node arriving at the given compute node first relative to other messages destined for the plurality of messages representing the same message, the given compute node further comprising:
5. The electronic trading system of claim 4, configured to ignore messages destined for the other compute nodes that arrive after a message destined for the given compute node.
前記コアコンピュートノードによってアクセス可能な注文控え帳をさらに備え、前記コアコンピュートノードはさらに、
前記電子取引マッチング機能を用いて前記金融商品に関する取引注文をマッチングさせるように構成され、
前記注文控え帳における前記金融商品の残持ち高を維持するように構成され、前記金融商品に関連する取引注文の不一致金額は、前記電子取引マッチング機能を実行する結果としてもたらされ、前記残持ち高は前記金融商品に関連する取引注文の不一致金額を含む、請求項1に記載の電子取引システム。
an order book accessible by the core compute nodes, the core compute nodes further comprising:
configured to match trade orders for the financial instruments using the electronic trade matching functionality;
2. The electronic trading system of claim 1, configured to maintain a balance of the financial instrument in the order book, wherein a mismatch amount of a trading order associated with the financial instrument results from performing the electronic trade matching function, and wherein the balance includes a mismatch amount of a trading order associated with the financial instrument.
クロックをさらに備え、前記ゲートウェイ、前記コアコンピュートノード及び前記シーケンサは、前記クロックに基づいて同期される、請求項1に記載の電子取引システム。 The electronic trading system of claim 1, further comprising a clock, wherein the gateway, the core compute node, and the sequencer are synchronized based on the clock. 前記ゲートウェイはさらに、
少なくとも1つの参加者デバイスにサービスを提供するように構成され、
前記ゲートウェイにおける着信メッセージの受信に応じて前記メッセージを前記シーケンサ及び前記コアコンピュートノードに送信するように構成され、前記着信メッセージは前記少なくとも1つの参加者デバイスによって発送され、前記シーケンサはさらに、固有順序識別子を用いて前記メッセージをマーク付けすることによって、又は受信した前記メッセージの表示を作成し、前記固有順序識別子を用いて前記表示をマーク付けし、マーク付けされた表示を送信することによって、前記順序マーク付きメッセージを生成するように構成され、前記マーク付けされた表示は前記順序マーク付きメッセージである、請求項1に記載の電子取引システム。
The gateway further comprises:
configured to provide a service to at least one participant device;
2. The electronic trading system of claim 1, wherein the gateway is configured to send an incoming message to the sequencer and the core compute node in response to receiving the message, the incoming message being dispatched by the at least one participant device, and the sequencer is further configured to generate the sequence-marked message by marking the message with a unique sequence identifier or by creating a representation of the received message, marking the representation with the unique sequence identifier, and transmitting the marked representation, wherein the marked representation is the sequence-marked message.
前記第1の直接接続、前記第2の直接接続及び前記第3の直接接続又はこれらの一部の組について、少なくとも1つのそれぞれの冗長直接接続をさらに備える請求項1に記載の電子取引システム。 The electronic trading system of claim 1 further comprising at least one redundant direct connection for each of the first direct connection, the second direct connection, and the third direct connection, or a subset thereof. 前記ゲートウェイは、共有ゲートウェイネットワークを介して相互に通信可能に結合された複数のゲートウェイのうちの所与のゲートウェイであり、
前記コアコンピュートノードは、共有コアコンピュートノードネットワークを介して相互に通信可能に結合された複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり、
前記シーケンサは、共有シーケンサネットワークを介して又はそれぞれの第4の直接接続を介して相互に通信可能に結合された複数のシーケンサのうちの所与のシーケンサである、請求項1に記載の電子取引システム。
the gateway is a given gateway among a plurality of gateways communicatively coupled to each other via a shared gateway network;
the core compute node is a given core compute node among a plurality of core compute nodes communicatively coupled to each other via a shared core compute node network;
2. The electronic trading system of claim 1, wherein the sequencer is a given sequencer of a plurality of sequencers communicatively coupled to one another via a shared sequencer network or via respective fourth direct connections.
システム状態ログをさらに備え、前記所与のシーケンサは、前記システム状態ログを前記複数のシーケンサのうちの少なくとも1つの他のシーケンサに前記共有シーケンサネットワークを介して送信し、又は前記システム状態ログをデータストアに記憶するように構成され、該データストアは、前記共有シーケンサネットワークを介して前記複数のシーケンサにアクセス可能である、請求項12に記載の電子取引システム。 The electronic trading system of claim 12, further comprising a system status log, wherein the given sequencer is configured to transmit the system status log to at least one other sequencer among the plurality of sequencers via the shared sequencer network or to store the system status log in a data store, the data store being accessible to the plurality of sequencers via the shared sequencer network. 前記電子取引システムはアクティブな電子取引システムであり、前記複数のシーケンサの少なくとも1つの前記シーケンサはディザスタリカバリサイトに通信可能に結合され、該ディザスタリカバリサイトはスタンバイ電子取引システムを含み、該スタンバイ電子取引システムは、前記アクティブな電子取引システムの複製であり、該アクティブな電子取引システムが故障した場合に電子取引が継続可能となるように構成される、請求項12に記載の電子取引システム。 The electronic trading system of claim 12, wherein the electronic trading system is an active electronic trading system, and at least one of the plurality of sequencers is communicatively coupled to a disaster recovery site, the disaster recovery site including a standby electronic trading system, the standby electronic trading system being a replica of the active electronic trading system and configured to enable electronic trading to continue in the event of a failure of the active electronic trading system. 前記ゲートウェイ、前記コアコンピュートノード、前記シーケンサ並びに前記第1、第2及び第3の直接接続は、第1のポイントツーポイントメッシュシステムを構成し、
前記電子取引システムは、プロキシノードに通信可能に結合された第1の電子取引システムであり、前記プロキシノードはさらに少なくとも1つの参加者デバイス及び第2の電子取引システムに通信可能に結合され、該第2の電子取引システムは第2のポイントツーポイントメッシュシステムを含み、
前記プロキシノードは、前記少なくとも1つの参加者デバイスからの着信メッセージの受信に応じて前記メッセージを前記第1及び第2の電子取引システムに送信するように構成され、該第1及び第2の電子取引システムは、前記プロキシノードによって送信された前記メッセージに対するそれぞれの応答を生成するように構成され、前記プロキシノードはさらに、前記第1又は第2の電子取引システムから生成及び受信された前記それぞれの応答のうちの最初に到着する応答の受信に応じて前記少なくとも1つの参加者デバイスに応答を送信するように構成されている、請求項1に記載の電子取引システム。
the gateway, the core compute node, the sequencer, and the first, second, and third direct connections form a first point-to-point mesh system;
the electronic trading system is a first electronic trading system communicatively coupled to a proxy node, the proxy node further communicatively coupled to at least one participant device and a second electronic trading system, the second electronic trading system including a second point-to-point mesh system;
2. The electronic trading system of claim 1, wherein the proxy node is configured to transmit an incoming message to the first and second electronic trading systems in response to receiving the message from the at least one participant device, the first and second electronic trading systems being configured to generate respective responses to the message transmitted by the proxy node, and the proxy node is further configured to transmit a response to the at least one participant device in response to receiving a first-arriving response from the respective responses generated and received from the first or second electronic trading systems.
電子取引を実行する方法であって、
金融商品を買付又は売却する指値を伴う電子取引要求を表すメッセージをゲートウェイからコアコンピュートノードに第1の直接接続を介して送信するステップと、
これに対して、電子取引システムにおいて電子取引機能を実行するために前記メッセージを前記コアコンピュートノードにおいて受信するステップと、
前記メッセージを前記ゲートウェイから前記電子取引システムにおけるシーケンサに第2の直接接続を介して送信し、これに対して順序マーク付きメッセージを前記シーケンサから前記コアコンピュートノードに第3の直接接続を介して送信するステップであって、前記第1、第2及び第3の直接接続はそれぞれの非共有帯域幅を有し、前記シーケンサは前記ゲートウェイと前記コアコンピュートノードの間に前記第2及び第3の直接接続を介して挿入され、前記シーケンサによって送信される前記順序マーク付きメッセージは、前記第2の直接接続を介して前記ゲートウェイから送信された前記メッセージの順序付けされたバージョンである、ステップと、
これに対して、前記コアコンピュートノードにおいて、前記順序マーク付きメッセージを受信するステップと、
前記コアコンピュートノードにおいて、前記ゲートウェイからの他のメッセージを受信し、前記コアコンピュートノードにおいて、前記シーケンサからの前記他のメッセージの順序マーク付きバージョンを受信するステップと、
前記電子取引システムにおいて前記コアコンピュートノードによって受信された前記他のメッセージの前記順序マーク付きバージョンのうちの前記順序マーク付きメッセージの相対順位付けを前記コアコンピュートノードにおいて決定するステップと、
前記コアコンピュートノードにおいて、決定された前記相対順位付けに応じて前記電子取引要求に対して電子取引マッチング機能を完了するステップであって、該完了するステップは前記金融商品について前記指値を相手方指値とマッチングさせ、前記金融商品の電子取引を可能とする、ステップと、
を備える方法。
1. A method of conducting electronic transactions, comprising:
sending a message from the gateway to a core compute node over a first direct connection representing an electronic transaction request with a limit price to buy or sell a financial instrument;
In response, receiving the message at the core compute node for performing an electronic trading function in an electronic trading system;
sending the message from the gateway to a sequencer in the electronic trading system via a second direct connection, and in response sending an order-marked message from the sequencer to the core compute node via a third direct connection, wherein the first, second, and third direct connections have respective unshared bandwidths, the sequencer is interposed between the gateway and the core compute node via the second and third direct connections, and the order-marked message sent by the sequencer is an ordered version of the message sent from the gateway via the second direct connection;
In response, receiving the marked message at the core compute node;
receiving, at the core compute node, another message from the gateway and receiving, at the core compute node, an order-marked version of the other message from the sequencer;
determining at the core compute node a relative ranking of the order-marked message among the order-marked versions of the other messages received by the core compute node in the electronic trading system;
at the core compute node, completing an electronic trade matching function for the electronic trade request in response to the determined relative ranking, the completing matching the limit price with a counterparty limit price for the financial instrument to enable electronic trading of the financial instrument;
A method for providing
前記メッセージ及び前記順序マーク付きメッセージは同一のユーザデータを含み、該ユーザデータは電子取引要求に対応付けられる、請求項16に記載の方法。 The method of claim 16, wherein the message and the sequence-marked message contain the same user data, and the user data is associated with an electronic transaction request. 前記メッセージはゲートウェイメッセージであり、前記方法は、前記ゲートウェイにおいて参加者デバイスからの着信メッセージを受信するステップをさらに備え、前記ゲートウェイメッセージを送信するステップは、前記ゲートウェイによる前記参加者デバイスからの前記着信メッセージの受信に応じて前記ゲートウェイによって前記ゲートウェイメッセージを送信するステップを含み、前記順序マーク付きメッセージは第1の順序マーク付きメッセージであり、前記方法は、
前記第1の順序マーク付きメッセージを前記シーケンサから前記ゲートウェイに前記第2の直接接続を介して送信するステップであって、これに対して、前記第1の順序マーク付きメッセージは前記ゲートウェイによって受信される、ステップと、
前記メッセージの受信に応じて、コアコンピュートノードメッセージを前記コアコンピュートノードから前記ゲートウェイに前記第1の直接接続を介して送信するステップと、
前記コアコンピュートノードメッセージを前記シーケンサに前記第3の直接接続を介して送信し、これに対して第2の順序マーク付きメッセージを前記シーケンサから前記ゲートウェイに前記第2の直接接続を介して送信するステップであって、前記第2の順序マーク付きメッセージは前記コアコンピュートノードメッセージの順序付けされたバージョンである、ステップと、
前記コアコンピュートノードから前記ゲートウェイに送信された前記第2の順序マーク付きメッセージ及び他のメッセージの前記順序マーク付きバージョンの前記相対順位付けを前記ゲートウェイにおいて決定ステップと、
発信メッセージを前記参加者デバイスに送信するステップであって、前記発信メッセージは決定された前記相対順位付けに応じて送信される、ステップと、
前記第2の順序マーク付きメッセージを前記シーケンサから前記コアコンピュートノードに前記第3の直接接続を介して送信するステップと、
をさらに備える請求項16に記載の方法。
the message is a gateway message, the method further comprising receiving an incoming message at the gateway from a participant device, wherein sending the gateway message comprises sending the gateway message by the gateway in response to receiving the incoming message from the participant device by the gateway, the order-marked message is a first order-marked message, and the method further comprises:
sending the first order-marked message from the sequencer to the gateway via the second direct connection, whereupon the first order-marked message is received by the gateway;
In response to receiving the message, sending a core compute node message from the core compute node to the gateway via the first direct connection;
sending the core compute node message to the sequencer over the third direct connection and in response sending a second order-marked message from the sequencer to the gateway over the second direct connection, the second order-marked message being an ordered version of the core compute node message;
determining at the gateway the relative ranking of the second order-marked message and the order-marked versions of other messages sent from the core compute node to the gateway;
sending an outgoing message to the participant device, the outgoing message being sent according to the determined relative ranking;
sending the second order-marked message from the sequencer to the core compute node via the third direct connection;
17. The method of claim 16 further comprising:
前記ゲートウェイは複数のゲートウェイのうちの所与のゲートウェイであり、前記コアコンピュートノードは複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり、前記方法は、
前記複数のゲートウェイの各前記ゲートウェイから送信されるそれぞれのコンピュートノード宛てメッセージを前記複数のコアコンピュートノードの全ての前記コアコンピュートノード及び前記シーケンサに送信するステップと、
前記複数のコアコンピュートノードの各前記コアコンピュートノードから送信されたそれぞれのゲートウェイ宛てメッセージを前記複数のゲートウェイの全ての前記ゲートウェイ及び前記シーケンサに送信するステップと、
前記シーケンサにおいて受信された前記それぞれのコンピュートノード宛てメッセージ及び前記それぞれのゲートウェイ宛てメッセージに応じて、それぞれの前記順序マーク付きメッセージを前記シーケンサから前記複数のゲートウェイ及び前記複数のコアコンピュートノードに送信するステップと、
をさらに備える請求項16に記載の方法。
The gateway is a given gateway among a plurality of gateways, and the core compute node is a given core compute node among a plurality of core compute nodes, and the method includes:
sending a message addressed to a respective compute node from each of the plurality of gateways to all of the core compute nodes of the plurality of core compute nodes and the sequencer;
sending a respective gateway-destined message sent from each of the core compute nodes of the plurality of core compute nodes to all of the gateways of the plurality of gateways and to the sequencer;
transmitting each of the order-marked messages from the sequencer to the plurality of gateways and the plurality of core compute nodes in response to the respective compute node-destined messages and the respective gateway-destined messages received at the sequencer;
17. The method of claim 16 further comprising:
前記シーケンサは、複数のシーケンサのうちの所与のシーケンサであり、前記方法は、
前記複数のゲートウェイの各ゲートウェイから送信されたそれぞれのコンピュートノード宛てメッセージを前記所与のシーケンサに送信するステップと、
前記複数のコアコンピュートノードの各コアコンピュートノードから送信された前記それぞれのゲートウェイ宛てメッセージを前記所与のシーケンサに送信するステップと、
前記順序マーク付きメッセージを前記所与のシーケンサから前記複数のシーケンサのうちの他の各前記シーケンサに送信するステップと、
をさらに備える請求項19に記載の方法。
the sequencer is a given sequencer of a plurality of sequencers, and the method comprises:
sending a message destined for a respective compute node from each of the plurality of gateways to the given sequencer;
sending the respective gateway-destined messages sent from each core compute node of the plurality of core compute nodes to the given sequencer;
transmitting the sequence-marked message from the given sequencer to each other of the plurality of sequencers;
20. The method of claim 19 further comprising:
前記複数のコアコンピュートノードにおいて同じメッセージを受信するステップであって、該同じメッセージは前記所与のゲートウェイによって送信された前記それぞれのコンピュートノード宛てメッセージである、ステップと、
前記同じメッセージの受信に応じて、前記複数のコアコンピュートノードにおいて応答メッセージを生成するステップと、
前記所与のゲートウェイにおいて、前記複数のコアコンピュートノードの中から前記応答メッセージを受信するステップと、
前記同じメッセージの受信に応じて生成された前記応答メッセージのうちの所与の応答メッセージに基づいて前記所与のゲートウェイにおいて行動を実行するステップであって、前記所与の応答メッセージは、前記同じメッセージの受信に応じて生成された前記応答メッセージのうちの他の応答メッセージに相対して最初に前記所与のゲートウェイに到着するものである、ステップと、
前記所与の応答メッセージの後に前記所与のゲートウェイに到着する前記他の応答メッセージを無視するステップと、
をさらに備える請求項19に記載の方法。
receiving a same message at the plurality of core compute nodes, the same message being a message sent by the given gateway and destined for the respective compute node;
generating a response message at the plurality of core compute nodes in response to receiving the same message;
receiving the response message from among the plurality of core compute nodes at the given gateway;
performing an action at the given gateway based on a given one of the response messages generated in response to receiving the same message, the given response message being the first to arrive at the given gateway relative to other one of the response messages generated in response to receiving the same message;
ignoring the other response messages that arrive at the given gateway after the given response message;
20. The method of claim 19 further comprising:
与のコンピュートノードにおいて、前記複数のゲートウェイの中から複数のコンピュートノード宛てメッセージを受信するステップであって、該複数のコンピュートノード宛てメッセージは同じメッセージを表す、ステップと、
前記複数のコンピュートノード宛てメッセージのうちの所与のコンピュートノード宛てメッセージに基づいて前記所与のコンピュートノードにおいて行動を実行するステップであって、前記所与のコンピュートノード宛てメッセージは、前記同じメッセージを表す前記複数のコンピュートノード宛てメッセージのうちの他のコンピュートノード宛てメッセージに相対して最初に前記所与のコンピュートノードに到着するものである、ステップと、
前記所与のコンピュートノード宛てメッセージの後に前記所与のコンピュートノードに到着する前記他のコンピュートノード宛てメッセージを無視するステップと、
をさらに備える請求項19に記載の方法。
receiving, at a given compute node, a plurality of messages destined for the compute node from among the plurality of gateways, the plurality of messages destined for the compute node representing the same message;
performing an action at the given compute node based on a message destined for the given compute node among the plurality of messages destined for the given compute node, the message destined for the given compute node arriving at the given compute node first relative to other messages destined for the given compute node among the plurality of messages destined for the same message;
ignoring messages destined for the other compute nodes that arrive at the given compute node after the message destined for the given compute node;
20. The method of claim 19 further comprising:
実行される前記電子取引マッチング機能に基づいて、前記コアコンピュートノードにおいて、前記金融商品に関する取引注文をマッチングさせるステップと、
注文控え帳における前記金融商品の残持ち高を維持するステップであって、前記残持ち高は実行された前記電子取引マッチング機能によってもたらされた前記金融商品に関連する取引注文の不一致金額である、ステップと、
をさらに備える請求項16に記載の方法。
matching, at the core compute nodes, trade orders for the financial instruments based on the electronic trade matching function being performed;
maintaining a balance of said financial instrument in an order book, said balance being the discrepancy amount of trade orders related to said financial instrument resulting from said electronic trade matching function being executed;
17. The method of claim 16 further comprising:
前記ゲートウェイ、前記コアコンピュートノード及び前記シーケンサをクロックに基づいて同期させるステップをさらに備える請求項16に記載の方法。 The method of claim 16, further comprising synchronizing the gateway, the core compute node, and the sequencer based on a clock. 前記メッセージはゲートウェイメッセージであり、前記方法は、
前記ゲートウェイにおいて少なくとも1つの参加者デバイスにサービスを提供するステップと、
前記ゲートウェイにおいて着信メッセージを受信するステップと、
前記ゲートウェイにおける前記着信メッセージの受信に応じて前記ゲートウェイメッセージを前記ゲートウェイから前記シーケンサ及び前記コアコンピュートノードに送信するステップであって、前記着信メッセージは前記少なくとも1つの参加者デバイスによって発送されたものである、ステップと、
固有順序識別子を用いて前記メッセージ又はその表示をマーク付けすることによって、前記順序マーク付きメッセージを生成するステップと、
をさらに備える請求項16に記載の方法。
the message is a gateway message, and the method comprises:
providing a service to at least one participant device at the gateway;
receiving an incoming message at the gateway;
sending the gateway message from the gateway to the sequencer and the core compute node in response to receiving the incoming message at the gateway, the incoming message having been sent by the at least one participant device;
generating the sequence-marked message by marking the message or a representation thereof with a unique sequence identifier;
17. The method of claim 16 further comprising:
前記第1の直接接続、前記第2の直接接続及び前記第3の直接接続又はこれらの一部の組を、少なくとも1つのそれぞれの冗長直接接続を介して保護するステップをさらに備える請求項16に記載の方法。 The method of claim 16, further comprising protecting the first direct connection, the second direct connection, and the third direct connection, or some set thereof, via at least one respective redundant direct connection. 前記ゲートウェイは複数のゲートウェイのうちの所与のゲートウェイであり、前記コアコンピュートノードは複数のコアコンピュートノードのうちの所与のコアコンピュートノードであり、前記シーケンサは複数のシーケンサのうちの所与のシーケンサであり、前記方法は、
前記複数のゲートウェイが共有ゲートウェイネットワークを介して通信可能となるようにするステップと、
前記複数のコアコンピュートノードが共有コアコンピュートノードネットワークを介して通信可能となるようにするステップと、
前記複数のシーケンサが共有シーケンサネットワークを介して又はそれぞれの第4の直接接続を介して通信可能となるようにするステップと、
をさらに備える請求項16に記載の方法。
the gateway is a given gateway of a plurality of gateways, the core compute node is a given core compute node of a plurality of core compute nodes, and the sequencer is a given sequencer of a plurality of sequencers, and the method comprises:
enabling the plurality of gateways to communicate via a shared gateway network;
enabling the plurality of core compute nodes to communicate over a shared core compute node network;
enabling the plurality of sequencers to communicate via a shared sequencer network or via respective fourth direct connections;
17. The method of claim 16 further comprising:
前記所与のシーケンサから前記複数のシーケンサのうちの少なくとも1つの他のシーケンサに前記共有シーケンサネットワークを介してシステム状態ログを送信し、又は前記所与のシーケンサによって前記システム状態ログをデータストアに記憶するステップであって、該データストアは前記共有シーケンサネットワークを介して前記複数のシーケンサにアクセス可能である、ステップをさらに備える請求項27に記載の方法。 The method of claim 27, further comprising a step of transmitting a system status log from the given sequencer to at least one other sequencer of the plurality of sequencers via the shared sequencer network, or storing the system status log by the given sequencer in a data store, the data store being accessible to the plurality of sequencers via the shared sequencer network. 前記電子取引システムはアクティブな電子取引システムであり、前記方法は、
前記複数のシーケンサのうちの少なくとも1つの前記シーケンサがディザスタリカバリサイトと通信可能となるようにするステップであって、該ディザスタリカバリサイトはスタンバイ電子取引システムを含み、該スタンバイ電子取引システムは、前記アクティブな電子取引システムの複製であり、前記アクティブな電子取引システムが故障した場合に電子取引が継続可能となるように構成される、ステップをさらに備える請求項27に記載の方法。
the electronic trading system is an active electronic trading system, and the method comprises:
28. The method of claim 27, further comprising enabling at least one of the plurality of sequencers to communicate with a disaster recovery site, the disaster recovery site including a standby electronic trading system, the standby electronic trading system being a replica of the active electronic trading system and configured to allow electronic trading to continue if the active electronic trading system fails.
電子取引システムのシーケンサであって、一連の命令を符号化した非一時的コンピュータ可読媒体を備え、前記一連の命令は、前記シーケンサに読み込まれて実行されると、該シーケンサに、
前記電子取引システムのポイントツーポイントメッシュシステムにおいて第1の直接接続を介してゲートウェイと直接通信させ、
前記電子取引システムの前記ポイントツーポイントメッシュシステムにおいて第2の直接接続を介してコアコンピュートノードと直接通信させ、前記シーケンサは前記ゲートウェイと前記コアコンピュートノードの間に前記第1及び第2の直接接続を介して挿入され、前記第1及び第2の直接接続はそれぞれの非共有帯域幅を有し、
固有順序識別子を用いてメッセージ又はその表示をマーク付けすることによって順序マーク付きメッセージを生成させ、該メッセージは前記シーケンサによってそれぞれ前記第1又は第2の直接接続を介して受信され、前記一連の命令はさらに、前記シーケンサに、前記順序マーク付きメッセージを前記ゲートウェイ及び前記コアコンピュートノードに送信させる、シーケンサ。
1. A sequencer for an electronic trading system, comprising: a non-transitory computer readable medium encoding a set of instructions, the set of instructions, when loaded into the sequencer and executed, causing the sequencer to:
directly communicating with a gateway via a first direct connection in a point-to-point mesh system of the electronic trading system;
communicating directly with a core compute node via a second direct connection in the point-to-point mesh system of the electronic trading system, the sequencer being interposed between the gateway and the core compute node via the first and second direct connections, the first and second direct connections having respective unshared bandwidths;
A sequencer that generates an order-marked message by marking a message or a representation thereof with a unique order identifier, the message being received by the sequencer via the first or second direct connection, respectively, and the set of instructions further causes the sequencer to transmit the order-marked message to the gateway and the core compute node.
JP2023507533A 2020-08-07 2021-08-05 Electronic trading system and method based on point-to-point mesh architecture Active JP7807092B2 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US16/988,510 US11315183B2 (en) 2020-08-07 2020-08-07 Electronic trading system and method based on point-to-point mesh architecture
US16/988,491 US11328357B2 (en) 2020-08-07 2020-08-07 Sequencer bypass with transactional preprocessing in distributed system
US16/988,491 2020-08-07
US16/988,510 2020-08-07
PCT/US2021/044754 WO2022031975A1 (en) 2020-08-07 2021-08-05 Electronic trading system and method based on point-to-point mesh architecture

Publications (2)

Publication Number Publication Date
JP2023539430A JP2023539430A (en) 2023-09-14
JP7807092B2 true JP7807092B2 (en) 2026-01-27

Family

ID=77750322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023507533A Active JP7807092B2 (en) 2020-08-07 2021-08-05 Electronic trading system and method based on point-to-point mesh architecture

Country Status (4)

Country Link
EP (1) EP4193255A1 (en)
JP (1) JP7807092B2 (en)
AU (1) AU2021320315A1 (en)
WO (1) WO2022031975A1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11088959B1 (en) 2020-08-07 2021-08-10 Hyannis Port Research, Inc. Highly deterministic latency in a distributed system
US11683199B2 (en) 2020-08-07 2023-06-20 Hyannis Port Research, Inc. Distributed system with fault tolerance and self-maintenance
US11315183B2 (en) 2020-08-07 2022-04-26 Hyannis Port Research, Inc. Electronic trading system and method based on point-to-point mesh architecture
WO2024127202A1 (en) * 2022-12-12 2024-06-20 Financial & Risk Organisation Limited Pauseless end-of-interval rollover with fault tolerance

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007280394A (en) 2006-04-04 2007-10-25 Espeed Inc A system that optimizes the execution of trade orders

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10748210B2 (en) * 2016-08-09 2020-08-18 Chicago Mercantile Exchange Inc. Systems and methods for coordinating processing of scheduled instructions across multiple components
US20200034929A1 (en) * 2018-07-26 2020-01-30 Nasdaq, Inc. In-Order Processing of Transactions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007280394A (en) 2006-04-04 2007-10-25 Espeed Inc A system that optimizes the execution of trade orders

Also Published As

Publication number Publication date
JP2023539430A (en) 2023-09-14
WO2022031975A1 (en) 2022-02-10
AU2021320315A1 (en) 2023-03-09
EP4193255A1 (en) 2023-06-14

Similar Documents

Publication Publication Date Title
JP7807092B2 (en) Electronic trading system and method based on point-to-point mesh architecture
US12136125B2 (en) Method and apparatus for order entry in an electronic trading system
US8868461B2 (en) Electronic trading platform and method thereof
US10504183B2 (en) Methods, apparatus, and systems for processing data transactions
US9774462B2 (en) Methods and apparatus for requesting message gap fill requests and responding to message gap fill requests
JP2023540449A (en) Local and global quality of service shaper on admission in distributed systems
US11315183B2 (en) Electronic trading system and method based on point-to-point mesh architecture
US12231347B2 (en) Highly deterministic latency in a distributed system
US8661442B2 (en) Systems and methods for processing compound requests by computing nodes in distributed and parrallel environments by assigning commonly occuring pairs of individual requests in compound requests to a same computing node
WO2022031971A1 (en) Sequencer bypass with transactional preprocessing in distributed system
US12081365B2 (en) Distributed system with fault tolerance and self-maintenance
WO2022031970A1 (en) Distributed system with fault tolerance and self-maintenance
JP2023540448A (en) Highly deterministic latency in distributed systems
US20090313160A1 (en) Hardware accelerated exchange order routing appliance
US20230316399A1 (en) Electronic Trading System and Method based on Point-to-Point Mesh Architecture
US20130311591A1 (en) Computer system for the exchange of messages
JP2021135828A (en) Request processing system and request processing method
US20060288094A1 (en) Methods for configuring cache memory size
HK40073284A (en) System and method for managing and processing sequenced events in a distributed network
HK40073284B (en) System and method for managing and processing sequenced events in a distributed network

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240718

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20250530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250910

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: 20251209

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20260107

R150 Certificate of patent or registration of utility model

Ref document number: 7807092

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150