IP Library Granted Patent US 11,580,126
Granted Patent B1
US 11,580,126 · App. 16/915,544 · Granted Feb 14, 2023

Systems, apparatuses, and methods for request throttling

Inventors: Ankit Sultania (Seattle, WA); Eric Brian Ceres (Glen Rock, NJ); Karthik Saligrama Shreeram (Seattle, WA); Yong Yuan (Mercer Island, WA); Saurabh Kumar Singh (Sammamish, WA); Priyank Mundra (Seattle, WA)
Assignee: Amazon Technologies, Inc.
G06F16/2477G06F16/22G06F16/2379G06F16/2443G06F16/93
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,580,126
App. No.
16/915,544
Granted
Feb 14, 2023
Kind
B1
Abstract

Techniques for request throttling in a provider network environment are described. A throttle handler controls whether requests will be processed through maintaining a token-based record, per type of request, having a token value indicative of a number of requests that can be processed over a time period. For a request, the token value of the token-based record corresponding to the request type is updated based on calculating an elapsed time between a last update time of the token-based record and the current time, calculating an intermediate token value as the existing token value plus a value of the elapsed time multiplied by a rate, and updating the token value to be the minimum between the intermediate token value and a burst value. The request is serviced when the updated token value is determined to be greater than or equal to a number of tokens needed to perform the request.

Claims (53)

1. A non-transitory computer readable storage media storing instructions which, when executed by one or more processors of one or more computing devices, cause the one or more computing devices to perform operations comprising:

receiving a request of a first type to use a service, the request being one of a plurality of types of requests for a given user;

based on the request, determining there is a token-based record associated with the request indexed by a key, wherein the token-based record reflects a burst value at a given point in time for the first type of request, wherein the burst value represents a maximum bucket size;

updating the token-based record to reflect usage of the token and a current time value by:

calculating an elapsed time between a last update time value of the token-based record and the current time value,

calculating an intermediate token value to be a token value of the token-based record plus a value of the elapsed time multiplied by an expected transaction rate, and

updating the token-based record by setting the token value to be a minimum of the intermediate token value and an expected burst value, and updating the last update time value to be the current time value;

determining the request should be serviced by verifying the set token value is greater than or equal to a number of tokens needed to perform the request;

sending the request to be performed;

performing the request; and

returning a result of the performing of the request to a user.

2. The non-transitory computer readable storage media of claim 1 , wherein the token-based record is stored in an in-memory key-value data store.

3. The non-transitory computer readable storage media of claim 1 , wherein the key is generated from an identifier of a user, an identifier of an index that provides search results, and an identifier of the first type of request.

4. A computer-implemented method comprising:

receiving a request of a first type to use a service, the request being one of a plurality of types of requests for a given user;

based on the request, determining there is a token-based record associated with the request indexed by a key, wherein the token-based record reflects a burst value at a given point in time for the first type of request, and wherein the burst value represents a maximum bucket size;

updating the token-based record to reflect usage of the token and a current time value, comprising:

calculating an elapsed time between a last update time value of the token-based record and the current time value;

calculating an intermediate token value to be a token value of the token-based record plus a value of the elapsed time multiplied by an expected transaction rate; and

updating the token-based record by setting the token value to be a minimum of the intermediate token value and an expected burst value, and updating the last update time value to be the current time value;

determining the request is to be serviced by at least verifying a token value of the updated token-based record is greater than or equal to a number of tokens needed to perform the request;

sending the request to be performed;

performing the request; and

returning a result of performing the request.

5. The computer-implemented method of claim 4 , wherein the token-based record is stored in an in-memory key-value data store.

6. The computer-implemented method of claim 5 , wherein the determining there is a token-based record associated with the request, the updating the token-based record to reflect usage of the token and the current time, and the determining the request is to be serviced are performed based on use of the in-memory key-value data store.

7. The computer-implemented method of claim 4 , wherein the key is generated from an identifier of a user, an identifier of an index that provides search results, and an identifier of the first type of request.

8. The computer-implemented method of claim 4 , wherein the token-based record includes a string value for the key, a numeric value for the token value, and a numeric value for the last update time of the record.

9. The computer-implemented method of claim 4 , wherein the determining the request is to be serviced further comprises:

determining a consumed capacity associated with the first type of request has not exceeded a threshold over a set time period.

10. The computer-implemented method of claim 9 , wherein the consumed capacity is stored in a record that additionally includes an expiration time for the time period.

11. The computer-implemented method of claim 10 , where in the record is the token-based record.

12. The computer-implemented method of claim 10 , where in the record is stored separately from the token-based record.

13. The computer-implemented method of claim 4 , wherein the first type is a document search query.

14. The computer-implemented method of claim 4 , wherein the request includes a question to be answered, and wherein the method further comprises receiving a result generated based on performance of the request, wherein the result includes an answer to the question.

15. A system comprising:

a data storage to store a set of documents; and

one or more electronic devices to implement a search service, the search service including instructions that upon execution cause the search service to:

receive a request by the search service to search the stored set of documents,

based on the request, determine there is a token-based record associated with the request indexed by a key, wherein the token-based record reflects a burst value at a given point in time for the first type of request, and wherein the burst value represents a maximum bucket size,

update the token-based record to reflect usage of the token and a current time value, the update comprising:

calculating an elapsed time between a last update time value of the token-based record and the current time value,

calculating an intermediate token value to be a token value of the token-based record plus a value of the elapsed time multiplied by an expected transaction rate, and

updating the token-based record by setting the token value to be a minimum of the intermediate token value and an expected burst value, and updating the last update time value to be the current time value,

determine the request is to be serviced by at least verifying a token value of the updated token-based record is greater than or equal to a number of tokens needed to perform the request,

send the request to be performed,

perform the request, and

return a result of performing the request.

16. The system of claim 15 , wherein the token-based record is stored in an in-memory key-value data store.

17. The system of claim 16 , wherein to determine there is a token-based record associated with the request; to update the token-based record to reflect usage of the record and a current time; and to determine the request is to be serviced the search service is to utilize the in-memory key-value data store.

18. The system of claim 15 , wherein the request includes a question to be answered, and wherein the search service is further to transmit a result generated based on a performance of the request, wherein the result includes an answer to the question.

19. The system of claim 15 , wherein the documents comprise at least one of word processing documents, text files, or postscript-based files.

20. The system of claim 15 , wherein the key is generated from an identifier of a user, an identifier of an index that provides search results, and an identifier of the first type of request.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 1, 2020
From: SULTANIA, ANKIT; CERES, ERIC BRIAN; SALIGRAMA SHREERAM, KARTHIK; YUAN, YONG; SINGH, SAURABH KUMAR; MUNDRA, PRIYANK
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 053100/0011 →
Cited By (1)
US 12,229,095