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.