IP Library Granted Patent US 9,860,186
Granted Patent B1
US 9,860,186 · App. 15/433,525 · Granted Jan 2, 2018

Multiple-speed message channel of messaging system

Inventor: Lev Walkin (Santa Clara, CA)
Assignee: Machine Zone, Inc.
H04L47/622H04L43/0864H04L47/805
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 9,860,186
App. No.
15/433,525
Granted
Jan 2, 2018
Kind
B1
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for receiving from a plurality of publishers messages of a first channel of a plurality of distinct channels wherein each channel comprises an ordered plurality of messages, storing messages of the first channel in one or more first buffers according to the order, each first buffer having a respective time-to-live, for one or more connections, determining a respective sampling rate based on a data type of the first channel and a determined latency of the connection, receiving from a subscriber through a first connection a request for messages of the first channel, selecting messages in the first buffers according to the order and the sampling rate, and sending the selected messages using the first connection to the subscriber according to the order.

Claims (53)

1. A method, comprising:

storing messages of a channel of a plurality of channels in one or more buffers according to an order, wherein each buffer comprises a respective time-to-live;

for one or more connections, determining, by one or more computer processors, a respective sampling rate based on one of a data type of the channel and a determined latency of each connection;

receiving a request for messages of the channel from a subscriber through a connection of the one or more connections;

selecting messages from the one or more buffers according to the sampling rate; and

sending the selected messages to the subscriber according to the order using the connection.

2. The method of claim 1 , comprising:

receiving messages of the channel from a plurality of publishers.

3. The method of claim 2 , wherein the order comprises the order in which messages of the channel were received.

4. The method of claim 1 , wherein determining the respective sampling rate based on the data type of the channel comprises:

identifying a time-varying data field in messages of the channel;

obtaining respective data values in the time-varying data field from two or more messages of the channel; and

determining a magnitude of changes in the respective data values with respect to time to determine the respective sampling rate for each connection.

5. The method of claim 1 , wherein determining the respective sampling rate based on the data type of the channel comprises:

identifying one or more messages of the channel having a prioritized message data type, wherein sampling does not skip messages having the prioritized message data type for delivery to the subscriber.

6. The method of claim 1 , comprising:

determining the latency of the connection based on an indication of at least one of a delay and a missing delivery to the subscriber of one or more messages of the channel.

7. The method of claim 6 , wherein the indication is received from the subscriber.

8. The method of claim 1 , comprising:

determining the latency of the connection based on an indication of at least one of a delay and a missing delivery to the subscriber of one or more messages of another channel of the plurality of channels.

9. The method of claim 1 , comprising:

determining a second latency of the connection; and

adjusting the sampling rate for the connection based on the second latency.

10. The method of claim 1 , wherein messages are selected from the one or more buffers that have not expired.

11. A system, comprising:

one or more computer processors programmed to:

store messages of a channel of a plurality of channels in one or more buffers according to an order, wherein each buffer comprises a respective time-to-live;

for one or more connections, determine a respective sampling rate based on one of a data type of the channel and a determined latency of each connection;

receive a request for messages of the channel from a subscriber through a connection of the one or more connections;

select messages from the one or more buffers according to the sampling rate; and

send the selected messages to the subscriber according to the order using the connection.

12. The system of claim 11 , wherein the one or more computer processors further programmed to receive messages of the channel from a plurality of publishers.

13. The system of claim 12 , wherein the order comprises the order in which messages of the channel were received.

14. The system of claim 11 , wherein to determine the respective sampling rate based on the data type of the channel, the one or more computer processors are programmed to:

identify a time-varying data field in messages of the channel;

obtain respective data values in the time-varying data field from two or more messages of the channel; and

determine a magnitude of changes in the respective data values with respect to time to determine the respective sampling rate for each connection.

15. The system of claim 11 , wherein to determine the respective sampling rate based on the data type of the channel, the one or more computer processors are programmed to:

identify one or more messages of the channel having a prioritized message data type, wherein sampling does not skip messages having the prioritized message data type for delivery to the subscriber.

16. The system of claim 11 , wherein the one or more computer processors further programmed to:

determine the latency of the connection based on an indication of at least one of a delay and a missing delivery to the subscriber of one or more messages of the channel.

17. The system of claim 11 , wherein the one or more computer processors further programmed to:

determine the latency of the connection based on an indication of at least one of a delay and a missing delivery to the subscriber of one or more messages of another channel of the plurality of channels.

18. The system of claim 11 , wherein one or more computer processors further programmed to:

determine a second latency of the connection; and

adjust the sampling rate for the connection based on the second latency.

19. The system of claim 11 , wherein messages are selected from the one or more buffers that have not expired.

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 a channel of a plurality of channels in one or more buffers according to an order, wherein each buffer comprises a respective time-to-live;

for one or more connections, determine, by the one or more computer processors, a respective sampling rate based on one of a data type of the channel and a determined latency of each connection;

receive a request for messages of the channel from a subscriber through a connection of the one or more connections;

select messages from the one or more buffers according to the sampling rate; and

send the selected messages to the subscriber according to the order using the connection.

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 Jun 8, 2017
From: WALKIN, LEV
To: MACHINE ZONE, INC.
Reel/Frame 042647/0063 →
Continuity (1)
Continuation 15202908 · Jul 6, 2016