"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Limitação de taxa com ThrottleX

Limitação de taxa com ThrottleX

Publicado em 2024-11-02
Navegar:404

Rate Limiting with ThrottleX

Links rápidos:

  • Repositório GitHub
  • Documentação Wiki

Introdução:

Olá, entusiastas de código aberto e aficionados do Go! Estou de volta com uma rápida visão geral do meu projeto de código aberto, ThrottleX, um limitador de taxa distribuída para APIs. Ainda sou muito novo neste mundo de código aberto, então seus conselhos são sempre bem-vindos! ?

ThrottleX foi desenvolvido para ajudá-lo a gerenciar o tráfego de API de maneira eficaz, mantendo seu sistema tranquilo e justo. Seja para evitar abusos ou lidar com cargas elevadas, o ThrottleX tem o que você precisa. Vamos explorar alguns dos algoritmos de limitação de taxa que tornam o ThrottleX poderoso. ?

Algoritmos de limitação de taxa explicados ?‍?

ThrottleX vem com três algoritmos principais para ajudá-lo a gerenciar seu tráfego de API:

1. Limite de taxa de janela fixa

Como funciona: Imagine dividir o tempo em intervalos fixos. Durante cada intervalo, você permite um número fixo de solicitações — digamos, 100 solicitações por minuto. Assim que a janela fecha, o contador é reiniciado.

Caso de uso: ótimo para padrões de tráfego previsíveis, mas tome cuidado com o "problema de limite", onde muitas solicitações próximas ao final da janela podem contornar o limite de taxa pretendido.

2. Limitação de taxa de janela deslizante

Como funciona: é como uma média móvel — em vez de ser redefinido completamente no final de cada janela, o limite de taxa "desliza" ao longo do tempo, proporcionando um controle mais suave.

Caso de uso: Perfeito para evitar picos e distribuir solicitações de maneira mais uniforme.

3. Limitação de taxa de bucket de token

Como funciona: imagine um balde que se enche de tokens em uma taxa constante. As solicitações consomem tokens e, se o bucket estiver vazio, as solicitações serão bloqueadas até que sejam recarregadas.

Caso de uso: Ideal para permitir picos repentinos de tráfego se os tokens forem salvos.

Exemplo de uso?️

Aqui está um exemplo simples usando o limitador de taxa de janela fixa:

package main

import (
    "github.com/neelp03/throttlex/ratelimiter"
    "github.com/neelp03/throttlex/store"
    "time"
    "fmt"
)

func main() {
    // Initialize an in-memory store and a Fixed Window rate limiter
    memStore := store.NewMemoryStore()
    limiter, err := ratelimiter.NewFixedWindowLimiter(memStore, 10, time.Minute)
    if err != nil {
        fmt.Println("Failed to create limiter:", err)
        return
    }

    // Simulate API requests
    key := "user1"
    for i := 0; i 



Resultado esperado:

Request 1 allowed
Request 2 allowed
... (up to 10 allowed)
Request 11 blocked
Request 12 blocked
... (up to 15 blocked)

O que vem por aí para o ThrottleX? ?

  • Limite de taxa priorizada: prioridades diferentes para usuários diferentes.
  • Limite de taxa dinâmica: ajuste os limites com base na carga do servidor.
  • Limite de simultaneidade: Gerencie solicitações simultâneas.

Fique atento a essas atualizações futuras que tornarão o ThrottleX ainda mais poderoso!

Como você pode contribuir?

Ainda sou novo no código aberto e adoraria que você fizesse parte dessa jornada! Contribuições são sempre bem-vindas – sejam correções de bugs, sugestões ou melhorias na documentação.

Confira o repositório: ThrottleX GitHub Repo e dê uma estrela se achar útil. Sinta-se à vontade para abrir problemas ou obter solicitações - tudo ajuda!

Considerações Finais

ThrottleX é minha tentativa de tornar a limitação de taxa de API mais acessível e eficiente. Vamos tornar isso divertido (e menos doloroso)! ?

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/neelp03/rate-limiting-with-throttlex-26df?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3