Три алгоритма решают одну задачу по-разному — и выбор влияет на то, как ваш API будет вести себя именно во время всплесков нагрузки.
Простейший вариант: счётчик обнуляется в начале каждого интервала (например, каждую минуту). Проблема — на границе окон возможен двойной всплеск: клиент может отправить лимит запросов в конце одной минуты и снова весь лимит в начале следующей.
Учитывает запросы за скользящий интервал, а не за фиксированные границы — сглаживает проблему двойного всплеска ценой немного большей вычислительной сложности. Это алгоритм, который использует Hexly по умолчанию.
Каждому клиенту выделяется «ведро» токенов, которое пополняется с постоянной скоростью. Запрос тратит токен; если токенов нет — запрос отклоняется. Хорошо подходит, когда нужно разрешить контролируемые всплески (burst) поверх средней скорости.
Если API используется в основном равномерно (например, фоновая синхронизация) — подойдёт sliding window. Если трафик по природе всплесковый (пользователь кликает несколько раз подряд) — token bucket с настроенным burst даёт лучший пользовательский опыт без ослабления защиты от злоупотреблений.
Начните с бесплатного плана и подключите первый маршрут за 5 минут.