# US 11,115,348 B2 · Virtual resource allocation for processing an event queue

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,115,348 B2
- Document ID: US11115348B2
- Status: Granted
- Kind: B2
- Application number: 16/884,636
- Filed: 2020-05-27
- Published: 2020-12-10
- Granted: 2021-09-07
- Earliest claimed: 2016-11-29
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Nima Sharifi Mehr
- Web page: https://patentgrep.com/patent/US11115348B2

## CPC

- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- H04L 47/82: {Miscellaneous aspects}
- H04L 41/40: using virtualisation of network functions or resources, e.g. SDN or NFV entities
- H04L 41/5051: Service on demand, e.g. definition and deployment of services in real time
- H04L 41/5054: Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
- H04L 43/04: Processing captured monitoring data, e.g. for logfile generation
- H04L 43/0817: by checking functioning
- H04L 43/16: Threshold monitoring
- H04L 45/125: based on throughput or bandwidth
- H04L 45/7453: using hashing
- H04L 47/80: Actions related to the user profile or the type of traffic
- G06F 9/461: {Saving or restoring of program or task context}
- H04L 41/5064: {Customer relationship management}
- H04L 47/50: Queue scheduling
- H04L 67/1001: for accessing one among a plurality of replicated servers
- H04L 69/40: for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection (management of faults, events, alarms or notifications in data switching networks H04L41/06)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A resource allocation service can provide for the limited redelivery of events for processing using a set of virtual resources. A customer can provide code for execution, and the service can allocate resource instances configured to execute the code in response to various events. The processing for an event may not be completed by a single resource instance. When a resource instance is to end processing, the instance can capture state information to be returned as checkpoint data for the event. When the processing result is received, the service determines whether checkpoint data was included, which functions as a request for further processing. The service can then place the event data back in an event queue for redelivery and additional processing. A customer can specify a time limit or a retry limit such that an event can only undergo up to a maximum amount of processing before the event is failed.

## Claims

### Claim 1

A computer-implemented method, comprising:
detecting a notification event associated with a customer of a multi-tenant resource allocation service;
determining a registered function corresponding to the notification event, the registered function including code to be executed on behalf of the customer;
placing event information for the notification event in an event queue;
allocating a resource instance for executing the registered function to process the notification event, the resource instance obtaining the event information from the event queue;
receiving, from the resource instance, a first processing result for the notification event;
determining that state data for the resource instance is stored in a process data store based on the first processing result;
contacting a resource manager to obtain the state data from the process data store;
placing additional event information in the event queue, wherein the additional event information indicates additional processing of the notification event is required;
performing the additional processing based at least in part on the state data;
receiving a second processing result in response to performing the additional processing; and
providing the second processing result to the customer.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein performing the additional processing includes providing the state data to a worker to perform the additional processing.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, wherein the worker is a component of a second resource instance that is separate from the resource instance.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, further comprising:
receiving authentication credentials from the customer; and
verifying that the customer is authorized to access the multi-tenant resource allocation service before placing the event information in the event queue.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, wherein the authentication credentials include a session token.

### Claim 6 (depends on 5)

The computer-implemented method of claim 5, wherein the session token is provided by the multi-tenant resource allocation service in response to verifying that the customer is authorized.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein the registered function is scalable.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, wherein the code is written in one of the JAVA®, JAVASCRIPT™, PYTHON™, or RUBY™ programming languages.

### Claim 9 (depends on 1)

The computer-implemented method of claim 1, wherein the resource allocation service includes a load balancer to allocate the resource instance.

### Claim 10

A computer-implemented method, comprising:
determining a registered function associated with an event;
placing the event in an event queue;
allocating one or more workers to process the event;
processing, by the one or more workers, the event;
generating a first processing result including state data and event information from the one or more workers indicating that additional processing is required;
placing the event information in the event queue;
allocating one or more additional workers to continue processing of the event based at least in part on the first processing result;
performing additional processing by the one or more additional workers; and
receiving a second processing result from the one or more additional workers.

### Claim 11 (depends on 10)

The computer-implemented method of claim 10, further comprising:
determining that a processing stop criteria has been satisfied, wherein the first processing result is generated in response to the processing stop criteria being satisfied.

### Claim 12 (depends on 11)

The computer-implemented method of claim 11, wherein the processing stop criteria is processing time by the one or more workers exceeding a threshold processing time.

### Claim 13 (depends on 11)

The computer-implemented method of claim 11, wherein the processing stop criteria is processing by the one or more workers exceeds a maximum number of operations.

### Claim 14 (depends on 10)

The computer-implemented method of claim 10, further comprising:
receiving the event from a customer; and
providing the second processing result to the customer.

### Claim 15 (depends on 14)

The computer-implemented method of claim 14, wherein the event is received via an application programming interface (API).

### Claim 16

A system, comprising:
at least one processor; and
memory including instructions that, when executed by the at least one processor, cause the system to:
determine a registered function associated with an event;
place the event in an event queue;
allocate one or more workers to process the event;
process, by the one or more workers, the event;
generate a first processing result including state data and event information from the one or more workers indicating that additional processing is required;
place the event information in the event queue;
allocate one or more additional workers to continue processing of the event based at least in part on the first processing result;
perform additional processing by the one or more additional workers; and
receive a second processing result from the one or more additional workers.

### Claim 17 (depends on 16)

The system of claim 16, wherein the instructions when executed further cause the system to:
receive the event from a customer; and
provide the second processing result to the customer.

### Claim 18 (depends on 16)

The system of claim 16, wherein the event is received via an application programming interface (API).

### Claim 19 (depends on 16)

The system of claim 16, wherein to perform the additional processing, the system provides the state data to the one or more additional workers to perform the additional processing.

### Claim 20 (depends on 16)

The system of claim 16, wherein the instructions when executed further cause the system to:
provide one or more status updates to one or more auxiliary service systems, wherein the auxiliary service systems include at least one of a logging service, a billing service, and a monitoring service.
