Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: ratelimit, tokenbucket

Как реализовать rate limiter для API на уровне приложения?

Проверяет понимание защиты сервисов от перегрузки.

Короткий ответ

Чаще всего используется алгоритм Token Bucket. Клиент может выполнять запросы, пока есть доступные токены.

Длинный ответ

Rate limiting нужен чтобы:

  • защищать сервис;

  • ограничивать злоупотребления;

  • предотвращать перегрузку.

Самый популярный алгоритм - Token Bucket.

Идея:

  • есть ведро токенов;

  • токены постепенно добавляются;

  • каждый запрос потребляет токен.

Если токенов нет:

  • запрос отклоняется.

Пример через пакет:

import "golang.org/x/time/rate"

limiter := rate.NewLimiter(10, 20)

Здесь:

  • 10 запросов в секунду;

  • burst до 20 запросов.

    В распределённой системе лимитер часто хранится в Redis.

    Вывод:

    Rate limiter является одним из базовых механизмов защиты API.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    8

Навыки

  • Golang

    Golang

Ключевые слова

#ratelimit

#tokenbucket

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.