Rate limiting контролирует количество запросов, которые клиент или пользователь может сделать к системе в течение определенного временного окна. Это защищает от злоупотреблений, DDoS-атак и исчерпания ресурсов, обеспечивая справедливое использование и стабильность системы.
Счетчик отслеживает запросы для каждого клиента, обычно идентифицируемого по IP-адресу или API-ключу. Когда счетчик превышает допустимый порог в течение временного окна, дальнейшие запросы отклоняются — обычно с ответом HTTP 429 Too Many Requests.
Client → API Gateway → Load Balancer → Application Layer → Database
↑ ↑ ↑
[Rate Limit] [Rate Limit] [Rate Limit]
В распределённых системах используется общее хранилище вроде Redis для синхронизации счётчиков между несколькими узлами, что предотвращает обход лимитов клиентами путём попадания на разные серверы. Это обеспечивает единообразное применение лимитов в масштабе.
Алгоритм Token Bucket позволяет контролируемые всплески трафика до размера бакета, в то время как Leaky Bucket сглаживает трафик, обрабатывая запросы с постоянной скоростью независимо от паттерна их поступления.
Новый — ещё не проверен сообществом
Вы