shellhub icon indicating copy to clipboard operation
shellhub copied to clipboard

feat(api): implement namespace-level rate limiting with token bucket

Open henrybarreto opened this issue 4 months ago • 0 comments

Currently, Nginx rate limiting provides global protection but lacks isolation between namespaces. When multiple namespaces make API requests simultaneously, they compete for the same global limit.

A token bucket implementation at the application level gives each namespace its own rate limit state. This means heavy traffic in one namespace won't affect others, allowing each to handle its own request patterns independently.

While Nginx's leaky bucket drains requests at a fixed rate, Go's token bucket works differently: it stores tokens in a burst buffer, consuming them when new requests arrive and replenishing them at the defined rate.

The idea of combining Nginx and a token bucket provides effective multi-layer protection: global traffic management at the edge, while maintaining precise per-namespace control at the application level.

henrybarreto avatar Aug 25 '25 11:08 henrybarreto