IP Library Granted Patent US 11,243,826
Granted Patent B2
US 11,243,826 · App. 17/070,390 · Granted Feb 8, 2022

Publish-subscribe framework for application execution

Inventors: Robert Adolfsson (Vega, SE); Daniel Hilton (Malmo, SE)
Assignee: NASDAQ TECHNOLOGY AB
G06F9/546G06F9/544
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,243,826
App. No.
17/070,390
Granted
Feb 8, 2022
Kind
B2
Abstract

The described technology relates to a publish-subscribe message framework in which an application, decomposed to a plurality of processing stages, is run by executing respective processing stages of the application asynchronously and simultaneously with each other. Communications between the respective processing stages may exclusively be in accordance with the publish-subscribe execution model. The described publish-subscribe framework provides for processing stages to be executed in a multi-process and/or multi-threaded manner while also enabling the distribution of the processing stages to respective processing resources in a multi-processor/multi-core processing environment. An example electronic exchange application and a corresponding example exchange gateway application are described.

Claims (38)

1. An electronic exchange system, comprising:

a communication infrastructure; and

a processing system comprising at least one memory and a plurality of processing resources coupled by the communication infrastructure,

wherein the processing system is configured to perform operations comprising:

executing as a thread, on each of the processing resources, at least one pipeline processing stage of a plurality of pipeline stages of a processing pipeline of an application, wherein communication between respective pipeline stages of the plurality of pipeline stages occur via publish-subscribe messages;

in response to a received data message, creating a session for processing the data message in the application;

in response to creating the session:

registering, in the session, each of the plurality of pipeline stages of the processing pipeline of the application as a publisher and/or subscriber; and

completing processing of the data message in the application by processing the data message in each of the plurality of the pipeline stages of the processing pipeline of the application to generate an output message, wherein communication between the plurality of pipeline stages during said processing the data message occurs according to said publisher and/or subscriber registrations in the session, and wherein said processing the data message includes causing messages to be exchanged between respective pairs of publishers and subscribers among the associated publishers and the associated subscribers by storing one of the messages to an area configured as a lock free queue in the at least one memory, and providing a pointer to the area to at least one of the subscribers; and

transmitting the output message to a second application.

2. The electronic exchange system according to claim 1 , wherein the processing system is further configured to:

instantiate a control session;

subscribe each of the pipeline stages to the control session; and

provide for signaling one or more predetermined events to the plurality of pipeline stages by publishing to the control session.

3. The electronic exchange system according to claim 1 , wherein the processing system is further configured to:

receive a program code; and

decompose the program code to obtain the plurality of pipeline stages, each comprising an ingress message interface and an egress message interface.

4. The electronic exchange system according to claim 3 , wherein the processing system is further configured to perform said decomposing in accordance with one or more configuration parameters.

5. The electronic exchange system according to claim 3 , wherein the processing system is further configured to determine an arrangement of the plurality of pipeline stages to the plurality of processing resources.

6. The electronic exchange system according to claim 5 , wherein the processing system is further configured to determine the arrangement based on the ingress message interface and the egress message interface of the pipeline stages.

7. The electronic exchange system according to claim 1 , wherein the processing system is further configured to perform said processing the data message by accessing a matching engine with respect to the data message.

8. The electronic exchange system according to claim 7 , wherein the processing system is further configured to perform said processing the data message in a plurality of the pipeline stages by said accessing the matching engine in parallel for said trade request and another trade request.

9. The electronic exchange system according to claim 8 , wherein the processing system is further configured to dynamically determine a number of instances of a pipeline stage for said accessing the matching engine.

10. A method of processing a data message on an electronic exchange system having a communication infrastructure and a processing system comprising a plurality of processing resources coupled by the communication infrastructure, the method comprising:

executing as a thread, on each of the processing resources, at least one pipeline processing stage of a plurality of pipeline stages of a processing pipeline of an application, wherein communication between respective pipeline stages of the plurality of pipeline stages occur via publish-subscribe messages;

providing for communication between any two of the plurality of pipeline stages via publish-subscribe messages;

in response to a received data message, creating a session for processing the data message in the application;

in response to creating the session:

registering, in the session, each of the plurality of pipeline stages of the processing pipeline of the application as a publisher and/or subscriber; and

completing processing of the data message in the application by processing the data message in each of the plurality of the pipeline stages of the processing pipeline of the application to generate an output message, wherein communication between the plurality of pipeline stages during said processing the data message occurs according to said publisher and/or subscriber registrations in the session, and wherein said processing the data message includes causing messages to be exchanged between respective pairs of publishers and subscribers among the associated publishers and the associated subscribers by storing one of the messages to an area configured as a lock free queue in a memory, and providing a pointer to the area to at least one of the subscribers; and

transmitting the output message to a second application.

11. A non-transitory computer-readable storage medium storing instructions which, when executed by a processing system comprising a plurality of processing resources coupled by a communication infrastructure, causes the processing system of an electronic exchange system to perform operations comprising:

executing as a thread, on each of the processing resources, at least one pipeline processing stage of a plurality of pipeline stages of a processing pipeline of an application, wherein communication between respective pipeline stages of the plurality of pipeline stages occurring via publish-subscribe messages;

in response to a received data message, creating a session for processing the data message in the application;

in response to creating the session:

registering, in the session, each of the plurality of pipeline stages of the processing pipeline of the application as a publisher and/or subscriber; and

completing processing of the data message in the application by processing the data message in each of the plurality of the pipeline stages of the processing pipeline of the application to generate an output message, wherein communication between the plurality of pipeline stages during said processing the data message occurs according to said publisher and/or subscriber registrations in the session, and wherein said processing the data message includes causing messages to be exchanged between respective pairs of publishers and subscribers among the associated publishers and the associated subscribers by storing one of the messages to an area configured as a lock free queue in a memory, and providing a pointer to the area to at least one of the subscribers; and

transmitting the output message to a second application.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 14, 2020
From: ADOLFSSON, ROBERT; HILTON, DANIEL KAREL THOMAS
To: NASDAQ TECHNOLOGY AB
Reel/Frame 054083/0119 →
Continuity (3)
Continuation 16394109 · Apr 25, 2019
Provisional Application 62663422 · Apr 27, 2018
Related Publication 20210049058A1 · Feb 18, 2021
Cited By (1)
US 12,462,304