Network service request throttling system
AssigneeAmazon Technologies, Inc.
InventorDavid L. Holcombe
Life of this patent
Estimating the term…
Abstract
Disclosed are various embodiments for throttling requests for a network service. A request for a network service is received from a client application and parameters are extracted from the request. Throttling policies applicable to the parameters are identified and retrieved, and it is determined whether the request should be processed based at least upon the throttling policies and the request parameters.
Claims24
A non-transitory computer-readable medium having a plurality of computer instructions that, when executed by a computing device, the plurality of computer instructions cause the computing device to:
- receive authorization from an application programming interface (API) provided by a request throttling server that allows a network service executed by the computing device to determine whether a request should be processed by the network service based at least in part upon at least one request throttling policy;
- extract at least one request parameter from a first request in response to receiving the first request to access the network service on behalf of a client, the at least one request parameter including a username associated with the first request to access the network service and an identity of a requested network service;
- identify in a memory accessible to the network service the at least one request throttling policy applicable to the at least one request parameter of the first request, the at least one request throttling policy defining a maximum request rate associated with the username;
- determine that the first request should be processed by the network service based at least in part upon the at least one request throttling policy and at least one of:
- the at least one request parameter, usage data of the network service or request data associated with the first request;
- generate a reporting object configured to report the usage data of the network service, the reporting object including a counter parameter corresponding to a number of requests with an identical parameter as the at least one request parameter;
- generate a reporting queue including the reporting object, the reporting queue generated for reporting on a periodic basis and being optimized to improve performance of the request throttling server, wherein the periodic basis is based at least in part upon a volume of requests and an amount of computing resources available and the periodic basis is adjusted at an inverse rate relative to the volume of requests;
- transmit the reporting object on the periodic basis;
- and
- process the first request if the at least one request throttling policy applicable to the at least one request parameter cannot be identified.
A request throttling system, comprising:
- at least one computing device;
- and
- a request throttling server executable in the at least one computing device, the request throttling server causing the at least one computing device to:
- receive a request from a network service device via a network, the request comprising a call to an application programming interface (API) implemented by the request throttling server, the API configured to provide an indication regarding whether to process a network service request received by the network service device corresponding to a network service;
- extract at least one request parameter from the request received via the network, the at least one request parameter including a username defining an identity associated with the request from the network service device;
- identify at least one request throttling policy applicable to the at least one request parameter, the at least one request throttling policy defining a maximum request rate associated with the username;
- retrieve the at least one applicable request throttling policy;
- determine that the network service request corresponding to the at least one request parameter should be processed by the network service based at least in part upon the at least one request throttling policy and at least one of:
- the at least one request parameter, usage data of the network service or request data of the network service device;
- generate a reporting object configured to report the usage data of the network service, the reporting object including a counter parameter corresponding to a number of requests with an identical parameter as the at least one request parameter;
- generate a reporting queue including the reporting object, the reporting queue generated for reporting on a periodic basis and being optimized to improve performance of the request throttling server, wherein the periodic basis is based at least in part upon a volume of requests and an amount of computing resources available and the periodic basis is adjusted at an inverse rate relative to the volume of requests;
- transmit the reporting object on the periodic basis;
- and
- generate and transmits to the network service device a Boolean response indicating whether the network service request should be processed by the network service.
A method, comprising:
- receiving a request via a network on behalf of a network service executed by a network service device, the request comprising a call to an application programming interface (API) implemented by a request throttling server, the API configured to provide an indication regarding whether to process a network service request received by the network service;
- extracting at least one request parameter from the request;
- identifying at least one request throttling policy applicable to the at least one request parameter of the request, the at least one request parameter including a username associated with an identity of the network service associated with the request, the at least one request throttling policy defining a maximum request rate associated with the username;
- retrieving the at least one request throttling policy;
- determining whether the network service request corresponding to the at least one parameter from the request should be processed by the network service based at least in part upon the at least one request throttling policy and at least one of:
- the at least one request parameter, usage data of the network service or request data of a client;
- generating a reporting object configured to report the usage data of the network service, the reporting object including a counter parameter corresponding to a number of requests with an identical parameter as the at least one request parameter;
- generating a reporting queue including the reporting object, the reporting queue generated for reporting on a periodic basis and being optimized to improve performance of the request throttling server, wherein the periodic basis is based at least in part upon a volume of requests and an amount of computing resources available and the periodic basis is adjusted at an inverse rate relative to the volume of requests;
- transmitting the reporting object on the periodic basis;
- and
- generating and transmitting to the network service device a Boolean response indicating whether the network service request should be processed by the network service.
Dependencies are inferred from the claim text.