US 11,915,037 B2
Systems and methods of validating commands sent from processing instances to a matching engine in a distributed processing environment
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 Jul. 30, 2021, as Appl. No. 17/390,754.
Prior Publication US 2023/0036293 A1, Feb. 2, 2023
Int. Cl. G06F 9/46 (2006.01); G06F 9/50 (2006.01); G06Q 40/04 (2012.01); G06Q 30/06 (2023.01); G06Q 10/06 (2023.01); G06F 9/54 (2006.01)
CPC G06F 9/466 (2013.01) [G06F 9/505 (2013.01); G06F 9/5044 (2013.01); G06Q 40/04 (2013.01); G06F 9/546 (2013.01); G06Q 10/06 (2013.01); G06Q 30/06 (2013.01)] 18 Claims
OG exemplary drawing
 
1. A distributed computing system comprising:
a plurality of computing devices that communicate via 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 plurality of computing devices configured to execute a matching engine and a plurality of feature processing instances, the matching engine including a sequencer and a matcher, the plurality of feature processing instances configured to communicate with the matching engine via a command message bus and the matching engine configured to communicate sequenced messages to the plurality of feature processing instances via a sequenced message bus;
the matching engine comprising instructions that, when executed by the at least one hardware processor of the first computing device, cause the at least one hardware processor of the first computing device to perform operations comprising:
storing a dual-sided data structure, with each side of the data structure containing at least one pending data transaction request;
storing a parent request data structure that includes, for each parent request, (1) associations between parent requests and data transaction requests that are children of the corresponding parent request, (2) a child sequence value, and (3) a match now sequence number;
in response to reception, via the command bus and from one of the plurality of feature processing instances, of a new child data transaction request command, which includes a sequence value, to generate a new data transaction request in connection with a parent request, comparing the sequence value included in the new child data transaction request command to the stored child sequence value to thereby validate the new child data transaction request command;
based on validation of the new child data transaction request command to generate a new data transaction request, incrementing the stored child sequence value and generating a new data transaction request that has a new order identifier that has been generated by the matching engine;
validating a match now command, which has been received via the command bus, based on comparison of a match now sequence number included in the match now command to the match now sequence number included in the parent data structure;
broadcasting, using the sequenced message bus, a message that includes the new order identifier and a parent identifier for the parent request;
wherein at least a first one of the plurality of feature processing instances comprises instructions that, when executed by at least one hardware processor, cause the at least one hardware processor to perform operations comprising:
updating, based on reception of the message that includes the new order identifier and the parent identifier for the parent request, a local child sequence value that is stored in local memory accessible by the first one of the plurality of feature processing instances; and
wherein the plurality of feature processing instances are each configured to implement respective different functionality for creating or changing data transaction requests that are associated with the parent request.