Data request multiplexing
First Claim
Patent Images
1. A method, comprising:
- receiving a first request for a data item from a first entity;
tracking an identifier of the first entity in association with data of the first request, wherein the tracking the identifier of the first entity in association with data of the first request comprises adding the first entity identifier to a to an entity-to-request identifier map;
receiving a second request for the data item from a second entity;
determining that the first request for the data item is pending, and in response, multiplexing a second request for the data item, comprising tracking the second entity in association with data of the second request;
sending a downstream request to a data providing service for the data item;
receiving, from the data providing service, a response to the downstream request;
de-multiplexing the response, comprising returning a first instance of the response to the first entity based on the tracking the identifier of the first entity in association with the data of the first request, and returning a second instance of the response to the second entity based on the tracking the identifier of the second entity in association with the data of the second request; and
determining whether a data item identifier representing the data item is already in a pending data item request list, and if not, adding the data item identifier representing the data item to the pending data item request list;
wherein the multiplexing the second request for the data item comprises determining that an instance of the data item identifier representing the data item is already in the pending data item request list.
1 Assignment
0 Petitions
Accused Products
Abstract
The described technology is generally directed towards combining (multiplexing) two or more pending data requests for the same data item into a single request that is sent to a data providing entity such as a back-end data service. Described is maintaining a mapping of the requests to requesting entities so that a single response to a multiplexed request having data for a requested data item may be re-associated (de-multiplexed) to each requesting entity that requested that data item. Also described is batching a plurality of requests, which may include one or more multiplexed requests, into a batch request sent to a data providing entity.
77 Citations
11 Claims
-
1. A method, comprising:
-
receiving a first request for a data item from a first entity; tracking an identifier of the first entity in association with data of the first request, wherein the tracking the identifier of the first entity in association with data of the first request comprises adding the first entity identifier to a to an entity-to-request identifier map; receiving a second request for the data item from a second entity; determining that the first request for the data item is pending, and in response, multiplexing a second request for the data item, comprising tracking the second entity in association with data of the second request; sending a downstream request to a data providing service for the data item; receiving, from the data providing service, a response to the downstream request; de-multiplexing the response, comprising returning a first instance of the response to the first entity based on the tracking the identifier of the first entity in association with the data of the first request, and returning a second instance of the response to the second entity based on the tracking the identifier of the second entity in association with the data of the second request; and determining whether a data item identifier representing the data item is already in a pending data item request list, and if not, adding the data item identifier representing the data item to the pending data item request list; wherein the multiplexing the second request for the data item comprises determining that an instance of the data item identifier representing the data item is already in the pending data item request list. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system comprising:
-
a request handling entity that receives requests for data items from requesting entities; a request manager of the request handling entity, the request manager including; a request multiplexer that that maintains a set of zero or more pending requests, and for each request for a data item, associates that data item request with its requesting entity in a map, and evaluates the set of pending data item requests to not request that data item more than once from a data-providing entity when another request for that data item is pending; and a request de-multiplexer that de-multiplexes responses from the data-providing entity, including for each data item received in each response, to access the map to re-associate that data item with each requesting entity that requested the data item for returning in a response to that requesting entity; wherein a data item is requested as part of a batch request from a requesting entity; wherein the request manager further comprises a batching process coupled to the request multiplexer, the batching process configured to combine a plurality of requests for data items from the request multiplexer into a batch request to the data-providing entity; wherein the request multiplexer considers another request for a data item to not be pending if an already pending request for that data item has been pending too long. - View Dependent Claims (9, 10)
-
-
11. One or more machine-readable storage media having machine-executable instructions, which when executed perform operations, the operations comprising:
-
receiving a first request for a first data item from a first requestor; maintaining a mapping that associates the first requestor with the first request; determining for the first request whether another request for the first data item is already pending, and if not, adding an identifier of the first data item to a pending set and making a single request for the first data item to a data providing entity; and
if so, awaiting a response to the other request for the first data item, wherein the making the single request for the first data item comprises adding an identifier of the first data item to a batch request, and sending the batch request to the data-providing entity;receiving a second request for the first data item from a second requestor; maintaining a mapping that associates the second requestor with the second request; determining for the second request that a request for the first data item is already pending, and awaiting a response to the other request for the first data item; receiving response data corresponding to the single request for the first data item; accessing the mapping to return the response data received for the first data item in a response to the first request from the first requestor; accessing the mapping to return the response data received for the first data item in a response to the second request from the second requestor; breaking the request for the first data item into a plurality of sub-requests; and assembling responses to the sub-requests into the first data item.
-
Specification