Перейдите на Go
через реальные проекты

Пишите Go-код по шагам, видите понятные требования и получаете обратную связь, чтобы двигаться дальше без лишних догадок.

17 проектов
Бесплатный старт
Проверка по критериям
Помесячная оплата

API Gateway

Пройдено 13 из 26

Помощь

Rate Limiting — алгоритм

Представьте: ваш API стал популярным. Один клиент решает скачать все книги за раз — 1000 запросов в секунду. Сервер захлёбывается, остальные пользователи видят ошибки.

Rate limiting — это защита: «не более N запросов за период времени».

Ключевая концепция: Fixed Window Counter

Полезные материалы

Rate Limiting Algorithms — обзор алгоритмов

Redis INCR — атомарный инкремент

Требования

2 из 3 ✓
Структура RateLimiter — содержит нужные поля
Метод Allow() — использует INCR + EXPIRE
EXPIRE при первом запросе — не найден вызов при count == 1

Вызов EXPIRE нужен при count == 1, чтобы ключ не остался в Redis навсегда.

Что-то непонятно в этом этапе?

Помощь по этапу объяснит концепцию на примере задачи

Как это работает

Проверка по критериям

После отправки решения видно, что принято, что не прошло и как улучшить результат.

Rate Limiting — алгоритм

2 из 3 ✓
Структура RateLimiter — содержит нужные поля
Метод Allow() — INCR + EXPIRE
EXPIRE при первом запросе — не найден

Вызов EXPIRE нужен при count == 1, чтобы ключ не остался в Redis навсегда. Без него окно rate limiting не сбрасывается.

Полезные материалы

Rate Limiting Algorithms — обзор алгоритмов

Redis INCR — атомарный инкремент

Материалы и помощь в контексте

Концепции, ссылки и пояснения доступны рядом с задачей.

Помощь по этапу

Задайте вопрос по этапу «Rate Limiting — алгоритм». Разбор объяснит концепцию, но решать задание за вас не будет.

Вы спросили:

«Зачем нужен EXPIRE при count == 1

EXPIRE задаёт время жизни ключа в Redis. Вызывать его нужно именно при первом запросе, чтобы счётчик автоматически сбросился через заданный период.

Если не вызвать EXPIRE, ключ останется в Redis навсегда — окно rate limiting никогда не сбросится.

Например: чем bufio.Scanner отличается от os.ReadFile?

Спросить

Ревью ментора — если нужен разбор глубже

Ревью от реального разработчика: код, архитектура, стиль, логика. Доступ в отдельном тарифе.

📝 Ревью ментораНа доработку

Логика INCR + EXPIRE корректна, структуры чистые. Но посмотри на return:

return &Result{
Allowed: count <= int64(limit),
Remaining: max(0, limit-int(count)),
}, nil

ResetAt не заполняется в Result — клиент не узнает, когда лимит сбросится. Без этого не получится показать «попробуйте через 45 сек» — клиент будет ретраить вслепую.

Начать бесплатно

Вводный проект · Без регистрации

Выберите курс по уровню, времени и цели

Срок и нагрузка — ориентиры: можно пройти быстрее или двигаться спокойнее.

1
Срок
6-8 недель
Нагрузка
4-6 ч/нед
Проекты
5 проектов
GoТипы данныхСтруктурыФайлыШифрованиеTUI
Проекты
  • Валидатор карт
  • Файловый органайзер
  • Менеджер паролей
  • Архиватор
  • КиберСнейк
Перейти к курсу
2
Срок
5-7 недель
Нагрузка
4-6 ч/нед
Проекты
4 проекта
3
Срок
6-8 недель
Нагрузка
5-7 ч/нед
Проекты
4 проекта
4
Срок
7-9 недель
Нагрузка
5-8 ч/нед
Проекты
4 проекта

Go-разработчик

17 проектов в портфолио · Готовность к коммерческой разработке

Платите помесячно, когда готовы продолжать

Без крупной оплаты сразу: платите по мере обучения. Точные тарифы и доступ — внутри выбранного курса.

Самостоятельно

от 2 500 ₽/мес
  • Все материалы и задания курса
  • Проверка каждого требования
  • Материалы и помощь в контексте
  • Гибкий темп без дедлайнов
Выбрать курс
Опционально

С ревью ментора

от 4 500 ₽/мес
  • Персональное ревью кода от ментора
  • Рекомендации по архитектуре и стилю
  • Разбор решений, которые трудно оценить самому
  • Все материалы и задания курса
  • Проверка каждого требования
  • Материалы и помощь в контексте
  • Гибкий темп без дедлайнов
Смотреть тарифы
Пробная часть в каждом проекте
Оплата помесячно
Тарифы внутри курса

Разработчики о платформе

Из интервью со студентами

«Благодаря вам у меня гитхаб сильнее 90% кандидатов на стажировку.»
О карьере
«Никто никогда не говорил как правильно, никто не направлял. Обратная связь — самое важное. Ревью не для галочки, фидбэк полный.»
О ревью
«Платформа мне правда помогает — то что всё происходит на практике, оно прям ровным кирпичиком рядом в голове укладывается. Раньше читал теорию и казалось, что понял, но по факту этого не было.»
О практике
«На работе похожая история — переезд на микросервисы. Курс отлично помогает, лучше начал понимать что такое монолит и чистая архитектура.»
О работе

Частые вопросы

Нужен ли опыт в Go?
Нет, опыт в Go не нужен — курсы начинаются с основ языка. Но важен опыт программирования на любом другом языке: вы уже понимаете переменные, функции, циклы и базовые структуры данных.
Как проходит обучение на платформе?
Вы проходите проекты на платформе, где каждый проект разбит на понятные этапы. На каждом этапе — задача, материалы и требования. Код пишете локально, пушите в GitHub — каждое требование проверяется автоматически.
Можно ли попробовать платформу бесплатно?
Пройдите бесплатный вводный мини-проект «Введение в Go» без регистрации. В курсах тоже есть пробная часть: количество бесплатных этапов зависит от проекта.
Сколько времени занимает обучение?
На карточках курсов указан ориентир по сроку и нагрузке в неделю. Это не дедлайн: можно пройти быстрее или двигаться спокойнее.
Нужно ли платить сразу за весь курс?
Нет. Оплата помесячная: вы платите по мере обучения и выбираете конкретный курс, который хотите проходить.
Чем отличается формат с ревью?
В самостоятельном формате вы проходите материалы и проверку по критериям. В формате с ревью инженер дополнительно разбирает код, архитектуру и стиль.

Остались вопросы? Напишите нам

Начните с проекта, не с обещаний

Откройте вводный проект бесплатно или выберите курс под вашу цель и темп.