CPC H04L 67/1095 (2013.01) [H04L 67/01 (2022.05); H04L 67/142 (2013.01)] | 20 Claims |
1. A system, comprising:
a data store storing a persistent log comprising an ordered sequence of records; and
a record delivery system comprising one or more processors and one or more memories to store computer-executable instructions that, when executed, cause the one or more processors to:
provide an identifier for a first receiver session for the persistent log on behalf of a first client for a plurality of worker hosts of the first client to receive records from the persistent log according to the ordered sequence of records;
associate a cursor with the first receiver session and the persistent log, wherein the cursor indicates a pointer for a next record in the ordered sequence of records to be sent for the first receiver session;
receive, from a first worker host of the plurality of worker hosts, a first request to read from the persistent log in the first receiver session, wherein the first request specifies the identifier for the first receiver session but does not specify identifiers of individual records in the ordered sequence of records of the persistent log to read;
determine, responsive to receipt of the first request specifying the identifier for the first receiver session, a first set of one or more records according to the pointer for the next record in the ordered sequence of records indicated by the cursor for the first receiver session for which the identifier was specified in the first request;
send, to the first worker host in the first receiver session, the first set of one or more records as a response to the first request;
update the cursor for the first receiver session to move the pointer in the ordered sequence of records according to the first set of one or more records sent to the first client for the first receiver session;
receive, from a second worker host of the plurality of worker hosts of the first client in the first receiver session, a second request to read from the persistent log, wherein the second request specifies the identifier for the first receiver session but does not specify individual records in the ordered sequence of records of the persistent log to read;
determine, responsive to receipt of the second request that specifies the first receiver session identifier, a second set of one or more records that differ from the first set, according to the pointer for the next record in the ordered sequence of records indicated by the updated cursor for the first receiver session for which the identifier was specified in the second request, and wherein the second set of one or more records is positioned in the ordered sequence before or after the first set of records in the ordered sequence of records;
send, to the second worker host in the first receiver session, the second set of one or more records as a response to the second request;
update the cursor to move the pointer in the ordered sequence of records according to the second set of one or more records sent to the first client in the first receiver session; and
maintain a different cursor for a second receiver session to receive records from the persistent log according to the ordered sequence of records independent of and concurrently with the first receiver session, wherein the first receiver session and the second receiver session provide for concurrent access to the persistent log, and the different cursor for the second receiver session provides for retrieval of records to one or more other worker hosts from a different location in the ordered sequence of records of the persistent log than the cursor for the first receiver session responsive to individual ones of the one or more other worker hosts specifying an identifier of the second receiver session in a respective request without specifying individual records in the ordered sequence of records of the persistent log to retrieve.
|