Scalable, real-time messaging system
Abstract
Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for storing messages of each of a plurality of channels in one or more respective buffers, wherein each buffer comprises a respective buffer time-to-live, wherein each buffer comprises a plurality of blocks, wherein each block of the plurality of blocks stores one or more of the messages, wherein each block comprises a respective block time-to-live, and wherein the block time-to-live is different than the buffer time-to-live. The method may also include the action of sending, by the one or more computer processors, the messages for a channel of the plurality of channels retrieved from one or more blocks that have not expired.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A method, comprising:
storing, by One or more computer processors, messages of each of a plurality of channels in one or more respective buffers,
wherein each buffer comprises a respective buffer time-to-live, wherein each buffer comprises a plurality of blocks, wherein each block of the plurality of blocks stores one or more of the messages, wherein each block comprises a respective block time-to-live, and wherein the block time-to-live is different than the buffer time-to-live; and
sending, by the one or more computer processors, the messages for a channel of the plurality of channels retrieved from one or more blocks that have not expired.
2 . The method of claim 1 , wherein storing the messages of each of the plurality of channels in the one or more respective buffers comprises:
storing the messages received at an earlier time in blocks having respective block time-to-lives that will expire sooner than blocks used to store messages received at a later time.
3 . The method of claim 1 , wherein the block time-to-live is shorter than the buffer time-to-live.
4 . The method of claim 1 , comprising removing one or more of the blocks having respective block time-to-lives that have expired.
5 . The method of claim 4 , wherein the retrieved messages persist in unremoved blocks until respective block time-to-lives of the unremoved blocks expire.
6 . The method of claim 1 , wherein each channel comprises an ordered plurality of messages.
7 . The method of claim 1 , comprising:
arranging the stored messages in the buffer according to when the messages were received.
8 . The method of claim 1 , comprising:
removing the buffers when the buffer time-to-live tear the buffer has expired.
9 . The method of claim 1 , comprising sending the messages for the channel to one or more subscriber clients subscribed to the channel after a predetermined time period.
10 . The method of claim 1 , wherein the messages are received from one or more publishers, and wherein each of the messages is associated with a respective channel of the plurality of channels.
11 . A system, comprising:
one or more computer processors programmed to perform operations to:
store messages of each of a plurality of channels in one or more respective buffers,
wherein each buffer comprises a respective buffer time-to-live, wherein each buffer comprises a plurality of blocks, wherein each block of the plurality of blocks stores one or more of the messages, wherein each block comprises a respective block time-to-live, and wherein the block time-to-live is different than the buffer time-to-live; and
send the messages for a channel of the plurality of channels retrieved from one or more blocks that have not expired.
12 . The system of claim 11 , wherein to store the messages of each of the plurality of channels in the one or more respective buffers the one or more computer processors are further to:
store the messages received at an earlier time in blocks having respective block time-to-lives that will expire sooner than blocks used to store messages received at a later time.
13 . The system of claim 11 , wherein the block time-to-live is shorter than the buffer time-to-live.
14 . The system of claim 11 , wherein the operations are further to:
remove one or more of the blocks having respective block time-to-lives that have expired.
15 . The system of claim 14 , wherein the retrieved messages persist in unremoved blocks until respective block time-to-lives of the unremoved blocks expire.
16 . The system of claim 11 , wherein each channel comprises an ordered plurality of messages.
17 . The system of claim 11 , wherein the operations are further to:
arrange the stored messages in the buffer according to when the messages were received.
18 . The system of claim 11 , wherein the operations are further to:
remove the buffers when the buffer time-to-live for the buffer has expired.
19 . The system of claim 11 , wherein the one or more computer processors are further to send the messages for the channel to one or more subscriber clients subscribed to the channel after a predetermined time period.
20 . A non-transitory computer-readable medium having instructions stored thereon that, when executed by one or more computer processors, cause the one or more computer processors to:
store messages of each of a plurality of channels in one or more respective buffers,
wherein each buffer comprises a respective buffer time-to-live, wherein each buffer comprises a plurality of blocks, wherein each block of the plurality of blocks stores one or more of the messages, wherein each block comprises a respective block time-to-live, and wherein the block time-to-live is different than the buffer time-to-live; and
send the messages for a channel of the plurality of channels retrieved from one or more blocks that have not expired.Join the waitlist — get patent alerts
Track US2019268293A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.