Project Description
The Throttling Suite provides throttling control capabilities to the .NET Web API applications. It is highly customizable product, yet simple to use. It is specifically designed to throttle high performance and high throughput Web API applications.

This project is a spin-off of the original "Throttling Suite for ASP.NET Applications" with improved capabilities providing implementation for .NET Web API framework. The implementation supports all available hosting options provisioning equal functionality for IIS-hosted or OWIN self-hosted solutions.

The library contains multiple controller types implementing different throttling algorithms:
  • Linear throttling - limits the number of calls by enforcing consistent delay between consequent requests;
  • Short Average - limits the number of calls by ensuring consistent average over period of time, but allowing to have smaller traffic bursts for short time intervals; this type of throttling is very helpful cutting HTTP request floods;
  • Long Average - limits the number of calls by specified number of requests per configured duration as short-average does, but includes "blocked" calls into total count, penalizing client for excessive application use.
See Throttling algorithm considerations for more details on different throttling controller types.

Each throttling controller is capable of unique client determination and management. The throttling for any end-point, or set of end-points can be configured either for the entire application, or per-client. It does not purely rely on client IP address, allowing multiple clients from the same network concurrently making requests to the server.
The Throttling Suite allows setting multiple controllers within the application and applying each to a pre-filtered traffic. The filters are also configurable.

The Throttling Suite provides two modes: real blocking mode when request is blocked with 429 HTTP Status code and log-only mode whether it logs blocking information to a trace log, but allows request to continue. The log-only mode is very useful when there is a need to determine the most appropriate throttling configuration parameters.

The code is highly optimized for its performance. It has very low memory impact. The throttle evaluation functionality takes less than 0.3 ms to run.

As an extra functionality it provides with real-time snapshot of current throttle status for all throttling controllers. The snap-shot is available online as a JSON output. It requires configuration to assure authorized used as desired by an application.

This component is also available as NuGet Package; search for "ThrottlingSuite.Http" in NuGet Package Manager or visit https://www.nuget.org/packages/ThrottlingSuite.Http.

The Throttling Suite takes advantage of Web API delegating handler pattern and its combined flow diagram is present below:
FlowDiagram.png


Last edited Jun 3, 2014 at 11:33 AM by lennygran, version 27