IP Library Granted Patent US 10,630,785
Granted Patent B2
US 10,630,785 · App. 15/817,029 · Granted Apr 21, 2020

Scalable, real-time messaging system

Inventors: Lev Walkin (Santa Clara, CA); Fredrik Erik Linder (Dublin, CA)
Assignee: SATORI WORLDWIDE, LLC
H04L67/142G06Q40/04H04L47/50H04L51/14H04L65/4084H04L67/26
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,630,785
App. No.
15/817,029
Granted
Apr 21, 2020
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, to allocate a first buffer on a first node of a plurality of nodes for storing messages associated with a channel, grant a first write request to a publisher to write one or more messages to the first buffer, and determine that the first buffer is not available for writing the one or more messages when the first buffer is full; and, in response, select a second node from the plurality of nodes based on a respective workload of nodes in the plurality of nodes, and allocate a second buffer on the second node for storing the one or more messages associated with the channel.

Claims (49)

1. A method, comprising:

allocating a first buffer on a first node of a plurality of nodes for storing messages associated with a channel;

granting a first write request to a publisher to write one or more messages to the first buffer; and

determining, by one or more computer processors, that the first buffer is not available for writing the one or more messages when the first buffer is full, and, in response:

(i) selecting a second node from the plurality of nodes based on a respective workload of nodes in the plurality of nodes; and

(ii) allocating a second buffer on the second node for storing the one or more messages associated with the channel.

2. The method of claim 1 , comprising:

determining that messages in the first buffer are not available for reading when a time-to-live for the first buffer has expired.

3. The method of claim 1 , comprising:

granting a read request to a subscriber to read the one or more messages from the second buffer before a time-to-live for the second buffer expires.

4. The method of claim 3 , wherein granting the read request to the subscriber comprises:

providing the subscriber with an identification of the second node and the second buffer.

5. The method of claim 3 , wherein the subscriber is configured to receive the one or more messages from the second buffer.

6. The method of claim 1 , comprising:

granting read requests to a plurality of subscribers to read the one or more messages from the second buffer before a time-to-live for the second buffer expires.

7. The method of claim 1 , comprising:

granting a second write request to the publisher to write e one or more messages to the second buffer.

8. The method of claim 7 , wherein granting the second write request to the publisher comprises:

providing the publisher with an identification of the second node and the second buffer.

9. The method of claim 8 , wherein the publisher sends the one or more messages to the second node for storage in the second buffer.

10. The method of claim 1 , wherein selecting the second node comprises:

identifying the second node as a least-loaded node among the nodes of the plurality of nodes.

11. A system, comprising:

one or more computer processors programmed to perform operations to:

allocate a first buffer on a first node of a plurality of nodes for storing messages associated with a channel;

grant a first write request to a publisher to write one or more messages to the first buffer; and

determine that the first buffer is not available for writing the one or more messages when the first buffer is full, and, in response:

(i) select a second node from the plurality of nodes based on a respective workload of nodes in the plurality of nodes; and

(ii) allocate a second buffer on the second node for storing the one or more messages associated with the channel.

12. The system of claim 11 , wherein the operations are further to:

determine that messages in the first buffer are not available for reading when a time-to-live for the first buffer has expired.

13. The system of claim 11 , wherein the operations are further to:

grant a read request to a subscriber to read the one or more messages from the second buffer before a time-to-live for the second buffer expires.

14. The system of claim 13 , wherein to grant the read request to the subscriber the one or more computer processors are further to:

provide the subscriber with an identification of the second node and the second buffer.

15. The system of claim 13 , wherein the subscriber is configured to receive the one or more messages from the second buffer.

16. The system of claim 11 , wherein the operations are further to:

grant read requests to a plurality of subscribers to read the one or more messages from the second buffer before a time-to-live for the second buffer expires.

17. The system of claim 11 , wherein the operations are further to:

grant a second write request to the publisher to write the one or more messages to the second buffer.

18. The system of claim 17 , wherein to grant the second write request to the publisher the one or more computer processors are further to:

provide the publisher with an identification of the second node and the second buffer.

19. The system of claim 18 , wherein the publisher sends the one or more messages to the second node for storage in the second buffer.

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:

allocate a first buffer on a first node of a plurality of nodes for storing messages associated with a channel;

grant a first write request to a publisher to write one or more messages to the first buffer; and

determine that the first buffer is not available for writing the one or more messages when the first buffer is full, and, in response:

(i) select a second node from the plurality of nodes based on a respective workload of nodes in the plurality of nodes; and

(ii) allocate a second buffer on the second node for storing the one or more messages associated with the channel.

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 Jan 9, 2018
From: MACHINE ZONE, INC.
To: SATORI WORLDWIDE, LLC
Reel/Frame 044578/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 17, 2017
From: WALKIN, LEV; LINDER, FREDRIK ERIK
To: MACHINE ZONE, INC.
Reel/Frame 044165/0942 →
Continuity (4)
Continuation 15436217 · Feb 17, 2017
Continuation 15067476 · Mar 11, 2016
Continuation 14821482 · Aug 7, 2015
Related Publication 20180097892A1 · Apr 5, 2018