GOLANG_BOOKS Telegram 1017
🚦 Рейтлимитинг в Go: Token Bucket и Leaky Bucket — просто и понятно

📌 Хочешь ограничить количество запросов в секунду к API или ресурсу? В статье [на dev.to](https://dev.to/jones_charles_ad50858dbc0/implementing-rate-limiters-in-go-token-bucket-and-leaky-bucket-made-simple-5162) показано, как реализовать два самых популярных алгоритма рейтлимитинга:

🪙 Token Bucket
- Каждому клиенту выделяется "ведро" с токенами.
- Запросы забирают по 1 токену.
- Токены добавляются с фиксированной скоростью.
- Если токенов нет — запрос блокируется или отклоняется.

Пример на Go:

bucket := make(chan struct{}, 5) // max 5 токенов
go func() {
for range time.Tick(200 * time.Millisecond) {
select {
case bucket <- struct{}{}:
default:
}
}
}()


💧 Leaky Bucket
- Все запросы ставятся в очередь (как в воронке).
- Обработка идёт с фиксированной скоростью, капля за каплей.
- Если очередь переполнена — лишние запросы отбрасываются.

Пример на Go:

queue := make(chan struct{}, 5)
go func() {
for {
<-queue
time.Sleep(200 * time.Millisecond)
fmt.Println("Processed request")
}
}()


📊 Выбор зависит от задачи:
- Token Bucket — гибкий контроль, хорошо работает с "всплесками" трафика.
- Leaky Bucket — строгая равномерность, предотвращает перегрузки.

🔗 Полная статья с пояснениями и кодом:
https://dev.to/jones_charles_ad50858dbc0/implementing-rate-limiters-in-go-token-bucket-and-leaky-bucket-made-simple-5162
👍105



tgoop.com/golang_books/1017
Create:
Last Update:

🚦 Рейтлимитинг в Go: Token Bucket и Leaky Bucket — просто и понятно

📌 Хочешь ограничить количество запросов в секунду к API или ресурсу? В статье [на dev.to](https://dev.to/jones_charles_ad50858dbc0/implementing-rate-limiters-in-go-token-bucket-and-leaky-bucket-made-simple-5162) показано, как реализовать два самых популярных алгоритма рейтлимитинга:

🪙 Token Bucket
- Каждому клиенту выделяется "ведро" с токенами.
- Запросы забирают по 1 токену.
- Токены добавляются с фиксированной скоростью.
- Если токенов нет — запрос блокируется или отклоняется.

Пример на Go:


bucket := make(chan struct{}, 5) // max 5 токенов
go func() {
for range time.Tick(200 * time.Millisecond) {
select {
case bucket <- struct{}{}:
default:
}
}
}()


💧 Leaky Bucket
- Все запросы ставятся в очередь (как в воронке).
- Обработка идёт с фиксированной скоростью, капля за каплей.
- Если очередь переполнена — лишние запросы отбрасываются.

Пример на Go:

queue := make(chan struct{}, 5)
go func() {
for {
<-queue
time.Sleep(200 * time.Millisecond)
fmt.Println("Processed request")
}
}()


📊 Выбор зависит от задачи:
- Token Bucket — гибкий контроль, хорошо работает с "всплесками" трафика.
- Leaky Bucket — строгая равномерность, предотвращает перегрузки.

🔗 Полная статья с пояснениями и кодом:
https://dev.to/jones_charles_ad50858dbc0/implementing-rate-limiters-in-go-token-bucket-and-leaky-bucket-made-simple-5162

BY Golang Books




Share with your friend now:
tgoop.com/golang_books/1017

View MORE
Open in Telegram


Telegram News

Date: |

Activate up to 20 bots On Tuesday, some local media outlets included Sing Tao Daily cited sources as saying the Hong Kong government was considering restricting access to Telegram. Privacy Commissioner for Personal Data Ada Chung told to the Legislative Council on Monday that government officials, police and lawmakers remain the targets of “doxxing” despite a privacy law amendment last year that criminalised the malicious disclosure of personal information. The group’s featured image is of a Pepe frog yelling, often referred to as the “REEEEEEE” meme. Pepe the Frog was created back in 2005 by Matt Furie and has since become an internet symbol for meme culture and “degen” culture. Clear How to Create a Private or Public Channel on Telegram?
from us


Telegram Golang Books
FROM American