"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Limitación de velocidad con ThrottleX

Limitación de velocidad con ThrottleX

Publicado el 2024-11-02
Navegar:940

Rate Limiting with ThrottleX

Enlaces rápidos:

  • Repositorio de GitHub
  • Documentación Wiki

Introducción:

¡Hola, entusiastas del código abierto y aficionados a Go! Regresé con una descripción general rápida de mi proyecto de código abierto, ThrottleX, un limitador de velocidad distribuido para API. Todavía soy bastante nuevo en este mundo del código abierto, ¡así que tus consejos siempre son bienvenidos! ?

ThrottleX está diseñado para ayudarlo a administrar el tráfico API de manera efectiva, manteniendo su sistema fluido y justo. Ya sea para prevenir abusos o manejar cargas elevadas, ThrottleX lo tiene cubierto. Exploremos algunos de los algoritmos de limitación de velocidad que hacen que ThrottleX sea poderoso. ?

¿Explicación de los algoritmos limitantes de velocidad?

ThrottleX viene con tres algoritmos principales para ayudarte a administrar el tráfico de tu API:

1. Límite de velocidad de ventana fija

Cómo funciona: Imagínese dividir el tiempo en intervalos fijos. Durante cada intervalo, permite una cantidad fija de solicitudes, digamos, 100 solicitudes por minuto. Una vez que se cierra la ventana, el contador se reinicia.

Caso de uso: Excelente para patrones de tráfico predecibles, pero tenga cuidado con el "problema de límites", donde muchas solicitudes cerca del final de la ventana pueden sobrepasar el límite de velocidad previsto.

2. Límite de velocidad de ventana deslizante

Cómo funciona: Es como un promedio móvil: en lugar de restablecerse por completo al final de cada ventana, el límite de tasa se "desliza" a lo largo del tiempo, lo que proporciona un control más fluido.

Caso de uso: Perfecto para evitar picos y distribuir solicitudes de manera más uniforme.

3. Límite de tasa de depósito de tokens

Cómo funciona: imagina un cubo que se llena de tokens a un ritmo constante. Las solicitudes consumen tokens y, si el depósito está vacío, las solicitudes se bloquean hasta que se vuelve a llenar.

Caso de uso: Ideal para permitir ráfagas repentinas de tráfico si se ahorran tokens.

Ejemplo de uso ?️

Aquí hay un ejemplo sencillo utilizando el limitador de velocidad de ventana fija:

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 



Salida esperada:

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

¿Qué sigue para ThrottleX? ?

  • Límite de velocidad priorizada: diferentes prioridades para diferentes usuarios.
  • Limitación de velocidad dinámica: ajusta los límites según la carga del servidor.
  • Límite de concurrencia: Administrar solicitudes simultáneas.

¡Estén atentos a estas futuras actualizaciones que harán que ThrottleX sea aún más poderoso!

¿Cómo puedes contribuir?

Todavía soy nuevo en el código abierto y me encantaría que fueras parte de este viaje. Las contribuciones siempre son bienvenidas, ya sean correcciones de errores, sugerencias o mejoras de documentación.

Consulta el repositorio: ThrottleX GitHub Repo y dale una estrella si lo encuentras útil. No dudes en abrir incidencias o realizar solicitudes: ¡todo ayuda!

Pensamientos finales

ThrottleX es mi intento de hacer que la limitación de velocidad API sea más accesible y eficiente. ¡Hagámoslo divertido (y menos doloroso)! ?

Declaración de liberación Este artículo se reproduce en: https://dev.to/neelp03/rate-limiting-with-throttlex-26df?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3