# throttled/throttled

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/throttled-throttled).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

1,591 stars · 98 forks · Go · BSD-3-Clause

## Links

- GitHub: https://github.com/throttled/throttled
- awesome-repositories: https://awesome-repositories.com/repository/throttled-throttled.md

## Description

Throttled is a Go library and middleware package for enforcing rate quotas and request thresholds on HTTP endpoints. It provides tools for tracking web request rates over specific time windows to control access frequency and manage traffic spikes.

The core request evaluation relies on a token-bucket algorithm with sliding counters backed by fast memory stores, supplemented by pluggable storage backends for state persistence. Incoming requests are identified and grouped using flexible visitor-key parsers based on IP addresses, API keys, or custom parameters. 

The package integrates directly with web servers to intercept incoming traffic automatically. It appends standard response headers containing current usage, remaining quotas, and retry intervals to inform clients of their status.

## Tags

### Software Engineering & Architecture

- [Token Bucket Throttlers](https://awesome-repositories.com/f/software-engineering-architecture/request-throttling/rate-limiting/token-bucket-throttlers.md) — Enforces maximum request thresholds and burst allowances using a sliding counter algorithm backed by fast memory stores.
- [Visitor Key Parsers](https://awesome-repositories.com/f/software-engineering-architecture/idempotency-mechanisms/operation-idempotency/request-level-idempotency/idempotency-key-extraction/visitor-key-parsers.md) — Identifies and groups incoming requests by IP address, API key, or custom parameters using flexible request parsers.
- [Go Rate Limiting Libraries](https://awesome-repositories.com/f/software-engineering-architecture/request-throttling/rate-limiting/platform-specific-rate-limiters/go-rate-limiting-libraries.md) — Provides a Go package for enforcing maximum request thresholds and burst allowances over specific time windows.
- [Rate Limiting with Usage Monitoring](https://awesome-repositories.com/f/software-engineering-architecture/request-throttling/rate-limiting/rate-limiting-with-usage-monitoring.md) — Tracks rate limiting state by recording incoming client requests in memory to measure usage and enforce traffic limits. ([source](https://github.com/throttled/throttled/blob/master/README.md))
- [Traffic Burst Controllers](https://awesome-repositories.com/f/software-engineering-architecture/traffic-burst-controllers.md) — Managing traffic spikes and burst allowances on web endpoints to ensure stable service delivery.

### Part of an Awesome List

- [HTTP Middleware](https://awesome-repositories.com/f/awesome-lists/devtools/http-middleware.md) — Intercepts incoming web requests automatically to evaluate rate quotas before passing execution to underlying HTTP handlers.

### DevOps & Infrastructure

- [Request Rate Limiting](https://awesome-repositories.com/f/devops-infrastructure/request-rate-limiting.md) — Enforces HTTP request rate limits to manage maximum thresholds and burst allowances, preventing server resource exhaustion. ([source](https://github.com/throttled/throttled#readme))
- [Gateway Rate Limiters](https://awesome-repositories.com/f/devops-infrastructure/request-rate-limiting/gateway-rate-limiters.md) — Enforcing request rate quotas on web servers to control access frequency and prevent resource exhaustion.
- [Traffic Throttling](https://awesome-repositories.com/f/devops-infrastructure/traffic-management/traffic-throttling.md) — Includes a middleware component for throttling HTTP endpoints based on configurable request quotas and time windows.
- [Rate Limiters](https://awesome-repositories.com/f/devops-infrastructure/rate-limiters.md) — Provides a library for tracking and restricting incoming HTTP request rates to prevent server resource exhaustion and control traffic.
- [Quota Status Headers](https://awesome-repositories.com/f/devops-infrastructure/request-rate-limiting/quota-status-headers.md) — Appends standard response headers to inform clients about their current usage, remaining quota, and retry intervals.

### Data & Databases

- [Pluggable Storage Backends](https://awesome-repositories.com/f/data-databases/persistent-storage-backends/pluggable-storage-backends.md) — Delegates rate limit state persistence to interchangeable database drivers or in-memory caches through a common interface.
