advanced
Rate limiter
Choose token bucket, leaky bucket, fixed or sliding windows, distributed counters, and failure-safe behavior. Объясняйте API, data model, bottlenecks и trade-offs.
Rate limiter защищает API от abuse и квотирует использование. Алгоритмы: token bucket (всплески), leaky bucket (ровный выход), fixed window и sliding window для точности. В распределённой среде — Redis с атомарным INCR и TTL или централизованный сервис.
Ответ 429 с Retry-After. Fail-open или fail-closed при падении store — payment часто closed; read может open с логированием.
На интервью: token bucket 100 req/min на пользователя, ключи Redis и fail-open/closed для промпта.
Типовые ошибки: гонки без атомарности; счётчики на инстансе за LB бесполезны; clock skew ломает границы окна.
Чеклист:
- Алгоритм под допустимые всплески.
- Централизованный store для distributed limit.
- Ясный 429 и Retry-After.
- Поведение при недоступности limiter.