A tale of three rate limiters
It was an available service, it was a deluge of requests, it was an age of reliability, it was an age of DDoS and abuse, it was the epoch of uptime, it was the epoch of 429s – in short, it was rate limiting.
Sometimes our customers will accidentally send us absurd data volumes and request rates due to misconfigurations of our SDKs. Instead of building our system to handle an unbounded workload, we use rate limits to prevent these requests from affecting our service’s health. Implementing rate limits at scale across a fleet of servers is a distributed systems problem and like all distributed systems problems, there are trade-offs between approaches.
This has led to 3 distinct approaches to rate limits emerging at LaunchDarkly: the Centralized rate limiter, the Floodgate rate limiter and the Poisson rate limiter. Here, we’ll survey these 3 rate limiters and consider the approaches of each one.