IP Library Granted Patent US 10,817,334
Granted Patent B1
US 10,817,334 · App. 15/921,419 · Granted Oct 27, 2020

Real-time analysis of data streaming objects for distributed stream processing

Inventors: Cong Wang (San Francisco, CA); Maosong Fu (San Francisco, CA); Karthik Ramasamy (San Francisco, CA)
Assignee: Twitter, Inc.
G06F9/4881G06F9/5016G06F16/24568
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,817,334
App. No.
15/921,419
Granted
Oct 27, 2020
Kind
B1
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for data stream processing. One method performed by a stream manager in a group of containers including streaming processes and stream managers includes receiving a first data streaming object of the data streaming objects from a first component in the group of containers; determining whether to process the first data streaming object; in response to determining to process the first data streaming object processing the first data streaming object and routing the first data streaming object; and in response to determining not to process the first data streaming object, routing the first data streaming object.

Claims (54)

1. A data stream processing system for executing a stream processing job having a logical topology on a cluster that includes a plurality of cluster nodes, the data stream processing system comprising:

a scheduler that is configured to generate a group of containers for the stream processing job based on the logical topology, wherein:

the group of containers includes a first container and one or more second containers,

the first container includes a topology master that manages the execution of the logical topology on the cluster, wherein the logical topology comprises one or more spouts and one or more bolts, wherein each spout represents a source of a respective data stream that provides data streaming objects of the respective data stream to one or more bolts, and wherein each bolt represents operations comprising processing one or more data streaming objects,

each second container of the one or more second containers includes a stream manager and one or more streaming processes, wherein each streaming process corresponds to a respective spout or bolt of the logical topology,

the one or more streaming processes communicate data streaming objects with each other using stream managers, and

the stream manager of each second container is configured to:

receive a first data streaming object from a first component in the group of containers;

determine if the first component is a streaming process of the same local second container or if the first component is the stream manager of a non-local second container in the group of containers;

in response to determining that the first component is a streaming process of the same local second container, process the first data streaming object and route the processed first data streaming object to one or more of a non-local second container in the group of containers or a different streaming process of the same local second container; and

in response to determining that the first component is the stream manager of a non-local second container in the group of containers, route the first data streaming object, without processing the first data streaming object, to a streaming process of the same local container.

2. The data stream processing system of claim 1 , wherein processing the first data streaming object comprises modifying one or more fields of the first data streaming object in place.

3. The data stream processing system of claim 1 , wherein processing the first data streaming object and routing the first data streaming object in response to determining to process the first data streaming object comprises:

deserializing the first data streaming object to generate a deserialized object;

processing the deserialized object to generate a processed object;

serializing the processed object to generate a serialized objet; and

routing the serialized object.

4. The data stream processing system of claim 3 , wherein deserializing the first data streaming object comprises accessing a deserialization resource in a memory pool accessible by the stream manager and deserializing the first data streaming object using the deserialization resource.

5. The data stream processing system of claim 3 , wherein serializing the processed object comprises accessing a serialization resource in a memory pool accessible by the stream manager and serializing the processed object using the serialization resource.

6. The data stream processing system of claim 1 , wherein routing the first data streaming object to a non-local second container in the group of containers comprises routing the first data streaming object to the stream manager of the non-local second container.

7. A method performed by a stream manager of a particular container in a group of containers that each include one or more streaming processes and a stream manager, wherein:

the group of containers is configured to execute a stream processing job having a logical topology that comprises one or more spouts and one or more bolts, wherein each spout represents a source of a respective data stream that provides data streaming objects of the respective data stream to one or more bolts, and each bolt represents operations comprising processing one or more data streaming objects, and

each streaming process corresponds to a respective spout or bolt of the logical topology, the method comprising:

receiving a first data streaming object from a first component in the group of containers;

determining if the first component is a streaming process of the same local container or if the first component is the stream manager of a non-local container in the group of containers;

in response to determining that the first component is a streaming process of the same local container, processing the first data streaming object and routing the processed first data streaming object to one or more of a non-local container in the group of containers or a different streaming process of the same local container; and

in response to determining that the first component is the stream manager of a non-local container in the group of containers, routing the first data streaming object, without processing the first data streaming object, to a streaming process of the same local container.

8. The method of claim 7 , wherein processing the first data streaming object comprises modifying one or more fields of the first data streaming object in place.

9. The method of claim 7 , wherein processing the first data streaming object and routing the first data streaming object in response to determining to process the first data streaming object comprises:

deserializing the first data streaming object to generate a deserialized object;

processing the deserialized object to generate a processed object;

serializing the processed object to generate a serialized objet; and

routing the serialized object.

10. The method of claim 9 , wherein deserializing the first data streaming object comprises accessing a deserialization resource in a memory pool accessible by the stream manager and deserializing the first data streaming object using the deserialization resource.

11. The method of claim 9 , wherein serializing the processed object comprises accessing a serialization resource in a memory pool accessible by the stream manager and serializing the processed object using the serialization resource.

12. The method of claim 7 , wherein routing the first data streaming object to a non-local container in the group of containers comprises routing the first data streaming object to the stream manager of the non-local container.

13. The method of claim 7 , wherein the group of containers is a group of second containers, wherein each second container in the group of second containers is communicatively linked to a first container, and wherein the first container includes a topology master that manages the execution of the logical topology.

14. One or more non-transitory computer storage media encoded with computer program instructions that when executed by one or more computers cause the one or more computers to perform operations comprising:

receiving, at a stream manager of a particular container in a group of containers that each include one or more streaming processes and a stream manager, a first data streaming object from a first component in the group of containers, wherein

the group of containers is configured to execute a stream processing job having a logical topology that comprises one or more spouts and one or more bolts, wherein each spout represents a source of a respective data stream that provides data streaming objects of the respective data stream to one or more bolts, and each bolt represents operations comprising processing one or more data streaming objects, and

each streaming process corresponding to a respective spout or bolt of the logical topology;

determining if the first component is a streaming process of the same local container or if the first component is the stream manager of a non-local container in the group of containers;

in response to determining that the first component is a streaming process of the same local container, processing the first data streaming object and routing the processed first data streaming object to one or more of a non-local container in the group of containers or a different streaming process of the same local container; and

in response to determining that the first component is the stream manager of a non-local container in the group of containers, routing the first data streaming object, without processing the first data streaming object, to a streaming process of the same local container.

15. The one or more non-transitory computer storage media of claim 14 , wherein processing the first data streaming object comprises modifying one or more fields of the first data streaming object in place.

16. The one or more non-transitory computer storage media of claim 14 , wherein processing the first data streaming object and routing the first data streaming object in response to determining to process the first data streaming object comprises:

deserializing the first data streaming object to generate a deserialized object;

processing the deserialized object to generate a processed object;

serializing the processed object to generate a serialized objet; and

routing the serialized object.

17. The one or more non-transitory computer storage media of claim 16 , wherein deserializing the first data streaming object comprises accessing a deserialization resource in a memory pool accessible by the stream manager and deserializing the first data streaming object using the deserialization resource.

18. The one or more non-transitory computer storage media of claim 16 , wherein serializing the processed object comprises accessing a serialization resource in a memory pool accessible by the stream manager and serializing the processed object using the serialization resource.

19. The one or more non-transitory computer storage media of claim 14 , wherein routing the first data streaming object to a non-local container in the group of containers comprises routing the first data streaming object to the stream manager of the non-local container.

20. The one or more non-transitory computer storage media of claim 14 , wherein the group of containers is a group of second containers, wherein each second container in the group of second containers is communicatively linked to a first container, and wherein the first container includes a topology master that manages the execution of the logical topology.

Assignments (7)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (REEL 062079, FRAME 0677) Recorded Mar 3, 2026
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 075015/0574 →
RELEASE OF SECURITY INTEREST Recorded Apr 30, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 071127/0240 →
RELEASE OF SECURITY INTEREST Recorded Mar 27, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 070670/0857 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 062079/0677 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0001 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0086 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2018
From: WANG, CONG; FU, MAOSONG; RAMASAMY, KARTHIK
To: TWITTER, INC.
Reel/Frame 045920/0165 →
Continuity (1)
Provisional Application 62471337 · Mar 14, 2017