Heim Datenbank Redis Detaillierte Einführung in die Konzepte, Prinzipien und Nutzungsszenarien von Nachrichtenwarteschlangen (mit Fällen)

Detaillierte Einführung in die Konzepte, Prinzipien und Nutzungsszenarien von Nachrichtenwarteschlangen (mit Fällen)

Nov 23, 2019 pm 05:02 PM
php redis 消息队列

Detaillierte Einführung in die Konzepte, Prinzipien und Nutzungsszenarien von Nachrichtenwarteschlangen (mit Fällen)

Wie wir alle wissen, werden Sie beim Entwerfen einer Website auf „Gruppen-Textnachrichten“ an Benutzer, „eine große Anzahl von Protokollen im Bestellsystem“ und „Flash-Sale-Design“ stoßen. usw. Der Server kann damit nicht umgehen. Diese Art von sofortigem Druckanstieg erfordert die Hilfe einer „Nachrichtenwarteschlange“, um die normale und effektive Nutzung des Systems sicherzustellen. In diesem Artikel wird hauptsächlich die Idee der Nachrichtenwarteschlange untersucht.

Verstehen Sie hauptsächlich das folgende Wissen:

 1. Was ist eine Warteschlange und was kann sie tun?

2. Welche Einsatzszenarien gibt es für die Ausrichtung?

3. Wie nutzt man Warteschlangen zum Entkoppeln von Diensten?

4. Wie verwende ich die Redis-Warteschlange, um hohen Druck zu beseitigen?

5. Wie verwende ich das professionelle Ausrichtungssystem RabbitMQ?

Der Hauptinhalt ist wie folgt zusammengefasst

 @Konzepte, Prinzipien und Szenarien der Nachrichtenwarteschlange

 @Entkopplungsfall: Warteschlangenverarbeitungsauftragssystem und Verteilungssystem

@Traffic Peak Shaving Case: Redis List Type implementiert Flash Sale

@RabbitMQ: Eine professionellere Nachrichtensystem-Implementierungslösung

1 Verständnis der Nachrichtenwarteschlange

1.1 Nachrichtenwarteschlangenkonzept

Im Wesentlichen ist die Nachrichtenwarteschlange eine Middleware mit einer Warteschlangenstruktur, was bedeutet, dass die Nachricht direkt nach dem Einfügen in diese Middleware zurückgegeben werden kann Das System muss sie nicht sofort verarbeiten, aber ein anderes Programm liest die Daten und verarbeitet sie der Reihe nach.

Das heißt, wenn Sie auf eine Situation stoßen, in der die Parallelität besonders groß ist und lange dauert und Sie die Verarbeitungsergebnisse nicht sofort zurückgeben müssen, kann die Verwendung von Nachrichtenwarteschlangen solche Probleme lösen.

1.2 Kernstruktur

Stellen Sie die Warteschlange eines Geschäftssystems in die Warteschlange, fügen Sie die Nachrichten einzeln in die Nachrichtenwarteschlange ein und geben Sie anschließend direkt das erfolgreiche Ergebnis zurück Das Einfügen ist erfolgreich. In Zukunft wird es ein Nachrichtenverarbeitungssystem geben, das die Datensätze im Nachrichtensystem einzeln herausnimmt und verarbeitet und so einen Entnahmevorgang abschließt.

1.3 Anwendungsszenarien

Datenredundanz: Beispielsweise erfordert das Bestellsystem in Zukunft eine strikte Datenkonvertierung und -aufzeichnung. Die Nachrichtenwarteschlange kann diese Daten dauerhaft in der Warteschlange speichern, und dann gibt es sie Bestellungen, das nachfolgende Verarbeitungsprogramm erhält es, und nach Abschluss der nachfolgenden Verarbeitung wird dieser Datensatz gelöscht, um sicherzustellen, dass jeder Datensatz verarbeitet werden kann.

Systementkopplung: Nach der Verwendung des Nachrichtensystems werden das Enqueue-System und das Dequeue-System getrennt, was bedeutet, dass der normale Betrieb des anderen Systems nicht beeinträchtigt wird, solange es eines Tages abstürzt.

Reduzierung von Traffic-Spitzen: Beispielsweise können wir bei Flash-Sales und Rush-Sales Nachrichtenwarteschlangen in Verbindung mit Caching verwenden, die der Menge an sofortigen Besuchen effektiv standhalten und verhindern können, dass der Server überlastet wird und einen Absturz verursacht.

Asynchrone Kommunikation: Die Nachricht selbst kann direkt nach der Warteschlange zurückgegeben werden.

Skalierbarkeit: Beispielsweise kann die Bestellwarteschlange nicht nur Bestellungen verarbeiten, sondern auch von anderen Unternehmen genutzt werden.

Sequenzierungsgarantie: Einige Szenarien müssen in der Reihenfolge der Produkte verarbeitet werden, z. B. Single-In und Single-Out, um sicherzustellen, dass Daten in einer bestimmten Reihenfolge verarbeitet werden. Es ist möglich, Nachrichtenwarteschlangen zu verwenden.

Die oben genannten sind gängige Verwendungsszenarien der Nachrichtenwarteschlange. Natürlich ist die Nachrichtenwarteschlange nur eine Middleware und kann in Verbindung mit anderen Produkten verwendet werden.

1.4 Allgemeine Vor- und Nachteile der Warteschlangenimplementierung

Warteschlangenmedien

1. Datenbank wie MySQL (hohe Zuverlässigkeit, einfach zu implementieren, langsam)

2, Cache wie Redis (schnell, geringe Effizienz, wenn ein einzelnes Nachrichtenpaket zu groß ist)

3. Messaging-System wie RabbitMq (hochprofessionell, zuverlässig, hohe Lernkosten)

Auslösemechanismus für die Nachrichtenverarbeitung

1. Endloses Schleifenlesen: einfach zu implementieren, im Fehlerfall nicht rechtzeitig wiederherstellbar (besser geeignet für Flash-Sale, zentralisierter, zentralisierter Betrieb und Wartung)

2. Geplante Aufgaben: Der Druck ist gleichmäßig verteilt, mit einer Verarbeitungsobergrenze, einem derzeit beliebten Verarbeitungsauslösemechanismus. (Der einzige Nachteil besteht darin, dass Sie auf das Intervall und die Daten achten müssen. Warten Sie nicht, bis die vorherige Aufgabe nicht abgeschlossen ist und die nächste Aufgabe erneut beginnt.)

3. Daemon-Prozess: ähnlich wie PHP- fpm und php-cg, erfordert Shell-Grundlagen

2. Entkopplungsfall: Warteschlangenverarbeitung „Bestellsystem“ und „Verteilungssystem

Für den Bestellvorgang können wir zwei Systeme entwerfen, eines ist das „Bestellsystem“ und das andere ist das „Liefersystem“. Nachdem ich eine Bestellung aufgegeben habe, hätten wir es alle sehen sollen Im Hintergrund ist zu sehen, dass meine Ware in der Mitte geliefert wird. Zu diesem Zeitpunkt muss ein „Liefersystem“ einbezogen werden.

Wenn wir bei der Architektur das „Bestellsystem“ und das „Liefersystem“ gemeinsam entwerfen, wird es einige Probleme geben. Erstens wird der Druck auf das System relativ hoch sein. Aber „Das Vertriebssystem“ muss nicht unbedingt sofort auf diesen Druck reagieren.

Zweitens möchten wir nicht, dass der Ausfall des Bestellsystems zu einem Ausfall des Liefersystems führt, was den normalen Betrieb beider Systeme gleichzeitig beeinträchtigt. Wir hoffen also, diese beiden Systeme zu entkoppeln. Nachdem die beiden Systeme getrennt wurden, können wir über eine zwischengeschaltete „Warteschlangentabelle“ zwischen den beiden Systemen kommunizieren.

2.1 Architekturdesign

Detaillierte Einführung in die Konzepte, Prinzipien und Nutzungsszenarien von Nachrichtenwarteschlangen (mit Fällen)

1. Zuerst nimmt das Bestellsystem die Bestellung des Benutzers entgegen und verarbeitet die Bestellung.

2. Diese Bestellinformationen werden dann in die Warteschlangentabelle geschrieben. Diese Warteschlangentabelle ist der Schlüssel für die Kommunikation zwischen den beiden Systemen.

3. Ein Programm, das regelmäßig vom Verteilungssystem ausgeführt wird, um die Warteschlangentabelle zur Verarbeitung zu lesen.

4. Nach der Verarbeitung durch das Vertriebssystem werden die verarbeiteten Datensätze markiert.

2.2 Programmablauf

Detaillierte Einführung in die Konzepte, Prinzipien und Nutzungsszenarien von Nachrichtenwarteschlangen (mit Fällen)

3. Traffic Peak Shaving Case: Der Listentyp von Redis implementiert Flash-Sales

Aufgrund der Speichergeschwindigkeit ist Redis eine sehr gute Ergänzung zur Datenbank. Redis schreibt regelmäßig Daten auf die Festplatte und muss sich daher keine Sorgen über Stromausfälle machen , es hat mehr Vorteile als ein anderer Cache-Memcache. Darüber hinaus bietet Redis fünf Datentypen (String, doppelt verknüpfte Liste, Hash, Set, geordneter Set)

Im Allgemeinen ist es ein Flash-Sale. Redis ist gut Wahl für Fälle, in denen Fälle, Eilkäufe und Fälle, die eine Warteschlange erfordern, sofort höher sind als Ihre.

3.1 Der Listentyp im Redis-Datentyp

Die Liste in Redis ist eine doppelt verknüpfte Liste, und Daten können am Kopf oder Ende angehängt werden.

* LPUSH/LPUSHX: Fügen Sie den Wert in den Kopf der (/vorhandenen) Liste ein

* RPUSH/RPUSHX: Fügen Sie den Wert in das Ende der (/vorhandenen) Liste ein

* LPOP: Entfernen und das erste Element der Liste abrufen

* RPOP: Entfernen und das letzte Element der Liste abrufen

* LTRIM: Elemente im angegebenen Bereich behalten

* LLEN: Ermitteln Sie die Länge der Liste

* LSET: Legen Sie den Wert des Listenelements anhand des Index fest

* LINDEX: Ermitteln Sie das Element in der Liste anhand des Index

* LRANGE: Holen Sie sich die Elemente innerhalb des angegebenen Bereichs der Liste

3.2 Architekturdesign

Ein Flash-Kill-Programmdesign mit einfacher Struktur.

Erfassen Sie zunächst, welcher Benutzer am Flash-Sale teilgenommen hat, und notieren Sie seine Zeit.

2. Speichern Sie die Benutzer-ID in der Redis-Liste und lassen Sie sie in die Warteschlange stellen. Wenn festgelegt ist, dass nur die ersten 10 Benutzer erfolgreich teilnehmen können und die Anzahl in der Liste ausreicht, dürfen keine weiteren Daten hinzugefügt werden. Auf diese Weise beträgt die Länge der Redis-Liste nur 10

3. Schreiben Sie schließlich die Daten in Redis langsam in die Datenbank, um den Druck auf die Daten zu verringern

3.3 Codeebene Design

1. Wenn der Benutzer den Flash-Sale startet, schreiben Sie die Anfrage des Flash-Sale-Programms in Redis (uid, time_stamp).

2. Wenn festgelegt ist, dass nur 10 Personen am Flash-Sale teilnehmen können, überprüfen Sie die Länge der in Redis gespeicherten Daten und verwerfen Sie sie direkt vollendet.

3. Schließlich werden die 10 in Redis gespeicherten Daten in einer Endlosschleife verarbeitet und dann werden die Daten langsam abgerufen und in der MySQL-Datenbank gespeichert.

Der Flash-Verkaufsbereich übt großen Druck auf die Datenbank aus. Wenn wir nicht über ein solches Design verfügen, führt dies zu einem Schreibengpass in MySQL. Wir verwenden eine Warteschlangenliste in Redis und stellen dann die Flash-Sale-Anfrage langsam über das Warehousing-Programm in die Datenbank. Auf diese Weise kann der Datenverkehr ausgeglichen werden und es gibt keine Auswirkungen auf MySQL . Zu viel Druck.

4. RabbitMQ

Hier erklären wir einige Verwendungsmöglichkeiten von RabbitMQ. Als wir zuvor über den Flash-Sale-Fall gesprochen haben, haben wir den Sperrmechanismus zur Verhinderung erwähnt Wenn unsere Systemarchitektur sehr komplex ist, lesen mehrere Programme eine Warteschlange in Echtzeit oder ich habe mehrere Sendeprogramme, die eine oder mehrere Warteschlangen gleichzeitig bedienen, und ich möchte diese Programme sogar Um sie auf verschiedene Maschinen zu verteilen, ist die Verwendung der Redis-Warteschlange etwas unzureichend. Was ist zu diesem Zeitpunkt zu tun? Wir müssen einige professionellere Nachrichtenwarteschlangensysteme einführen, die das Problem besser lösen können.

4.1 Architektur und Prinzipien von RabbitMQ

Features: Vollständige Implementierung von AMQP, Cluster-Vereinfachung, Persistenz, plattformübergreifend

RabbitMQS Verwendung

1. RabbitMQ-Installation (rabbitmq-server, php-amqplib)

2. Produzent sendet Nachricht an Nachrichtenkanal

3. Verbraucher verarbeitet Nachricht

Arbeitswarteschlange

Idee: Der Produzent sendet sie an das Nachrichtensystem, und das Nachrichtensystem kapselt die Aufgabe in eine Nachrichtenwarteschlange und verwendet dann dieselbe Warteschlange für mehrere Verbraucher

Dies löst nicht nur die Entkopplung zwischen Produzenten und Konsumenten, sondern ermöglicht auch die gemeinsame Nutzung von Konsumenten und Aufgaben, wodurch der Druck auf den Server verringert wird.

5. Zusammenfassung

Das Obige konzentriert sich hauptsächlich auf das Erlernen der Konzepte, Prinzipien und Szenarien von Nachrichtenwarteschlangen. Fälle entkoppeln und die einfache Verwendung von RabbitMQ verstehen.

6. Frage

Was ist der größte Unterschied zwischen Redis und der Auswahl des Nachrichtenservers?

Mein Verständnis ist, dass Redis eine einzelne Thread-Implementierung ist. Einer ist synchron und der andere ist asynchron, während Redis synchrone Blockierung verwendet Nachrichtenserver Verwenden Sie asynchrone, nicht blockierende Funktionen.

Weitere Informationen zu Redis finden Sie in der Spalte Tutorial zur Redis-Nutzung!

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Konzepte, Prinzipien und Nutzungsszenarien von Nachrichtenwarteschlangen (mit Fällen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP und Python: Vergleich von zwei beliebten Programmiersprachen PHP und Python: Vergleich von zwei beliebten Programmiersprachen Apr 14, 2025 am 12:13 AM

PHP und Python haben jeweils ihre eigenen Vorteile und wählen nach den Projektanforderungen. 1.PHP ist für die Webentwicklung geeignet, insbesondere für die schnelle Entwicklung und Wartung von Websites. 2. Python eignet sich für Datenwissenschaft, maschinelles Lernen und künstliche Intelligenz mit prägnanter Syntax und für Anfänger.

PHP vs. Python: Verständnis der Unterschiede PHP vs. Python: Verständnis der Unterschiede Apr 11, 2025 am 12:15 AM

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

PHP: Eine Schlüsselsprache für die Webentwicklung PHP: Eine Schlüsselsprache für die Webentwicklung Apr 13, 2025 am 12:08 AM

PHP ist eine Skriptsprache, die auf der Serverseite weit verbreitet ist und insbesondere für die Webentwicklung geeignet ist. 1.PHP kann HTML einbetten, HTTP -Anforderungen und Antworten verarbeiten und eine Vielzahl von Datenbanken unterstützt. 2.PHP wird verwendet, um dynamische Webinhalte, Prozessformdaten, Zugriffsdatenbanken usw. mit starker Community -Unterstützung und Open -Source -Ressourcen zu generieren. 3. PHP ist eine interpretierte Sprache, und der Ausführungsprozess umfasst lexikalische Analyse, grammatikalische Analyse, Zusammenstellung und Ausführung. 4.PHP kann mit MySQL für erweiterte Anwendungen wie Benutzerregistrierungssysteme kombiniert werden. 5. Beim Debuggen von PHP können Sie Funktionen wie error_reporting () und var_dump () verwenden. 6. Optimieren Sie den PHP-Code, um Caching-Mechanismen zu verwenden, Datenbankabfragen zu optimieren und integrierte Funktionen zu verwenden. 7

Der aktuelle Status von PHP: Ein Blick auf Webentwicklungstrends Der aktuelle Status von PHP: Ein Blick auf Webentwicklungstrends Apr 13, 2025 am 12:20 AM

PHP bleibt in der modernen Webentwicklung wichtig, insbesondere in Content-Management- und E-Commerce-Plattformen. 1) PHP hat ein reichhaltiges Ökosystem und eine starke Rahmenunterstützung wie Laravel und Symfony. 2) Die Leistungsoptimierung kann durch OPCACHE und NGINX erreicht werden. 3) Php8.0 führt den JIT -Compiler ein, um die Leistung zu verbessern. 4) Cloud-native Anwendungen werden über Docker und Kubernetes bereitgestellt, um die Flexibilität und Skalierbarkeit zu verbessern.

Php gegen andere Sprachen: Ein Vergleich Php gegen andere Sprachen: Ein Vergleich Apr 13, 2025 am 12:19 AM

PHP eignet sich für die Webentwicklung, insbesondere für die schnelle Entwicklung und Verarbeitung dynamischer Inhalte, ist jedoch nicht gut in Anwendungen auf Datenwissenschaft und Unternehmensebene. Im Vergleich zu Python hat PHP mehr Vorteile in der Webentwicklung, ist aber nicht so gut wie Python im Bereich der Datenwissenschaft. Im Vergleich zu Java wird PHP in Anwendungen auf Unternehmensebene schlechter, ist jedoch flexibler in der Webentwicklung. Im Vergleich zu JavaScript ist PHP in der Back-End-Entwicklung präziser, ist jedoch in der Front-End-Entwicklung nicht so gut wie JavaScript.

Die dauerhafte Relevanz von PHP: Ist es noch am Leben? Die dauerhafte Relevanz von PHP: Ist es noch am Leben? Apr 14, 2025 am 12:12 AM

PHP ist immer noch dynamisch und nimmt immer noch eine wichtige Position im Bereich der modernen Programmierung ein. 1) Einfachheit und leistungsstarke Unterstützung von PHP machen es in der Webentwicklung weit verbreitet. 2) Seine Flexibilität und Stabilität machen es ausstehend bei der Behandlung von Webformularen, Datenbankoperationen und Dateiverarbeitung; 3) PHP entwickelt sich ständig weiter und optimiert, geeignet für Anfänger und erfahrene Entwickler.

PHP: Die Grundlage vieler Websites PHP: Die Grundlage vieler Websites Apr 13, 2025 am 12:07 AM

Die Gründe, warum PHP für viele Websites der bevorzugte Technologie -Stack ist, umfassen die Benutzerfreundlichkeit, die starke Unterstützung der Community und die weit verbreitete Verwendung. 1) Einfach zu erlernen und zu bedienen, geeignet für Anfänger. 2) eine riesige Entwicklergemeinschaft und eine reichhaltige Ressourcen haben. 3) in WordPress, Drupal und anderen Plattformen häufig verwendet. 4) Integrieren Sie eng in Webserver, um die Entwicklung der Entwicklung zu vereinfachen.

PHP vs. Python: Kernmerkmale und Funktionen PHP vs. Python: Kernmerkmale und Funktionen Apr 13, 2025 am 12:16 AM

PHP und Python haben jeweils ihre eigenen Vorteile und eignen sich für verschiedene Szenarien. 1.PHP ist für die Webentwicklung geeignet und bietet integrierte Webserver und reichhaltige Funktionsbibliotheken. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit prägnanter Syntax und einer leistungsstarken Standardbibliothek. Bei der Auswahl sollte anhand der Projektanforderungen festgelegt werden.

See all articles