Алгоритми
- Fixed window — N запитів за фіксований інтервал (наприклад, 100 за хвилину). Простий, але вразливий до пікових атак на межі вікон
- Sliding window — ковзне вікно, рівномірніший розподіл
- Token bucket — клієнт отримує «жетони» з фіксованою швидкістю і витрачає по одному на запит. Допускає короткі burst-и
- Leaky bucket — запити обробляються рівномірно, незалежно від burst-ів
Реалізація
Зберігайте лічильники в Redis — він підтримує атомарний інкремент і TTL. HTTP-відповідь при перевищенні ліміту: 429 Too Many Requests із заголовком Retry-After.