Liens rapides :
Introduction:
Salut, passionnés d'open source et aficionados de Go ! Je suis de retour avec un rapide aperçu de mon projet open source, ThrottleX, un limiteur de débit distribué pour les API. Je suis encore assez nouveau dans ce monde open source, donc vos conseils sont toujours les bienvenus ! ?
ThrottleX est conçu pour vous aider à gérer efficacement le trafic API, en gardant votre système fluide et équitable. Qu'il s'agisse de prévenir les abus ou de gérer une charge élevée, ThrottleX est là pour vous. Explorons certains des algorithmes de limitation de débit qui rendent ThrottleX puissant. ?
ThrottleX est livré avec trois algorithmes de base pour vous aider à gérer le trafic de votre API :
Comment ça marche : Imaginez diviser le temps en intervalles fixes. Au cours de chaque intervalle, vous autorisez un nombre fixe de requêtes, par exemple 100 requêtes par minute. Une fois la fenêtre fermée, le compteur se réinitialise.
Cas d'utilisation : idéal pour les modèles de trafic prévisibles, mais méfiez-vous du « problème de limite », où de nombreuses requêtes proches de la fin de la fenêtre peuvent contourner la limite de débit prévue.
Comment ça marche : c'est comme une moyenne mobile : au lieu de se réinitialiser complètement à la fin de chaque fenêtre, la limite de débit « glisse » dans le temps, offrant un contrôle plus fluide.
Cas d'utilisation : parfait pour éviter les pics et répartir les demandes plus uniformément.
Comment ça marche : Imaginez un seau qui se remplit de jetons à un rythme constant. Les requêtes consomment des jetons, et si le compartiment est vide, les requêtes sont bloquées jusqu'à ce qu'il se remplisse.
Cas d'utilisation : idéal pour permettre des rafales soudaines de trafic si les jetons sont enregistrés.
Voici un exemple simple utilisant le limiteur de débit à fenêtre fixe :
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; iRésultat attendu :
Request 1 allowed Request 2 allowed ... (up to 10 allowed) Request 11 blocked Request 12 blocked ... (up to 15 blocked)Quelle est la prochaine étape pour ThrottleX ? ?
Restez à l'écoute de ces futures mises à jour qui rendront ThrottleX encore plus puissant !
Je suis encore nouveau dans l'open source et j'aimerais que vous fassiez partie de ce voyage ! Les contributions sont toujours les bienvenues, qu'il s'agisse de corrections de bugs, de suggestions ou d'améliorations de la documentation.
Consultez le dépôt : ThrottleX GitHub Repo et donnez-lui une étoile si vous le trouvez utile. N'hésitez pas à ouvrir des tickets ou à tirer des demandes : chaque geste compte !
Réflexions finales
ThrottleX est ma tentative de rendre la limitation du débit de l'API plus accessible et plus efficace. Rendons cela amusant (et moins pénible) ! ?
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3