Quick Links:
Einführung:
Hallo, Open-Source-Enthusiasten und Go-Fans! Ich bin zurück mit einem kurzen Überblick über mein Open-Source-Projekt ThrottleX, einen verteilten Ratenbegrenzer für APIs. Ich bin noch ziemlich neu in dieser Open-Source-Welt, daher sind Ihre Ratschläge immer willkommen! ?
ThrottleX wurde entwickelt, um Ihnen dabei zu helfen, den API-Verkehr effektiv zu verwalten und Ihr System reibungslos und fair zu halten. Ob es darum geht, Missbrauch zu verhindern oder hohe Belastungen zu bewältigen, ThrottleX ist für Sie da. Lassen Sie uns einige der Algorithmen zur Ratenbegrenzung untersuchen, die ThrottleX leistungsstark machen. ?
ThrottleX ist vollgepackt mit drei Kernalgorithmen, die Ihnen bei der Verwaltung Ihres API-Verkehrs helfen:
Wie es funktioniert: Stellen Sie sich vor, Sie teilen die Zeit in feste Intervalle ein. Während jedes Intervalls lassen Sie eine feste Anzahl von Anfragen zu – beispielsweise 100 Anfragen pro Minute. Sobald das Fenster geschlossen wird, wird der Zähler zurückgesetzt.
Anwendungsfall: Ideal für vorhersehbare Verkehrsmuster, aber seien Sie vorsichtig beim „Grenzproblem“, bei dem viele Anfragen am Ende des Fensters die beabsichtigte Ratenbegrenzung umgehen können.
Wie es funktioniert: Es ist wie ein gleitender Durchschnitt – anstatt sich am Ende jedes Fensters vollständig zurückzusetzen, „gleitet“ die Ratenbegrenzung über die Zeit und sorgt so für eine reibungslosere Steuerung.
Anwendungsfall: Perfekt, um Spitzen zu vermeiden und Anfragen gleichmäßiger zu verteilen.
Wie es funktioniert: Stellen Sie sich einen Eimer vor, der sich gleichmäßig mit Token füllt. Anfragen verbrauchen Token, und wenn der Bucket leer ist, werden Anfragen blockiert, bis er wieder aufgefüllt wird.
Anwendungsfall: Ideal, um plötzliche Verkehrsstöße zuzulassen, wenn Token gespart werden.
Hier ist ein einfaches Beispiel für die Verwendung des Ratenbegrenzers mit festem Fenster:
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; iErwartete Ausgabe:
Request 1 allowed Request 2 allowed ... (up to 10 allowed) Request 11 blocked Request 12 blocked ... (up to 15 blocked)Was kommt als nächstes für ThrottleX? ?
Seien Sie gespannt auf diese zukünftigen Updates, die ThrottleX noch leistungsfähiger machen!
Ich bin noch ein Neuling im Bereich Open Source und würde mich freuen, wenn Sie Teil dieser Reise sind! Beiträge sind immer willkommen – sei es Fehlerbehebungen, Vorschläge oder Dokumentationsverbesserungen.
Schauen Sie sich das Repo an: ThrottleX GitHub Repo und geben Sie ihm einen Stern, wenn Sie es nützlich finden. Fühlen Sie sich frei, Probleme zu eröffnen oder Anfragen zu stellen – jedes bisschen hilft!
Abschließende Gedanken
ThrottleX ist mein Versuch, die API-Ratenbegrenzung zugänglicher und effizienter zu machen. Sorgen wir dafür, dass es Spaß macht (und weniger schmerzt)! ?
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3