IP Library › Granted Patent US 11,153,219
Granted Patent B2
US 11,153,219 · App. 16/105,618 · Granted Oct 19, 2021

System for application aware rate-limiting using plug-in

Inventors: Leo M. M. Farrell (Main Beach, AU); Shane B. Weeden (Paradise Point, AU)
Assignee: International Business Machines Corporation
H04L47/2475G06F9/44526H04L63/0209H04L63/10H04L67/02
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,153,219
App. No.
16/105,618
Granted
Oct 19, 2021
Kind
B2
Abstract

A method, system and computer-usable medium for web application aware rate-limiting. One embodiment of the system involves a computer-implemented method in which requests for a web application are receive from a plurality of client entities. When the received requests are to be rate-limited, a rate-limiting identifier is requested from a plug-in respectively associated with the web application. The plug-in generates the rate-limiting identifier, wherein the rate-limiting identifier is unique to the web application. The plug and sends the rate-limiting identifier to the rate-limiting engine, which uses the rate-limiting identifier to rate-limit passing of the received requests to the web application. In some embodiments, the rate-limiting identifier is generated as a hash value that is independent of IP address and header information data of the client making the request.

Claims (71)

1. A computer-implemented method for performing application aware rate-limiting, comprising:

receiving requests for a plurality of web applications executing at a server from a plurality of client entities;

determining whether requests received for a given web application are to be rate-limited;

when the received requests for the given web application are to be rate-limited, requesting, by a rate-limiting engine, a rate-limiting identifier from a web application plug-in respectively associated with the given web application;

generating the rate-limiting identifier at the web application plug-in, wherein the rate-limiting identifier is unique to the given web application;

sending the rate-limiting identifier from the web application plug-in associated with the given web application to the rate-limiting engine; and

using the rate-limiting identifier at the rate-limiting engine to rate-limit passing of the received requests to the given web application independent of rate-limiting occurring for other web applications of the plurality of web applications.

2. The computer-implemented method of claim 1 , further comprising:

receiving a plurality of data streams from the plurality of client entities at a API gateway, wherein the plurality of data streams include requests that are to be passed to the plurality of web applications;

determining, by the API gateway, whether one or more of the data streams to the given web application should be rate-limited;

wherein, if one or more of the plurality of data streams to the given web application are to be rate-limited, the API gateway notifies the rate-limiting engine that one or more of the plurality of data streams to the given web application are to be rate-limited; and

wherein, in response to the notification from the API gateway, the rate-limiting engine executes operations including requesting the rate-limiting identifier from the web application plug-in respectively associated with the given web application.

3. The computer-implemented method of claim 1 , wherein the rate-limiting identifier comprises a hash tag, wherein the hash tag is unique to the web application.

4. The computer-implemented method of claim 1 , wherein the rate-limiting identifier is independent of data in the received requests.

5. The computer-implemented method of claim 1 , wherein the web application plug-in requests application context from the web application before sending the rate-limiting identifier to the rate-limiting engine.

6. The computer-implemented method of claim 1 , wherein

the web application plug-in provides data to the rate-limiting engine for use in determining a rate-limit for the requests for the web application;

wherein the web application plug-in monitors performance parameters of the web application during rate-limiting by the rate-limiting engine to determine whether the rate-limit should be changed; and

wherein, if the web application plug-in determines that the rate-limit should be changed, the plug-in notifies the rate-limiting engine.

7. The computer-implemented method of claim 1 , further comprising:

when the received requests to one or more of the web applications are to be rate-limited, using a rate-limiting engine to request rate-limiting identifiers from web application plug-ins respectively associated with each of the multiple web applications that are to be rate-limited;

generating the rate-limiting identifiers at each of the respective web application plug-ins, wherein each rate-limiting identifier generated by each web application plug-in is unique to the respective web application;

sending the rate-limiting identifiers from the respective web application plug-ins to the rate-limiting engine; and

rate-limiting requests received for each of the multiple web applications that are to be rate-limited using the rate-limiting identifiers provided from the respective web application plug-ins so that the rate-limiting engine rate-limits requests to a web application of the plurality of web applications independent of rate-limiting of other web applications of the plurality of web applications.

8. A system comprising:

a processor;

a data bus coupled to the processor; and

a computer-usable medium embodying computer program code, the computer-usable medium being coupled to the data bus, the computer program code used for performing application aware rate-limiting operations and comprising instructions executable by the processor and configured for:

receiving requests for a plurality of web applications executing at a server from a plurality of client entities;

determining whether requests received for a given web application are to be rate-limited;

when the received requests for the given web application are to be rate-limited, requesting, by a rate-limiting engine, a rate-limiting identifier from a web application plug-in respectively associated with the given web application;

generating the rate-limiting identifier at the web application plug-in, wherein the rate-limiting identifier is unique to the given web application;

sending the rate-limiting identifier from the web application plug-in associated with the given web application to the rate-limiting engine; and

using the rate-limiting identifier at the rate-limiting engine to rate-limit passing of the received requests to the given web application independent of rate-limiting occurring for other web applications of the plurality of web applications.

9. The system of claim 8 , wherein the instructions a further configured for:

receiving a plurality of data streams from the plurality of client entities at a API gateway, wherein the plurality of data streams include requests that are to be passed to the plurality of web applications;

determining, by the API gateway, whether one or more of the data streams to the given web application should be rate-limited;

wherein, if one or more of the plurality of data streams to the given web application are to be rate-limited, the API gateway notifies the rate-limiting engine that one or more of the plurality of data streams to the given web application are to be rate-limited; and

wherein, in response to the notification from the API gateway, the rate-limiting engine executes operations including requesting the rate-limiting identifier from the web application plug-in respectively associated with the given web application.

10. The system of claim 8 , wherein the rate-limiting identifier comprises a hash tag, wherein the hash tag is unique to the web application.

11. The system of claim 8 , wherein the rate-limiting identifier is independent of data in the received requests.

12. The system of claim 8 , wherein the web application plug-in requests application context from the web application before sending the rate-limiting identifier to the rate-limiting engine.

13. The system of claim 8 , wherein

the web application plug-in provides data to the rate-limiting engine for use in determining a rate-limit for the requests for the web application;

wherein the web application plug-in monitors performance parameters of the web application during rate-limiting by the rate-limiting engine to determine whether the rate-limit should be changed; and

wherein, if the web application plug-in determines that the rate-limit should be changed, the web application plug-in notifies the rate-limiting engine.

14. The system of claim 8 , wherein the instructions are further configured for:

when the received requests to one or more of the web applications are to be rate-limited, using a rate-limiting engine to request rate-limiting identifiers from web application plug-ins respectively associated with each of the multiple web applications that are to be rate-limited;

generating the rate-limiting identifiers at each of the respective web application plug-ins, wherein each rate-limiting identifier generated by each web application plug-in is unique to the respective web application;

sending the rate-limiting identifiers from the respective web application plug-ins to the rate-limiting engine; and

rate-limiting requests received for each of the multiple web applications that are to be rate-limited using the rate-limiting identifiers provided from the respective web application plug-ins so that the rate-limiting engine rate-limits requests to a web application of the plurality of web applications independent of rate-limiting of other web applications of the plurality of web applications.

15. A non-transitory, computer readable storage medium embodying computer program code, the computer program code comprising computer executable instructions configured for:

receiving requests for a plurality of web applications executing at a server from a plurality of client entities;

determining whether requests received for a given web application are to be rate-limited;

when the received requests for the given web application are to be rate-limited, requesting, by a rate-limiting engine, a rate-limiting identifier from a web application plug-in respectively associated with the given web application;

generating the rate-limiting identifier at the web application plug-in, wherein the rate-limiting identifier is unique to the given web application;

sending the rate-limiting identifier from the web application plug-in associated with the given web application to the rate-limiting engine; and

using the rate-limiting identifier at the rate-limiting engine to rate-limit passing of the received requests to the given web application independent of rate-limiting occurring for other web applications of the plurality of web applications.

16. The non-transitory, computer-readable storage medium of claim 15 , wherein the instructions are further configured for:

receiving a plurality of data streams from the plurality of client entities at a API gateway, wherein the plurality of data streams include requests that are to be passed to the plurality of web applications;

determining, by the API gateway, whether one or more of the data streams to the given web application should be rate-limited;

wherein, if one or more of the plurality of data streams to the given web application are to be rate-limited, the API gateway notifies the rate-limiting engine that one or more of the plurality of data streams to the given web application are to be rate-limited; and

wherein, in response to the notification from the API gateway, the rate-limiting engine executes operations including requesting the rate-limiting identifier from the web application plug-in respectively associated with the given web application.

17. The non-transitory, computer-readable storage medium of claim 15 , wherein the rate-limiting identifier comprises a hash tag, wherein the hash tag is unique to the web application.

18. The non-transitory, computer-readable storage medium of claim 15 , wherein the rate-limiting identifier is independent of data in the received requests.

19. The non-transitory, computer-readable storage medium of claim 15 , wherein the web application plug-in requests application context from the web application before sending the rate-limiting identifier to the rate-limiting engine.

20. The non-transitory, computer-readable storage medium of claim 15 , wherein the instructions are further configured for:

when the received requests to one or more of the web applications are to be rate-limited, using a rate-limiting engine to request rate-limiting identifiers from web application plug-ins respectively associated with each of the multiple web applications that are to be rate-limited;

generating the rate-limiting identifiers at each of the respective web application plug-ins, wherein each rate-limiting identifier generated by each web application plug-in is unique to the respective web application;

sending the rate-limiting identifiers from the respective web application plug-ins to the rate-limiting engine; and

rate-limiting requests received for each of the multiple applications that are to be rate-limited using the rate-limiting identifiers provided from the respective web application plug-ins so that the rate-limiting engine rate-limits requests to a web application of the plurality of web applications independent of rate-limiting of other web applications of the plurality of web applications.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 21, 2018
From: FARRELL, LEO M. M.; WEEDEN, SHANE B.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 046640/0617 →
Continuity (1)
Related Publication 20200059471A1 · Feb 20, 2020