Некоторые алгоритмы, которые используются для реализации Rate Limiting в современных веб-приложениях:
- Fixed Window Counter. 1 Отслеживает количество запросов, полученных в заданное время окно. 1 Если число запросов превышает лимит, последующие запросы отклоняются. 1
- Leaky Bucket. 13 Имитирует ведро с фиксированной ёмкостью. 1 Запросы добавляются в ведро с определённой скоростью. 1 Если ведро заполнено, входящие запросы отклоняются. 1
- Token Bucket. 14 Предоставляет более детальный контроль над ограничением скорости и может быть настроен под конкретные требования. 1 В его основе лежит концепция корзины, заполненной токенами. 5 Каждому вызывающему предоставляется корзина, содержащая токены, причём каждый запрос потребляет один токен. 5 Токены пополняются постоянно (например, каждую секунду), и если в корзине с максимальной ёмкостью заканчиваются токены, новые запросы отклоняются до тех пор, пока не будут добавлены новые токены. 5