IP Library › Granted Patent US 11,016,815
Granted Patent B2
US 11,016,815 · App. 16/372,108 · Granted May 25, 2021

Code execution request routing

Inventors: Scott Daniel Wisniewski (Edmonds, WA); Marc John Brooker (Seattle, WA); Timothy Allen Wagner (Seattle, WA)
Assignee: Amazon Technologies, Inc.
G06F9/5055G06F9/45558G06F9/5027G06F9/5033G06F9/5077G06F2009/4557G06F2009/45562G06F2209/5011G06F2209/5013
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,016,815
App. No.
16/372,108
Granted
May 25, 2021
Kind
B2
Abstract

A system for providing low-latency compute capacity is provided. The system may be configured to route incoming code execution requests based on user indications to use specific containers running on a plurality of virtual machine instances. The system may be configured to process a code execution request, identify, based on the user indication that a specific container previously used to handle a request of similar type is to be used for handling the code execution request, and cause the code execution request to be handled using the specific container.

Claims (37)

1. A computer-implemented method, as implemented by one or more computing devices configured with specific computer-executable instructions, the computer-implemented method comprising:

providing a plurality of virtual machine instances usable to execute program codes thereon;

receiving a first request to execute a program code on one of the plurality of virtual machine instances;

determining, based on at least one parameter associated with the first request, a routing parameter value associated with the first request for routing the first request to one of the plurality of virtual machine instances;

identifying a first container associated with the routing parameter value, wherein the first container is created on a first virtual machine instance of the plurality of virtual machine instances; and

routing the first request to the first container such that the program code is executed in the first container that was previously used to process a second request that had the same routing parameter as the first request.

2. The computer-implemented method of claim 1 , further comprising identifying the first container using a mapping table storing a plurality of routing parameters values and a corresponding plurality of container identifiers.

3. The computer-implemented method of claim 1 , wherein the execution of the program code in the first container utilizes information stored during a prior execution of the program code on behalf of the second request in the first container.

4. The computer-implemented method of claim 1 , wherein the routing parameter value is included in the first request.

5. The computer-implemented method of claim 1 , wherein the routing parameter value is determined based at least on a user account associated with the first request.

6. The computer-implemented method of claim 1 , wherein the routing parameter value is determined based at least on the program code associated with the first request.

7. The computer-implemented method of claim 1 , wherein the routing parameter value is determined based at least on a combination of the program code associated with the first request and one or more arguments to the program code such that code execution requests having two different sets of arguments can be routed to different containers despite being associated with the same program code.

8. A system, comprising:

one or more processors; and

one or more memories, the one or more memories having stored thereon instructions, which, when executed by the one or more processors, configure the one or more processors to:

cause a plurality of virtual machine instances usable to execute program codes thereon to be provided;

receive a first request to execute a program code on one of the plurality of virtual machine instances;

determine, based on at least one parameter associated with the first request, a routing parameter value associated with the first request for routing the first request to one of the plurality of virtual machine instances;

identify a first container associated with the routing parameter value, wherein the first container is created on a first virtual machine instance of the plurality of virtual machine instances; and

cause the first request to be routed to the first container such that the program code is executed in the first container that was previously used to process a second request that had the same routing parameter as the first request.

9. The system of claim 8 , wherein the instructions, when executed by the one or more processors, further configure the one or more processors to identify the first container using a mapping table storing a plurality of routing parameters values and a corresponding plurality of container identifiers.

10. The system of claim 8 , wherein the execution of the program code in the first container utilizes information stored during a prior execution of the program code on behalf of the second request in the first container.

11. The system of claim 8 , wherein the routing parameter value is included in the first request.

12. The system of claim 8 , wherein the routing parameter value is determined based at least on a user account associated with the first request.

13. The system of claim 8 , wherein the routing parameter value is determined based at least on the program code associated with the first request.

14. The system of claim 8 , wherein the routing parameter value is determined based at least on a combination of the program code associated with the first request and one or more arguments to the program code such that code execution requests having two different sets of arguments can be routed to different containers despite being associated with the same program code.

15. Non-transitory physical computer storage storing instructions, which, when executed by one or more computing devices, configure the one or more computing devices to:

cause a plurality of virtual machine instances usable to execute program codes thereon to be provided;

receive a first request to execute a program code on one of the plurality of virtual machine instances;

determine, based on at least one parameter associated with the first request, a routing parameter value associated with the first request for routing the first request to one of the plurality of virtual machine instances;

identify a first container associated with the routing parameter value, wherein the first container is created on a first virtual machine instance of the plurality of virtual machine instances; and

cause the first request to be routed to the first container such that the program code is executed in the first container that was previously used to process a second request that had the same routing parameter as the first request.

16. The non-transitory physical computer storage of claim 15 , wherein the instructions, when executed by the one or more computing devices, further configure the one or more computing devices to identify the first container using a mapping table storing a plurality of routing parameters values and a corresponding plurality of container identifiers.

17. The non-transitory physical computer storage of claim 15 , wherein the execution of the program code in the first container utilizes information stored during a prior execution of the program code on behalf of the second request in the first container.

18. The non-transitory physical computer storage of claim 15 , wherein the routing parameter value is determined based at least on a user account associated with the first request.

19. The non-transitory physical computer storage of claim 15 , wherein the routing parameter value is determined based at least on the program code associated with the first request.

20. The non-transitory physical computer storage of claim 15 , wherein the routing parameter value is determined based at least on a combination of the program code associated with the first request and one or more arguments to the program code such that code execution requests having two different sets of arguments can be routed to different containers despite being associated with the same program code.

Continuity (3)
Continuation 15912273 · Mar 5, 2018
Continuation 14977544 · Dec 21, 2015
Related Publication 20190227849A1 · Jul 25, 2019
Cited By (8)
US 12,314,752 US 12,321,766 US 12,327,133 US 12,381,878 US 12,476,978 US 12,671,671 US 12,724,647 US 12,726,444