IP Library Granted Patent US 10,333,879
Granted Patent B2
US 10,333,879 · App. 14/821,421 · Granted Jun 25, 2019

Scalable, real-time messaging system

Inventors: Lev Walkin (Santa Clara, CA); Fredrik Erik Linder (Dublin, CA)
Assignee: SATORI WORLDWIDE, LLC
H04L51/14H04L67/142
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,333,879
App. No.
14/821,421
Granted
Jun 25, 2019
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for receiving from a plurality of publishers a plurality of messages, each of the messages being assigned to one of a plurality of distinct channels wherein each channel comprises an ordered plurality of messages, storing each message of each of the channels in a respective buffer, each buffer having a time-to-live, during the storing, removing one or more of the buffers having respective time-to-lives that have expired, and providing messages for one or more of the channels to one or more subscribers from a plurality of the remaining buffers according to the order.

Claims (43)

1. A method comprising:

receiving one or more commands to create a buffer for a channel, wherein the buffer has a buffer time-to-live and can store a plurality of messages;

receiving the plurality of messages from a publishers, each of the messages being associated with the channel;

storing the received messages in the buffer, the buffer comprising a plurality of blocks, each block having a respective block time-to-live, wherein the buffer time-to-live is separate from the block time-to-live, wherein the block time-to live- is shorter than the buffer time-to-live, and wherein the block stores one or more of the received messages;

after storing the received messages:

removing, by the one or more computer processors, one or more of the blocks having respective block time-to-lives that have expired; and

providing messages for the channels to one or more subscribers from one or more unremoved blocks, wherein the provided messages persist in the unremoved blocks until respective block time-to-lives of the unremoved blocks expire.

2. The method of claim 1 wherein storing the received messages in the buffer comprises:

storing 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 , further comprising arranging the received messages in the buffer according to when the messages were received.

4. The method of claim 1 wherein providing messages for the channels to one or more subscribers comprises providing the messages to one or more cache nodes.

5. The method of claim 1 wherein providing messages for the channel to one or more subscribers occurs after a predetermined time period.

6. The method of claim 1 wherein the buffer corresponds to a computing process on a computer.

7. The method of claim 1 wherein the channel is qualified by a respective name space.

8. The method of claim 1 , further comprises:

removing the buffers when the buffer time-to-live for the buffer has expired.

9. A system comprising:

one or more computer processors to perform operations comprising:

receiving one or more commands to create a buffer for a channel, wherein the buffer has a buffer time-to-live and can store a plurality of messages;

receiving the plurality of messages from a publishers, each of the messages being associated with the channels;

storing the received messages in the buffer, the buffer comprising a plurality of blocks, each block having a respective block time-to-live, wherein the buffer time-to-live is separate from the block time-to-live, wherein the block time-to live- is shorter than the buffer time-to-live, and wherein the block stores one or more of the received messages;

after storing the received messages:

removing one or more of the blocks having respective block time-to-lives that have expired; and

providing messages for one of more of the channels to one or more subscribers from one or more unremoved blocks, wherein the provided messages persist in the unremoved blocks until the respective time-to-lives of the unremoved blocks expire.

10. The system of claim 9 wherein storing the received messages in the buffer comprises:

storing messages received at an earlier time in blocks having respective time-to-lives that will expire sooner than blocks used to store messages received at a later time.

11. The system of claim 9 , further comprising arranging the received messages in the buffer according to when the messages were received.

12. The system of claim 9 wherein providing messages for the channels to one or more subscribers comprises providing the messages to one or more cache nodes.

13. The system of claim 9 wherein providing messages for the channel to one or more subscribers occurs after a predetermined time period.

14. The system of claim 9 wherein the buffer corresponds to a computing process on a computer.

15. The system of claim 9 wherein the channel is qualified by a respective name space.

16. The system of claim 9 wherein the operations further comprise:

removing of the buffers when the time-to-live for the buffer has expired.

17. A non-transitory computer-readable storage medium having instructions stored thereon that when executed by one or more computer processors perform operations comprising:

receiving one or more commands to create a buffer for a channel, wherein the buffer has a buffer time-to-live and can store a plurality of messages;

receiving the plurality of messages from a publishers, each of the messages being associated with channels;

storing the received messages in the buffer, the buffer comprising a plurality of blocks, each block having a respective block time-to-live, wherein the buffer time-to-live is separate from the block time-to-live, wherein the block time-to live- is shorter than the buffer time-to-live, and wherein the block stores one or more of the received messages;

after storing the received messages:

removing, by the one or more computer processors, one or more of the blocks having respective block time-to-lives that have expired; and

providing messages for the channels to one or more subscribers from one or more unremoved blocks, wherein the provided messages persist in the unremoved blocks until the respective block time-to-lives of the non-removed blocks expire.

18. The non-transitory computer-readable storage medium of claim 17 wherein storing the received messages in the buffer comprises:

storing messages received at an earlier time in blocks having respective time-to-lives that will expire sooner than blocks used to store messages received at a later time.

19. The non-transitory computer-readable storage medium of claim 17 , further comprising arranging the received messages in the buffer according to when the messages were received.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded May 19, 2020
From: COMERICA BANK
To: SATORI WORLDWIDE, LLC
Reel/Frame 052707/0769 →
RELEASE OF SECURITY INTEREST Recorded May 19, 2020
From: MGG INVESTMENT GROUP LP, AS COLLATERAL AGENT
To: MACHINE ZONE, INC.; SATORI WORLDWIDE, LLC; COGNANT LLC
Reel/Frame 052706/0917 →
SECURITY INTEREST Recorded May 22, 2018
From: SATORI WORLDWIDE, LLC
To: COMERICA BANK
Reel/Frame 046215/0159 →
NOTICE OF SECURITY INTEREST -- PATENTS Recorded Feb 2, 2018
From: MACHINE ZONE, INC.; SATORI WORLDWIDE, LLC; COGNANT LLC
To: MGG INVESTMENT GROUP LP, AS COLLATERAL AGENT
Reel/Frame 045237/0861 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 13, 2017
From: MACHINE ZONE, INC.
To: SATORI WORLDWIDE, LLC
Reel/Frame 044428/0652 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2016
From: WALKIN, LEV; LINDER, FREDRIK ERIK
To: MACHINE ZONE, INC.
Reel/Frame 037887/0625 →
Continuity (1)
Related Publication 20170041266A1 · Feb 9, 2017