US 12,288,079 B2
Systems and methods of distributed processing
Kyle Prem, Croton-on-Hudson, NY (US); John Vaccaro, New York, NY (US); and Hemant Thombre, Warren, NJ (US)
Assigned to NASDAQ, INC., New York, NY (US)
Filed by NASDAQ, INC., New York, NY (US)
Filed on Dec. 15, 2023, as Appl. No. 18/542,035.
Application 18/542,035 is a continuation of application No. 17/390,781, filed on Jul. 30, 2021, granted, now 11,915,011.
Prior Publication US 2024/0111547 A1, Apr. 4, 2024
Int. Cl. G06F 15/177 (2006.01); G06F 9/00 (2018.01); G06F 9/38 (2018.01); G06F 9/4401 (2018.01); G06F 9/46 (2006.01); G06F 9/50 (2006.01)
CPC G06F 9/4418 (2013.01) [G06F 9/3836 (2013.01); G06F 9/466 (2013.01); G06F 9/5044 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A distributed computer system comprising:
a plurality of computing devices that communicate by using an electronic data network, the plurality of computing devices including at least a first computing device, each of the plurality of computing devices including at least one hardware processor;
the first computing device configured to execute a matching engine, which includes a sequencer that sequences messages;
the plurality of computing devices configured to execute, across different ones of the plurality of computing devices, a plurality of processing instances including at least a first processing instance;
the matching engine comprising instructions that cause the at least one hardware processor of the first computing device to perform operations comprising:
maintaining, in local memory that is accessible to the matching engine, a data store for parent request data that includes parent identifiers for generated parent requests,
maintaining, in local memory that is accessible to the matching engine, a dual-sided data structure that includes pending data transaction requests, with each side of the data structure containing at least one pending data transaction request, wherein some pending data transactions are associated with parent identifiers and some pending data transactions are not associated with parent identifiers,
based on reception of a command for a new parent request, atomically performing operations at least (a)-(b):
(a) generating a parent identifier for the new parent request and adding the generated parent identifier to the data store for parent requests data, and
(b) generating a new parent message that is broadcast, via a sequenced message bus, the new parent message including the parent identifier, wherein the operations that are atomically performed that include at least (a) and (b) does not also include performing match processing;
the first processing instance comprising instructions that cause the at least one hardware processor of the plurality of computing devices to perform operations comprising: based on processing the new parent message, generating and transmitting a new child data transaction request command to the matching engine, the new child data transaction request command including the parent identifier, a quantity value, and a match value; and
the matching engine comprising further instructions that cause the at least one hardware processor of the first computing device to perform operations comprising:
based on reception of the new child data transaction request command that includes the parent identifier, a quantity value, and a match value, performing operations that include at least (i)-(iii):
(i) generating a data transaction request identifier for a new data transaction request that is associated with the new parent request,
(ii) transmitting, via the sequenced message bus, an acceptance message for the new data transaction request that includes the data transaction request identifier and the parent identifier, and
(iii) performing, based on the dual-sided data structure, data transaction request processing for the new data transaction request that is associated with the parent identifier.