Method and apparatus for low latency data distribution
DCFirst Claim
Patent Images
1. A method for data distribution, the method comprising:
- maintaining a plurality of data records corresponding to a plurality of items, a data consumer being subscribed to information about the items, the records being indicative of a plurality of locations reserved for data about the items in a shared memory, the shared memory being shared between the data producer and the data consumer;
receiving a plurality of events corresponding to the items; and
adaptively distributing data representative of the events to the subscribed data consumer by (1) determining a plurality of locations in the shared memory for writing the event data based on the data records, and (2) performing a plurality of direct memory access (DMA) write operations for the event data to the shared memory at the determined locations to provide updates about the items without participation from any processing resources in the data consumer;
wherein the adaptively distributing step is performed by a processor.
4 Assignments
Litigations
1 Petition
Accused Products
Abstract
Various techniques are disclosed for distributing data, particularly real-time data such as financial market data, to data consumers at low latency. Exemplary embodiments include embodiments that employ adaptive data distribution techniques and embodiments that employ a multi-class distribution engine.
268 Citations
99 Claims
-
1. A method for data distribution, the method comprising:
-
maintaining a plurality of data records corresponding to a plurality of items, a data consumer being subscribed to information about the items, the records being indicative of a plurality of locations reserved for data about the items in a shared memory, the shared memory being shared between the data producer and the data consumer; receiving a plurality of events corresponding to the items; and adaptively distributing data representative of the events to the subscribed data consumer by (1) determining a plurality of locations in the shared memory for writing the event data based on the data records, and (2) performing a plurality of direct memory access (DMA) write operations for the event data to the shared memory at the determined locations to provide updates about the items without participation from any processing resources in the data consumer; wherein the adaptively distributing step is performed by a processor. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. An apparatus for data distribution comprising:
-
a processor; and a memory; wherein the processor is configured to; maintain a plurality of data records corresponding to a plurality of items in the memory, a data consumer being subscribed to information about the items, the records being indicative of a plurality of locations reserved for data about the items in a shared memory, the shared memory being shared between the data producer and the data consumer; receive a plurality of events corresponding to the items; and adaptively distribute data representative of the events to the subscribed data consumer, wherein as part of the adaptive distribution the processor is configured to (1) determine a plurality of locations in the shared memory for writing the event data based on the data records, and (2) perform a plurality of direct memory access (DMA) write operations for the event data to the shared memory at the determined locations to provide updates about the items without participation from any processing resources in the data consumer.
-
-
24. A method for data distribution comprising:
-
generating a plurality of unique data streams for a plurality of data consumers, each unique data stream corresponding to a data consumer such that the unique data streams correspond to a plurality of data consumers in the aggregate, wherein each unique data stream comprises a plurality of update events for a plurality of items, the update events in each unique data stream relating to only a set of items that are of interest to that unique data stream'"'"'s corresponding data consumer; and distributing the unique data streams to their associated data consumers via a plurality of direct memory access (DMA) write operations to a plurality of shared memories in the data consumers without processing feedback information from the data consumers; and wherein the method steps are performed by a processor. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41)
-
-
42. An apparatus for data distribution comprising:
a processor configured to (1) generate a plurality of unique data streams for a plurality of data consumers, each unique data stream corresponding to a data consumer such that the unique data streams correspond to a plurality of data consumers in the aggregate, wherein each unique data stream comprises a plurality of update events for a plurality of items, the update events in each unique data stream relating to only a set of items that are of interest to that unique data stream'"'"'s corresponding data consumer, and (2) distribute the unique data streams to their associated data consumers via a plurality of direct memory access (DMA) write operations to a plurality of shared memories in the data consumers without processing feedback information from the data consumers.
-
43. A method for data distribution, the method comprising:
-
maintaining a plurality of data records corresponding to a plurality of items for which event data is to be distributed to a plurality of data consumers on a metered basis, the records identifying the subscribed data consumers for each item and metering data for each subscribed data consumer for each item such that the records support differing metering rates for a plurality of same items with respect to a plurality of different data consumers and differing metering rates for a plurality of different items with respect to a plurality of same data consumers; receiving a plurality of events corresponding to the items; and performing a metered distribution of data relating to the received events to the data consumers based on the data records such that the data distribution is metered on a per-data consumer/per item basis in accordance with the metering data in the data records that are applicable to the items corresponding to the received events; and wherein the performing step is performed by a processor. - View Dependent Claims (44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61)
-
-
62. An apparatus for data distribution comprising:
-
a processor; and a memory; wherein the processor is configured to; maintain a plurality of data records in the memory, the data records corresponding to a plurality of items for which event data is to be distributed to a plurality of data consumers on a metered basis, the records identifying the subscribed data consumers for each item and metering data for each subscribed data consumer for each item such that the records support differing metering rates for a plurality of same items with respect to a plurality of different data consumers and differing metering rates for a plurality of different items with respect to a plurality of same data consumers; receive a plurality of events corresponding to the items; and perform a metered distribution of data relating to the received events to the data consumers based on the data records such that the data distribution is metered on a per-data consumer/per-item basis in accordance with the metering data in the data records that are applicable to the items corresponding to the received events.
-
-
63. An apparatus for distributing data, the apparatus comprising:
a multi-class distribution engine (MDE), the MDE configured to distribute a plurality of events corresponding to a plurality of items and belonging to a plurality of classes on a class-specific basis from a data producer to a plurality of data consumers according to at least two members of the group consisting of (1) a critical data distribution technique wherein all events are distributed to a data consumer for reading thereby, (2) an adaptive data distribution technique wherein (i) all events are distributed to a data consumer for reading thereby if no congestion exists with respect to the data producer and that data consumer, and (ii) conflated events are distributed to a data consumer for reading thereby if congestion exists with respect to the data producer and that data consumer, and (3) a metered data distribution technique wherein events are distributed to the data consumers for reading thereby in accordance with metering policies that vary on a per data consumer/per item basis. - View Dependent Claims (64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80)
-
81. A method for distributing data comprising:
-
receiving a plurality of events for distribution to a plurality of data consumers, the events corresponding to a plurality of items; determining a class for each received event from among a plurality of classes; selecting a distribution technique for each received event from among a plurality of distribution techniques based on the class determined therefor, the plurality of distribution techniques comprising at least two members of the group consisting of (1) a critical data distribution technique wherein all events are distributed to a data consumer for reading thereby, (2) an adaptive data distribution technique wherein (i) all events are distributed to a data consumer for reading thereby if no congestion exists with respect to the data producer and that data consumer, and (ii) conflated events are distributed to a data consumer for reading thereby if congestion exists with respect to the data producer and that data consumer, and (3) a metered data distribution technique wherein events are distributed to the data consumers for reading thereby in accordance with metering policies that vary on a per data consumer/per item basis; and distributing the events on a class-specific basis to the data consumers according to the selected distribution technique for each event; and wherein the method steps are performed by a multi-class distribution engine (MDE).
-
-
82. A method for data consumption comprising:
-
receiving data in a shared memory via DMA write operations from a data producer; maintaining a table that identifies locations in the shared memory data where a plurality of items can be found; receiving a read request corresponding to an item; accessing the maintained table in response to the received read request to determine the location where data for the item corresponding to the read request can be found; reading data from the shared memory at the location determined in response to the accessing step; and performing a coherency checking operation on the read data; wherein the method steps are performed by a processor. - View Dependent Claims (83, 84, 85, 86, 87, 88, 89, 90, 91, 92)
-
-
93. An apparatus comprising:
a processor configured to (1) receive data in a shared memory via DMA write operations from a data producer, (2) maintain a table that identifies locations in the shared memory data where a plurality of items can be found, (3) receive a read request corresponding to an item, (4) access the maintained table in response to the received read request to determine the location where data for the item corresponding to the read request can be found, (5) read data from the shared memory at the location determined in response to the access operation, and (6) perform a coherency checking operation on the read data. - View Dependent Claims (94, 95)
-
96. A method for data distribution comprising:
-
receiving a plurality of events for distribution to a plurality of data consumers; determining a class for the events from among a plurality of classes; selectively delivering the events to a first queue or a second queue based on the determined classes for the events; a metering engine reading events from the first queue; the metering engine performing a metering function on the events read from the first queue to control a metered transmission of the events read from the first queue; the metering engine delivering metered events to a third queue in accordance with the metering function; a fanout engine downstream from the metering engine reading events from the second queue and metered events from the third queue; the fanout engine distributing the read events from the second and third queues to the data consumers such that the events in the second queue are distributed to the data consumers on a non-metered basis and the events in the third queue are distributed to the data consumers on the metered basis. - View Dependent Claims (97, 98, 99)
-
Specification