Token bucket rate limiting



Один из алгоритмов для ограничения числа входящих запросов. На данный момент используется во многих системах, например, AWS.



Принцип работы:



Есть ограниченный набор токенов, наличие токена = право исполнить запрос.



Когда приходит входящий запрос, сначала проверяем, есть ли свободный токен, если есть - забираем его и исполняем запрос, если нет - отдаем 429.



И поскольку токены назад не возвращаются, их надо как-то восстанавливать. Этим занимается фоновый процесс, который по крону (обычно раз в секунду) восстанавливает число свободных токенов до максимума.