IP Library Granted Patent US 11,150,960
Granted Patent B2
US 11,150,960 · App. 16/368,738 · Granted Oct 19, 2021

Distributed application allocation and communication

Inventors: Adam Julio Villalobos (Mountlake Terrace, WA); Christopher Denis Scalabrini (Kirkland, WA); Eric Jason Edelman (Renton, WA)
Assignee: Amazon Technologies, Inc.
G06F9/5077G06F9/3838G06F16/23G06F16/909G06F16/9035
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 11,150,960
App. No.
16/368,738
Filed
Mar 28, 2019
Granted
Oct 19, 2021
Kind
B2
Art Unit
2193
USPC
718/1
Abstract

Technology is described for computationally intensive distributed computing systems and methods. A method for using object types to distribute processing may include determining object types for data objects. A mapping between the data objects and processing partitions may be determined using the object types. A processing partition may be associated with a processing application that processes data objects of a given object type. A hardware host in a distributed computing system may identify an application library having a plurality of processing applications that process a plurality of data objects associated with a plurality of object types. The hardware host may use the processing partition assigned to the hardware host to identify the processing application for the object type associated with the processing partition from the application library. The hardware host may launch an instance of the processing application to enable the hardware host to process the plurality of data objects.

Claims (80)

1. A method, comprising:

receiving a plurality of processing partition assignments at a first hardware host in a distributed computing system hosting a multi-dimensional virtual environment, wherein a first processing partition assignment in the plurality of processing partition assignments allocates a first processing partition to the first hardware host, and a first object type is mapped to the first processing partition which groups a first plurality of data objects in the multi-dimensional virtual environment to the first processing partition by the first object type of the first plurality of data objects;

determining a second object type upon which processing of the first plurality of data objects by a first processing application is dependent;

launching a first instance of the first processing application on the first hardware host to provide processing of the first plurality of data objects mapped to the first processing partition by the first object type;

determining a second hardware host assigned a second processing partition using the plurality of processing partition assignments, wherein the second hardware host includes a second instance of a second processing application that provides processing of a second plurality of data objects of the second object type, wherein the second object type is mapped to the second processing partition which groups the second plurality of data objects to the second processing partition; and

sending a subscription request from the first hardware host to the second hardware host, wherein the subscription request instructs the second hardware host to copy the second plurality of data objects to the first instance of the processing application.

2. The method of claim 1 , further comprising:

determining a subscription strategy identifying neighbor relationships between spatial sub-divisions associated with a plurality of spatial sub-divisions for the multi-dimensional virtual environment to filter data objects of the second object type; and

identifying the second processing partition using a neighbor relationship, which satisfies the subscription strategy, between a first spatial sub-division associated with the first processing partition and a second spatial sub-division associated with the second processing partition.

3. The method of claim 1 , further comprising:

determining a subscription strategy identifying query criteria associated with a query to filter data objects of the second object type; and

identifying the second processing partition by matching the second plurality of data objects to the query criteria using the subscription strategy.

4. The method of claim 1 , further comprising:

determining a list of subscribers to the first plurality of data objects; and

sending the first plurality of data objects to the list of subscribers, wherein the list of subscribers includes a third hardware host or a third instance for a third processing application.

5. The method of claim 1 , further comprising:

receiving an update to the plurality of processing partition assignments;

determining, using the update, a migration of the second processing partition between the second hardware host and a third hardware host, wherein the third hardware host includes a third instance of a third processing application that provides processing of the second plurality of data objects; and

sending a second subscription request from the first hardware host to the third hardware host to instruct the third hardware host to copy the second plurality of data objects to the first instance of the first processing application.

6. A method, comprising:

identifying an application library at a hardware host in a distributed computing system hosting a multi-dimensional virtual environment, wherein the application library comprises a plurality of processing applications that process data objects associated with a plurality of object types;

receiving a processing partition assigned to the hardware host, wherein the plurality of object types are mapped to a plurality of processing partitions, and an object type mapped to the processing partition assigned to the hardware host groups a plurality of data objects of the object type into the processing partition;

retrieving, from the application library, a processing application for the object type mapped to the processing partition;

launching an instance of the processing application to enable the hardware host to process the plurality of data objects;

determining a second object type upon which processing by the instance of the processing application for the plurality of data objects is dependent;

identifying a second processing partition which groups a second plurality of data objects by the second object type into the second processing partition; and

sending the second plurality of data objects to the instance of the processing application.

7. The method of claim 6 , further comprising:

determining a filter for the data objects of the second object type;

identifying the second processing partition based on the second plurality of data objects satisfying the filter; and

sending a subscription request to a second hardware host associated with the second processing partition, wherein the subscription request instructs the second hardware host to copy the second plurality of data objects to the instance of the processing application.

8. The method of claim 6 , further comprising:

determining a subscription strategy identifying neighbor relationships between spatial sub-divisions associated with a plurality of spatial sub-divisions for the multi-dimensional virtual environment to filter the data objects of the second object type by spatial location;

identifying a second processing partition using a neighbor relationship, which satisfies the subscription strategy, between a first spatial sub-division associated with the processing partition and a second spatial sub-division associated with the second processing partition; and

sending a subscription request to a second hardware host associated with the second processing partition in order to receive a second plurality of data objects at the instance of the processing application.

9. The method of claim 6 , further comprising:

determining a subscription strategy identifying query criteria associated with a query of the data objects in the multi-dimensional virtual environment;

identifying a second processing partition which groups at least one of the data objects that match the query criteria; and

sending a subscription request to a second hardware host associated with the second processing partition to receive the at least one of the data objects that match the query criteria at the instance of the processing application.

10. The method of claim 6 , further comprising:

receiving a change in the mapping between the data objects and the plurality of processing partitions, wherein the change is caused by movement of a data object in the multi-dimensional virtual environment;

identifying a second processing partition associated with the data object using the change; and

sending a subscription request to a second hardware host associated with the second processing partition to receive the data object at the instance of the processing application.

11. The method of claim 6 , further comprising:

receiving a first stream of data object events associated with the plurality of data objects from the processing application; and

sending the plurality of data objects to a list of subscribers using a second stream of data object events.

12. The method of claim 6 , further comprising:

receiving a stream of data object events associated with the plurality of data objects from the processing application;

determining, using the stream of data object events, a change to the mapping between the data objects and the plurality of processing partitions; and

sending the change to a world manager to enable the world manager to manage allocations of processing partitions across a plurality of hardware hosts.

13. The method of claim 6 , further comprising:

identifying at least one of the plurality of data objects grouped by the object type into the processing partition;

migrating the at least one the plurality of data objects between the processing partition and a second processing partition, which groups a second plurality of data objects by the object type; and

launching a second instance of the processing application to enable the hardware host to process the second plurality of data objects.

14. The method of claim 6 , further comprising:

determining a number of data objects in a second processing partition, which groups a second plurality of data objects by the object type;

allocating the second plurality of data objects to the processing partition based on the number of data objects; and

terminating a second instance of the processing application associated with the second processing partition.

15. A system, comprising:

one or more processors; and

one or more memory devices that store instructions which when executed by the one or more processors cause the one or more processors to:

determine a first processing application to launch from an application library using a first processing partition allocated for processing to a first hardware host using a plurality of processing partition assignments associated with a distributed computing system hosting a multi-dimensional virtual environment, wherein a first object type is mapped to the first processing partition which groups a first plurality of data objects to the first processing partition by the first object type;

determine a second object type upon which processing of the first plurality of data objects by the first processing application is dependent;

launch a first instance of the first processing application on the first hardware host to provide processing of the first plurality of data objects mapped to the first processing partition by the first object type;

determine, using the plurality of processing partition assignments, a second hardware host associated with a second plurality of data objects associated with the second object type, wherein the second object type is mapped to a second processing partition and the second plurality of data objects are grouped by the second object type into the second processing partition which is assigned in the plurality of processing partition assignments for processing by the second hardware host; and

send a subscription request to the second hardware host for the second plurality of data objects to copy changes to the second plurality of data objects to a first instance of the first processing application.

16. The system of claim 15 , wherein the instructions further cause the one or more processors to:

determine a subscription strategy to filter data objects of the second object type using spatial location associated with a plurality of spatial sub-divisions for the multi-dimensional virtual environment; and

identify the second processing partition using a mapping, between data objects in the multi-dimensional virtual environment and processing partitions, and the subscription strategy to associate the second plurality of data objects with the spatial location.

17. The system of claim 15 , wherein the instructions further cause the one or more processors to:

determine a subscription strategy to filter data objects of the second object type using a query; and

identify the second processing partition using a mapping, between data objects in the multi-dimensional virtual environment and processing partitions, and the subscription strategy to match the second plurality of data objects to the query.

18. The system of claim 15 , wherein the instructions further cause the one or more processors to:

receive a list of subscribers to the first plurality of data objects;

receiving a stream of data object events associated with the first plurality of data objects from the first processing application; and

send the first plurality of data objects to the list of subscribers using a second stream of data object events.

19. The system of claim 15 , further comprising:

receiving an update to the plurality of processing partition assignments;

determining a third hardware host associated with the second plurality of data objects using the update; and

sending a second subscription request to the third hardware host for the second plurality of data objects to copy the second plurality of data objects to the first instance of the first processing application.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2021
From: VILLALOBOS, ADAM JULIO; SCALABRINI, CHRISTOPHER DENIS; EDELMAN, ERIC JASON
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 055568/0267 →
Continuity (1)
Related Publication 20200310884A1 · Oct 1, 2020