tgoop.com/go_interview_lib/417
Create:
Last Update:
Last Update:
💬 Как реализовать rate limiter на Go?
Rate limiter — это механизм для контроля частоты доступа к определенному ресурсу. В Go для его реализации можно использовать пакет rate
из стандартной библиотеки.
Один из распространенных подходов к ограничению скорости — использование алгоритма token bucket, который позволяет добавлять фиксированное количество токенов в пакет с фиксированной скоростью. Когда токен извлекается из бакета, скорость добавления токенов временно уменьшается.
Пакет rate
предоставляет функцию NewLimiter()
, которую можно использовать для создания нового token bucket rate limiter. Например:
limiter := rate.NewLimiter(rate.Limit(100), 100)
Затем можно использовать метод
limiter.Allow()
, чтобы проверить, доступен ли токен перед выполнением задачи:
if limiter.Allow() {
// выполнение задачи
} else {
// превышен лимит скорости
}
В качестве альтернативы можно использовать метод
limiter.Wait()
, чтобы подождать, пока токен станет доступен:
limiter.Wait()
// выполнение задачи
Также можно использовать метод
limiter.Reserve()
, чтобы зарезервировать токен заранее и выполнить задачу позже.BY Библиотека Go для собеса | вопросы с собеседований
Share with your friend now:
tgoop.com/go_interview_lib/417