Conceito do balde de tokens
Limite as taxas de solicitações
Conceito do balde de tokens é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
Por que limitar a taxa
Limitar a taxa restringe quantas operações acontecem por unidade de tempo. Isso protege APIs contra abuso, respeita as cotas de terceiros e mantém os sistemas estáveis sob carga.
- Evita sobrecarga
- Impõe um uso justo
- Respeita os limites upstream
O modelo do balde de tokens
Imagine um balde que armazena tokens. Cada solicitação precisa retirar um token para prosseguir. Os tokens são repostos a uma taxa constante. Se o balde estiver vazio, a solicitação esperará ou será rejeitada.
Taxa e rajada
Dois parâmetros definem um balde de tokens: a taxa (tokens adicionados por segundo) e a rajada (capacidade do balde). A rajada permite picos curtos acima da taxa constante.
Reposição ao longo do tempo
Se a taxa for de 5 tokens por segundo, aproximadamente um token aparecerá a cada 200 milissegundos. O balde nunca armazena mais tokens do que sua capacidade de rajada, portanto a capacidade não utilizada não se acumula para sempre.
Permitindo rajadas
Uma rajada de 10 significa que até 10 solicitações podem ser executadas instantaneamente se o balde estiver cheio. Depois disso, as solicitações são espaçadas na taxa constante. Isso equilibra a capacidade de resposta com o controle.
Uma verificação simples baseada em tempo
Você pode aproximar a limitação de taxa com um ticker que libera a permissão em intervalos fixos. Cada solicitação espera pelo próximo sinal.
ticker := time.NewTicker(200 * time.Millisecond)
defer ticker.Stop()
for i := 0; i < 3; i++ {
<-ticker.C
fmt.Println("request", i)
}Balde de tokens versus balde com vazamento
Um balde com vazamento escoa a uma taxa constante e suaviza completamente a saída, proibindo rajadas. Um balde de tokens permite rajadas de até sua capacidade. O balde de tokens é mais comum para limites de APIs.
Uma simulação mínima de balde
Este exemplo executável simula um balde de tokens com capacidade 3, reabastecido a cada 100 ms, mostrando quais solicitações são permitidas.
package main
import (
"fmt"
"time"
)
func main() {
tokens := 3
last := time.Now()
rate := 100 * time.Millisecond
for i := 0; i < 6; i++ {
elapsed := time.Since(last)
refill := int(elapsed / rate)
if refill > 0 {
tokens += refill
if tokens > 3 {
tokens = 3
}
last = time.Now()
}
if tokens > 0 {
tokens--
fmt.Println("request", i, "allowed")
} else {
fmt.Println("request", i, "rejected")
}
time.Sleep(40 * time.Millisecond)
}
}Allow versus Wait versus Reserve
Os limitadores geralmente oferecem três comportamentos: Allow retorna imediatamente true ou false, Wait bloqueia até que um token esteja disponível e Reserve informa quanto tempo esperar. Escolha de acordo com a possibilidade de bloquear.
Onde ficam os limites
Os limites de taxa podem ser por cliente, por endpoint ou globais. Um mapa de limitadores indexado pelo IP do cliente impõe cotas por cliente, enquanto um único limitador compartilhado restringe o fluxo total.
Escolhendo os parâmetros
Ajuste sua taxa à cota do serviço downstream. Se uma API permitir 600 solicitações por minuto, defina a taxa como 10 por segundo. Defina a rajada para absorver os picos esperados sem exceder a média.
Verificação rápida
Avalie seu entendimento sobre o balde de tokens.
Recapitulação
Você aprendeu o conceito do balde de tokens:
- Os tokens são consumidos por solicitação e repostos a uma taxa definida
- A rajada é a capacidade do balde para lidar com picos
- O balde de tokens permite rajadas; o balde com vazamento não
- Allow, Wait e Reserve são as APIs comuns
Aprenda Go com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 51
- Aulas
- 203
Perguntas Frequentes
A aula “Conceito do balde de tokens” é grátis?
Sim — o texto completo de “Conceito do balde de tokens” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Conceito do balde de tokens”?
Limite as taxas de solicitações Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Conceito do balde de tokens”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Conceito do balde de tokens
- golang.org/x/time/rate
- Limitação de goroutines
- Recuo e nova tentativa