Ratenbegrenzung ist ein wichtiges Konzept in der Webentwicklung. Es gewährleistet Serverstabilität, effiziente Ressourcenzuweisung und Schutz vor böswilligen Angriffen. In diesem Artikel befassen wir uns mit dem Wesen der Ratenbegrenzung, ihrer Bedeutung, verschiedenen Implementierungsmethoden und praktischen Beispielen, um ihre Funktionalität zu demonstrieren. Lasst uns gleich eintauchen?
Ratenbegrenzung ist eine Strategie, die verwendet wird, um die Menge eingehender Anfragen oder Datenverkehr an einen Webdienst oder einen Server zu steuern. Es hilft, Ihre Anwendungen vor Missbrauch zu schützen, sorgt für eine faire Ressourcenverteilung und sorgt für die Stabilität des Dienstes.
Hier sind einige der Gründe, warum Sie eine Ratenbegrenzung verwenden sollten ??
? Ich werde nicht einmal lügen, denn ich weiß nicht viel über die Algorithmen Token Bucket und Leaky Bucket, da ich sie für meine aktuellen Projekte nicht benötigt habe. Allerdings sind feste Fenster und Schiebefenster die häufigsten Typen, denen Sie begegnen werden. Beispielsweise verwendet GPT-4 von OpenAI eine feste Fensterratenbegrenzung mit abgestuften Grenzwerten – die erste Stufe erlaubt 500 Anfragen pro Minute. Dieser Ansatz kann zu einem Burst-Verkehr führen, da Benutzer möglicherweise ihr Limit erreichen, kurz bevor das Fenster zurückgesetzt wird.
Der Prozess umfasst normalerweise:
Da Sie nun ein grundlegendes Verständnis der Ratenbegrenzung und ihrer Funktionsweise haben, machen wir uns die Hände schmutzig, indem wir sie in einem Projekt implementieren, das wir erstellen werden.
Wir erstellen zwei Projekte, die die Ratenbegrenzung demonstrieren:
Erstellen Sie einen Ordner mit einem beliebigen Namen Ihrer Wahl und öffnen Sie ihn in VS-Code oder einem anderen Code-Editor, den Sie verwenden.
Erstellen Sie in dem von Ihnen erstellten Ordner zwei weitere Ordner mit den Namen „Frontend“ und „Backend“.
Danach gehen Sie in die Backend-Ordner und geben den Befehl npm init -y ein, um eine package.json-Datei zu initialisieren
Danach installieren Sie die folgenden npm-Pakete im Backend-Ordner ??
npm install express cors express-rate-limit npm install -D nodemon
Was diese bewirken:
Danach erstellen Sie eine index.js-Datei (Sie können diese beliebig verwenden), da wir sie zum Einrichten des Ratenbegrenzers verwenden werden.
Nachdem Sie diesen Code kopiert und eingefügt haben, werde ich ihn gleich erklären
const express = require("express"); const rateLimit = require("express-rate-limit"); const app = express(); // Set up rate limiter: 100 requests per 15 minutes const limiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 minutes max: 5, // Limit each IP to 5 requests per `window` (here, per 15 minutes) message: "Too many requests from this IP, please try again later.", }); // Apply the rate limiting middleware to all requests app.use(limiter); app.get("/api/data", (req, res) => { res.send("Welcome to the API!"); }); app.listen(5000, () => { console.log("Server running on http://localhost:5000"); });
Hier ist, was jeder Teil bewirkt:
Dann:
Wenn Benutzer innerhalb von 15 Minuten mehr als 100 Mal von derselben IP aus auf Ihre API zugreifen, erhalten sie die Fehlermeldung, anstatt auf die API zuzugreifen.
Da Sie nun wissen, wie es funktioniert, möchten wir den automatischen Neustart durch Hinzufügen zu package.json ??
aktivieren
{ "scripts": { "dev": "nodemon index.js" } }
Das ist alles für das Backend.
Es ist Zeit, das Frontend einzurichten.
npm install express cors express-rate-limit npm install -D nodemon
const express = require("express"); const rateLimit = require("express-rate-limit"); const app = express(); // Set up rate limiter: 100 requests per 15 minutes const limiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 minutes max: 5, // Limit each IP to 5 requests per `window` (here, per 15 minutes) message: "Too many requests from this IP, please try again later.", }); // Apply the rate limiting middleware to all requests app.use(limiter); app.get("/api/data", (req, res) => { res.send("Welcome to the API!"); }); app.listen(5000, () => { console.log("Server running on http://localhost:5000"); });
Hier ist, was passiert:
Das ist alles über das Beispiel einer GET-Anfrage. Fahren wir mit dem nächsten Beispiel fort
Für dieses Beispiel können Sie den Code des ersten Beispiels auskommentieren und diesen Code einfügen ??
{ "scripts": { "dev": "nodemon index.js" } }
Sie können sehen, dass die meisten Codes mit dem ersten Beispiel identisch sind, aber hier sind nur einige wichtige Unterschiede?
Fügen Sie diesen Code auch im Frontend ein
npm create vite@latest .
Hier stellen wir einfach über ein Formular eine Anfrage an den Server. Schauen wir uns an, wie sich dies vom GET-Beispiel unterscheidet:
Das Formular ermöglicht 5 Übermittlungen in 15 Minuten – danach sehen Benutzer die Fehlermeldung zur Ratenbegrenzung.
Okay Leute, herzlichen Glückwunsch, dass ihr am Ende dieses Artikels angelangt seid? Ich hoffe, Sie haben jetzt eine Vorstellung davon, wie die Ratenbegrenzung funktioniert und warum Sie sie bei Ihren Projekten verwenden sollten, insbesondere wenn Sie an größeren Projekten arbeiten, bei denen es um Geld geht. Wenn Sie Fragen haben, können Sie diese gerne im Kommentar stellen. Viel Spaß beim Codieren?
Das obige ist der detaillierte Inhalt vonDie Grundlagen der Ratenbegrenzung: Wie sie funktioniert und wie man sie nutzt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!