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.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.