CPC G06Q 40/04 (2013.01) [G06F 9/542 (2013.01)] | 21 Claims |
1. A system comprising:
a first host server including at least one first processor as a first interface processor, a second interface processor, a third interface processor and a first queue manager; and
a first sequencer including at least one second processor configured to control:
receiving, on a command multicast address, a command indicating an order instruction related to a parent order from one of the first, second and third interface processors;
performing order management processing, to determine an order state of the parent order and update the order state of the parent order to a current order state of the parent order, based on the order instruction, by applying the order instruction to a state machine of the first sequencer indicating an order history for the parent order;
generating at least one event based on the order instruction and the current order state of the parent order,
in which each of the at least one event includes (i) a header indicating a global sequence number corresponding to a time when the command is received at the first sequencer, a topic identifier indicating a publisher of the command and a topic sequence number for the topic identifier, and (ii) a payload indicating at least a portion of the order instruction;
multicasting, on an event multicast address, the at least one event to the first queue manager, a second queue manager of a second host server and a second sequencer;
wherein the first queue manager is configured to control:
receiving the at least one event from the first sequencer; and
adding the at least one event to a first queue of a memory of the first host server;
wherein each of the first, second and third interface processors is configured to control:
acquiring the at least one event from the first queue, and
automatically in response to acquiring the at least one event from the first queue,
determining from the at least one event a next action, in which the next action is at least one of (i) transmitting, on the command multicast address, another command indicating another order instruction related to the parent order to the first sequencer, (ii) transmitting, over a communication network, a message to execute a trade related to the parent order to a remote exchange computing device, (iii) transmitting, over the communication network, a trade confirmation to a client computing device, or (iv) updating a memory of a given interface processor such that information related to the parent order stored in the memory of the given interface processor reflects the current order state of the parent order at the state machine of the first sequencer;
wherein the first sequencer is configured to control:
(A) automatically when a first given order instruction indicated by a first given command, received on the command multicast address, is to place an order for a first portion of a given first parent order of a given client, performing order management processing with the state machine to update an order state of the given first parent order to a current order state of the given first parent order based on the first given command;
(B) automatically when a second given order instruction indicated by a single second given command, received on the command multicast address, indicates a trade of a second portion of the given first parent order of the given client has been completed,
performing order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order, based on the single second given command,
generating a first event as a client order trade confirm that indicates completion of a trade of the second portion of the given first parent order on the remote exchange computing device and a second event as an exchange order trade confirm that indicates completion of the trade of the second portion of the given first parent order on the remote exchange computing device, and
multicasting, on the event multicast address, the first event and the second event to the first queue manager and the second queue manager; and
(C) automatically when a given third order instruction indicated by a third command, received on the command multicast address, indicates a request to change an order state of the given first parent order,
performing the order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order based on the third command, and determine whether the given third order instruction is in conflict with the current order state of the given first parent order,
in response to determining that the request to change the order state is in conflict with the current order state of the given first parent order, generating a third event as a client order indicating rejection of the request to change the order state of the given first parent order, such that the third event will be ignored by each of the first, second and third interface processors, and
multicasting, on the event multicast address, the third event to the first queue manager and the second queue manager;
wherein the first queue manager is configured to control:
receiving the first, second and third events from the first sequencer; and
adding the first, second and third events to the first queue;
wherein the first interface processor is configured to control:
acquiring the second event from the first queue and transmitting a command response, over the communication network, to the client computing device confirming execution of the second portion of the given first parent order; and
wherein the third interface processor is configured to control:
acquiring the first event from the first queue and transmitting a command over the communication network to the remote exchange computing device to execute a trade of the second portion of the given first parent order.
|