Skip to content

shivesh3108/Rate-Limiting-and-Throttling-Service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rate Limiting and Throttling Service

Overview

This project implements a custom Rate Limiting and Throttling Service designed to regulate the number of requests each user or API client can make to backend services. This service ensures that APIs are safeguarded from excessive or abusive requests, maintaining both security and performance stability across the system.

Why This Service is Valuable

  • Security: Prevents backend systems from becoming overwhelmed by high volumes of requests, reducing the risk of DoS (Denial of Service) attacks.
  • Performance: Maintains stability and ensures consistent response times during peak usage.
  • Scalability: Enables fair resource distribution across multiple users, especially in multi-tenant applications.
  • Customization: This custom-built service can be tailored specifically to meet organizational needs, providing greater control and flexibility compared to off-the-shelf solutions.

Features and Design Breakdown

1. Rate Limiting Logic

This service implements various rate-limiting strategies to control request flow:

  • Fixed Window: Allows a defined number of requests per client within a fixed time window (e.g., 100 requests per minute).
  • Sliding Window: Distributes request limits over a moving time window to smooth out burst traffic.
  • Token Bucket: Adds tokens at a constant rate and permits requests if tokens are available, providing flexible rate-limiting for burst handling.

The service tracks requests based on identifiers like IP address, API key, or user ID. Request data is stored in an efficient, in-memory data store like Redis to support high-speed access and scalability.

2. Configurable Rate Limits for Different User Tiers

To support multiple tiers, the service can dynamically adjust rate limits based on user roles. For example, premium users may have higher limits than free-tier users.

  • Configuration: Rate limit configurations can be loaded from files or environment variables.
  • Dynamic Adjustment: Allows real-time adaptation of rate limits based on user profiles.

3. Admin Control API Endpoints

For improved flexibility and management, this service includes API endpoints for administrative functions:

  • Usage Monitoring: Real-time visibility into request counts and rate limit status per user.
  • Manual Reset: Admins can manually reset rate limits for individual users.
  • User Blocking: Abusive users can be temporarily or permanently blocked from making further requests.

4. Persistent Rate Limit Data

To retain rate limit data beyond in-memory storage, the service uses a distributed store like Redis or a relational database. This enables:

  • System Restart Persistence: Rate limit counters are preserved even after system restarts.
  • Scalability: Distributed storage ensures that counters are shared across nodes in a scalable environment.

5. Rate Limit Exceeding Responses

When users exceed their allowed rate limit, the service returns a standardized response:

  • HTTP 429 - Too Many Requests: Indicates that the user has reached their rate limit.
  • Retry Information: Provides the remaining time until the user can retry the request.
  • Exponential Backoff (Optional): Allows progressively longer delays between retries, encouraging clients to avoid repeated, rapid retry attempts.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages