IP Library › Granted Patent US 10,091,215
Granted Patent B1
US 10,091,215 · App. 14/481,831 · Granted Oct 2, 2018

Client isolation in a distributed queue

Inventor: Jonathan Brian Word (Seattle, WA)
Assignee: Amazon Technologies, Inc.
H04L63/1408H04L47/50H04L47/70
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,091,215
App. No.
14/481,831
Granted
Oct 2, 2018
Kind
B1
Abstract

Methods and systems for implementing client isolation in a distributed queue are disclosed. Messages are enqueued in one or more logical queues. Individual messages comprise respective values for an isolation parameter. A respective value for the isolation parameter is assigned to individual queue clients. Messages are sent to the queue clients based at least in part on the values for the isolation parameter. The queue clients are configured to attempt message processing for the messages. Messages having different values for the isolation parameter are isolated among different queue clients.

Claims (47)

1. A system, comprising:

one or more computing devices configured to implement a distributed strict queue system, wherein the distributed strict queue system comprises a plurality of queue servers, and wherein the distributed strict queue system is configured to:

receive a plurality of messages from a plurality of queue producers, wherein at least some of the messages comprise a respective value for a strict order parameter;

if individual ones of the messages lack a value for an isolation parameter and isolation is enabled for the individual ones of the messages, assign a respective value for the isolation parameter to the individual ones of the messages;

forward individual ones of the messages to a respective queue server of the plurality of queue servers based at least in part on the respective value for the strict order parameter, wherein a range of values for the strict order parameter is divided among the plurality of queue servers;

enqueue individual ones of the messages at the plurality of queue servers, wherein individual ones of the messages that share a respective value for the strict order parameter are enqueued in a strict order based at least in part on time of receipt at the respective queue server;

assign a respective value for the isolation parameter to individual ones of a plurality of queue clients; and

send individual ones of the enqueued messages to the plurality of queue clients based at least in part on the values for the isolation parameter, wherein the plurality of queue clients are configured to attempt message processing for the individual ones of the enqueued messages, and wherein individual ones of the enqueued messages having different values for the isolation parameter are isolated among different ones of the queue clients.

2. The system as recited in claim 1 , wherein network traffic is blocked between ones of the queue clients assigned different values for the isolation parameter.

3. The system as recited in claim 1 , wherein the distributed strict queue system is configured to:

provision a respective queue client of the plurality of queue clients for each value for the isolation parameter; and

deprovision or erase data from the respective queue client after the respective queue client attempts message processing for one or more of the enqueued messages having the value for the isolation parameter assigned to the respective queue client.

4. The system as recited in claim 1 , wherein a particular one of the queue clients assigned a particular value for the isolation parameter is configured to execute untrusted code during attempted message processing, and wherein other ones of the queue clients assigned values for the isolation parameter other than the particular value are isolated from at least some effects of executing the untrusted code, where the at least some effects comprise modification of the other ones of the queue clients.

5. A computer-implemented method, comprising:

enqueueing a plurality of messages in one or more logical queues, wherein individual ones of the messages indicate respective tasks to be performed via execution of untrusted code and comprise a respective value for an isolation parameter;

responsive to a determination that a respective value for the isolation parameter is not assigned to any queue clients in a plurality of queue clients configured to attempt performance of the tasks, assign the respective value to one or more queue clients in the plurality of queue clients so that messages comprising the respective value are only sent to the one or more queue clients assigned to the respective value; and

sending individual ones of the enqueued messages to the plurality of queue clients based at least in part on the values for the isolation parameter, wherein performances of the tasks of individual ones of the enqueued messages having different values for the isolation parameter are isolated among different ones of the queue clients.

6. The method as recited in claim 5 , wherein the queue clients are different network entities and network traffic is blocked between different ones of the queue clients assigned different values for the isolation parameter.

7. The method as recited in claim 5 , further comprising:

provisioning a respective queue client of the plurality of queue clients for each value for the isolation parameter; and

deprovisioning or erasing data from the respective queue client after the respective queue client attempts task performance for one or more of the enqueued messages having the value for the isolation parameter assigned to the respective queue client.

8. The method as recited in claim 5 , wherein isolating the performance of a particular task on a particular one of the queue clients comprises preventing the execution of untrusted code associated with the particular task from modification of another one of the queue clients.

9. The method as recited in claim 8 , further comprising:

deprovisioning or erasing data from the particular one of the queue clients after execution of the untrusted code.

10. The method as recited in claim 5 , further comprising:

distributing individual ones of the plurality of messages to a plurality of queue servers based at least in part on a respective value for a strict order parameter, wherein individual ones of the messages that share a respective value for the strict order parameter are distributed to a respective one of the queue servers;

wherein enqueueing the plurality of messages in the one or more logical queues comprises enqueueing individual ones of the messages at the plurality of queue servers, wherein individual ones of the messages that share a respective value for the strict order parameter are enqueued in a strict order based at least in part on time of receipt at the respective one of the queue servers.

11. The method as recited in claim 10 , further comprising:

for individual ones of the plurality of messages, determining the respective value for the isolation parameter based at least in part on the respective value for the strict order parameter.

12. The method as recited in claim 5 , wherein a group of the queue clients share a particular value for the isolation parameter.

13. A non-transitory computer-readable storage medium storing program instructions computer-executable to perform:

enqueueing a plurality of messages in one or more logical queues, wherein individual ones of the messages indicate respective tasks to be performed via execution of untrusted code and comprise a respective value for an isolation parameter;

responsive to a determination that a respective value for the isolation parameter is not assigned to any queue clients in a plurality of queue clients configured to attempt performance of the tasks, assign the respective value to one or more queue clients so that messages comprising the respective value are only sent to the one or more queue clients assigned to the respective value; and

sending individual ones of the enqueued messages to the plurality of queue clients based at least in part on the values for the isolation parameter, wherein performances of the tasks of individual ones of the enqueued messages having different values for the isolation parameter are isolated among different ones of the queue clients.

14. The non-transitory computer-readable storage medium as recited in claim 13 , wherein network traffic is blocked between ones of the queue clients assigned different values for the isolation parameter.

15. The non-transitory computer-readable storage medium as recited in claim 13 , wherein the program instructions are further computer-executable to perform:

provisioning a respective queue client of the plurality of queue clients for each value for the isolation parameter; and

deprovisioning or erasing data from the respective queue client after the respective queue client attempts task performance for one or more of the enqueued messages having the value for the isolation parameter assigned to the respective queue client.

16. The non-transitory computer-readable storage medium as recited in claim 13 , wherein to isolate the performance of a particular task on a particular one of the queue clients, the program instructions are further computer-executable to prevent the execution of untrusted code associated with the particular task from modification of another one of the queue clients.

17. The non-transitory computer-readable storage medium as recited in claim 16 , wherein the program instructions are further computer-executable to perform:

deprovisioning or clearing data from the particular one of the queue clients after execution of the untrusted code.

18. The non-transitory computer-readable storage medium as recited in claim 13 , wherein the program instructions are further computer-executable to perform:

distributing individual ones of the plurality of messages to a plurality of queue servers based at least in part on a respective value for a strict order parameter, wherein individual ones of the messages that share a respective value for the strict order parameter are distributed to a respective one of the queue servers;

wherein enqueueing the plurality of messages in the one or more logical queues comprises enqueueing individual ones of the messages at the plurality of queue servers, wherein individual ones of the messages that share a respective value for the strict order parameter are enqueued in a strict order based at least in part on time of receipt at the respective one of the queue servers.

19. The non-transitory computer-readable storage medium as recited in claim 18 , wherein the program instructions are further computer-executable to perform:

for individual ones of the plurality of messages, determining the respective value for the isolation parameter based at least in part on the respective value for the strict order parameter.

20. The non-transitory computer-readable storage medium as recited in claim 13 , wherein a group of the queue clients share a particular value for the isolation parameter.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 21, 2014
From: WORD, JONATHAN BRIAN
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 033992/0995 →
Cited By (9)
US 12,210,430 US 12,288,060 US 12,289,415 US 12,417,299 US 12,452,291 US 12,474,909 US 12,505,255 US 12,536,008 US 12,665,945