19 проектов для портфолио с персональным ревью от опытных инженеров
Вводный проект из 17 этапов · Без регистрации
Пройдено 13 из 26
Представьте: ваш API стал популярным. Один клиент решает скачать все книги за раз — 1000 запросов в секунду. Сервер захлёбывается, остальные пользователи видят ошибки. Или хуже — злоумышленник запускает DDoS-атаку.
Rate limiting — это защита: «не более N запросов за период времени». Как турникет в метро: пропускает по одному, не даёт толпе хлынуть разом.
Ключевая концепция: Fixed Window Counter
Существует несколько алгоритмов rate limiting (Token Bucket, Sliding Window, Leaky Bucket). Мы используем Fixed Window Counter — самый простой для понимания и реализации.
Как работает:
Rate Limiting Algorithms — обзор алгоритмов
Redis INCR — атомарный инкремент
internal/ratelimit/ratelimit.goRateLimiter содержит redis.Client и windowAllow() использует INCR + EXPIREEXPIRE устанавливается только при первом запросе (count == 1)Три шага от задачи до готового навыка
API Gateway, CLI-утилиты, микросервисы — 19 проектов для портфолио, а не для галочки
Материалы, задача и чёткие критерии завершения на каждом этапе. Не нужно гадать, что делать дальше
Критерии завершения
internal/ratelimit/ratelimit.goRateLimiter содержит redis.Client и windowAllow() использует INCR + EXPIREEXPIRE устанавливается только при первом запросе (count == 1)Полезные материалы
Rate Limiting Algorithms — обзор алгоритмов
Redis INCR — атомарный инкремент
Опытный инженер проводит код-ревью, находит слабые места и показывает, как сделать лучше
Логика INCR + EXPIRE корректна, структуры чистые. Но посмотри на return:
ResetAt не заполняется в Result — клиент не узнает, когда лимит сбросится. Без этого не получится показать «попробуйте через 45 сек» — клиент будет ретраить вслепую.
От основ до продакшн-разработки за 4 курса
19 проектов в портфолио · Готовность к коммерческой разработке
Подписка на один курс · Цена зависит от курса · Отменяйте в любой момент
Первые 3 этапа каждого проекта — бесплатно
Остались вопросы? Напишите нам