Heim > Betrieb und Instandhaltung > Nginx > So begrenzen Sie den Nginx-Fluss

So begrenzen Sie den Nginx-Fluss

(*-*)浩
Freigeben: 2019-06-18 11:06:09
Original
6560 Leute haben es durchsucht

Bei der Vermarktung von E-Commerce-Plattformen stoßen wir häufig auf große Verkehrsprobleme. Zusätzlich zur Verkehrsumleitung müssen wir möglicherweise auch schwarze und weiße Listen für Benutzer und eine Reputationsanalyse erstellen und dann entsprechende Verkehrsabfang- und Verkehrsbeschränkungen durchführen IP-Reputationsgewicht des Benutzers.

So begrenzen Sie den Nginx-Fluss

Nginx‘ eigenes Anforderungsbegrenzungsmodul ngx_http_limit_req_module und Flussbegrenzungsmodul ngx_stream_limit_conn_module basieren auf dem Token-Bucket-Algorithmus, der die Token-Rate bequem steuern und das aktuelle Limit anpassen kann. , um eine grundlegende Strombegrenzungssteuerung zu erreichen.

So begrenzen Sie den Nginx-Fluss

Die Idee des Algorithmus ist:

Token werden mit einer festen Rate generiert und im Token-Bucket zwischengespeichert;

Wenn der Token-Bucket voll ist, werden überschüssige Token verworfen.

Anfragen müssen den gleichen Anteil an Token verbrauchen, bevor sie verarbeitet werden können.

Wenn nicht genügend Token vorhanden sind, Die Anfrage wird im Cache verarbeitet.

Leaky-Bucket-Algorithmus:

So begrenzen Sie den Nginx-Fluss

Die Algorithmusidee ist:

Wasser ( Anforderung) wird von oben in den Eimer gegossen und fließt am Boden des Eimers heraus (aufbereitet);

Wasser, das zu spät zum Abfließen kommt, wird im Eimer (Puffer) gespeichert und fließt mit einem festen Wert ab Wenn der Eimer voll ist, läuft das Wasser über (entsorgt).

Der Kern dieses Algorithmus besteht darin, Anfragen zwischenzuspeichern, sie mit gleichmäßiger Geschwindigkeit zu verarbeiten und redundante Anfragen direkt zu verwerfen.

Im Vergleich zum Leaky-Bucket-Algorithmus besteht der Unterschied des Token-Bucket-Algorithmus darin, dass er nicht nur einen „Bucket“ hat, sondern auch eine Warteschlange. Dieser Bucket wird zum Speichern von Token und der Warteschlange verwendet wird zum Speichern von Anfragen verwendet.

In Bezug auf die Funktion besteht der offensichtlichste Unterschied zwischen den Leaky-Bucket- und Token-Bucket-Algorithmen darin, ob die Burst-Verarbeitung (Burst) zugelassen werden soll. Der Leaky-Bucket-Algorithmus kann die Echtzeitübertragungsrate (Verarbeitung) zwangsweise begrenzen Der Burst-Verkehr wird keiner zusätzlichen Verarbeitung unterzogen; der Token-Bucket-Algorithmus kann die durchschnittliche Übertragungsrate der Daten begrenzen und gleichzeitig einen bestimmten Grad an Burst-Übertragung zulassen.

Das auf der Anforderungsrate basierende Nginx-Ratenbegrenzungsmodul verwendet einen Leaky-Bucket-Algorithmus, der zwangsweise garantieren kann, dass die Echtzeit-Verarbeitungsgeschwindigkeit von Anforderungen den festgelegten Schwellenwert nicht überschreitet.

Die offizielle Version von Nginx verfügt über zwei Module zur Begrenzung von IP-Verbindungen und Parallelität:

limit_req_zone wird verwendet, um die Anzahl der Anfragen pro Zeiteinheit, also die Rate, zu begrenzen Grenze, Verwendung des Leaky-Bucket-Algorithmus „Leaky Bucket“.

limit_req_conn wird verwendet, um die Anzahl der gleichzeitigen Verbindungen zu begrenzen, d. h. das Parallelitätslimit.

Weitere technische Artikel zum Thema Nginx finden Sie in der Spalte Tutorials zur Nginx-Nutzung, um mehr zu erfahren!

Das obige ist der detaillierte Inhalt vonSo begrenzen Sie den Nginx-Fluss. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage