Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Warteschlangenverarbeitung: Implementierungsprinzip der PHP-Nachrichtenwarteschlange (Bild und Text)

PHP-Warteschlangenverarbeitung: Implementierungsprinzip der PHP-Nachrichtenwarteschlange (Bild und Text)

php是最好的语言
php是最好的语言Original
2018-07-23 10:03:258508Durchsuche

Was bedeutet PHP-Warteschlange? Wie wird es erreicht? Welche Anwendungsszenarien gibt es? Im Folgenden wird das Implementierungsprinzip der PHP-Nachrichtenwarteschlange durch die Verwendung von MySQL zur Entkopplung und die Verwendung von Redis zur Reduzierung des Datenverkehrs ausführlich erläutert.

Das Konzept der Warteschlange:

Es ist die Middleware der Warteschlangenstruktur

2 🎜>muss nicht sofort verarbeitet werden

3.

wird nacheinander von Abonnenten /Verbrauchern

Warteschlange verarbeitet Prinzip:

PHP-Warteschlangenverarbeitung: Implementierungsprinzip der PHP-Nachrichtenwarteschlange (Bild und Text)

ist auch das Prinzip der Entkopplung: Das Geschäftssystem und das Warteschlangenverarbeitungssystem haben nichts zu tun

Einer schreibt (Geschäftssystem) und einer liest (Warteschlangenverwaltungssystem).

Schreiben Sie einfach in die Warteschlange und schreiben Sie , machen Sie sich um nichts weiter Sorgen, es spielt keine Rolle, ob Sie zu Ende lesen können oder nicht

Das Gleiche,

einfach aus der Warteschlange lesen , die Arbeit erledigen, wenn Sie kommen, ausruhen, wenn keine Arbeit da ist

Anwendungsszenarien:

Redundanz:

Persistente Speicherung in der Warteschlange

, die anschließend vom Auftragsverarbeitungsprogramm abgerufen wird. Nach Abschluss der Verarbeitung wird der Datensatz gelöschtEntkopplung: Ja Diese beiden

Systeme (Geschäfts- und Warteschlangenverarbeitung) sind das, was wir normalerweise tun. Es besteht keine direkte Beziehung zwischen den Systemen zum Betreten und Verlassen der Warteschlange.

Wenn ein System ausfällt, ist das andere System nicht betroffen, da sich in der Mitte eine Warteschlange befindet Der Traffic wird reduziert Edge: Flash-Sales und Rush-Sales. Der Datenverkehr hat dramatisch zugenommen.

Verwenden Sie die Nachrichtenwarteschlange in Verbindung mit dem Cache

(d. h. unter Einschränkungen, wenn nur 10 zulässig sind, werden sie nach dem Speichern von 10 in der Warteschlange nicht mehr gespeichert Sie werden darauf hingewiesen, dass der Flash-Verkauf beendet ist.) Asynchrone Kommunikation:

Da die Nachricht selbst dazu führen kann, dass das System in der Warteschlange direkt zurückkehrt

, wird davon ausgegangen, dass das Programm asynchron läuft realisiert

Szenario-Skalierbarkeit: wie

Jetzt gibt es nur noch ein Bestellsystem und ein Finanzsystem. Ich möchte in Zukunft ein Vertriebssystem hinzufügen Abonnieren Sie diese Warteschlange direkt. Sortiergarantie: einige Szenarien Zum Beispiel

Die Reihenfolge der Verarbeitung von Bankdaten ist sehr wichtig , weil die Warteschlange selbst in ein Single-Thread-, Single-In-, Single-Out-System umgewandelt werden kann Implementierungsmedium:

1 MySQL: hohe Zuverlässigkeit, einfach zu implementieren, langsame Geschwindigkeit

2. Verwendung von Redis: schnelles, einzelnes großes Nachrichtenpaket. Geringe Effizienz

3. Verwenden Sie professionellere Bibliotheken von Drittanbietern: hochprofessionell, zuverlässig und hohe Lernkosten.

Auslösemechanismus für die Nachrichtenverarbeitung:

1. Endlosschleifenlesen: einfach zu implementieren, im Fehlerfall nicht rechtzeitig zu reagieren ( für kurze Zeiträume geeignet wie Flash-Verkäufe

)

2. Geplante Aufgaben: Der Druck ist gleichmäßig verteilt und hat eine Verarbeitungsobergrenze (egal wie instabil der Spitzenwert des Systems vor Ihrer Warteschlange ist, Das System hinter der Warteschlange wird weiterhin regelmäßig ausgeführt 🎜>Fall: Bestellsystem, Bestellung aufgeben Nachdem die Bestellinformationen in die Warteschlange geschrieben wurden, wird sofort zurückgegeben, dass die Bestellung erfolgreich aufgegeben wurde. Das Verteilungssystem liest die Warteschlange regelmäßig alle paar Minuten

und fasst die Bestellungen zusammen

3. Daemon-Prozess: ähnlich wie PHP-FPM und CGI, was Shell-Grundlagen erfordert (verwenden Sie diesen Prozess, um zu überprüfen, ob Inhalt vorhanden ist). in der Warteschlange. Wenn Inhalt vorhanden ist, starten Sie das Entkopplungssystem zur Verarbeitung)

Verwenden Sie MySQL, um den Entkopplungsfall zu implementieren:

Warum Entkopplung: Wenn die Architektur zusammenpasst. Das Bestellsystem steht unter großem Druck und Logistikinformationen müssen nicht sofort zurückgegeben werden. Wenn Bestellungen zusammenbrechen, bricht auch die Logistik zusammen, daher müssen wir das Design der Tabelle entkoppeln:


Das Bestellsystem schreibt den Code in die Warteschlange:

Das Verteilungssystem liest den Warteschlangencode:

PHP-Warteschlangenverarbeitung: Implementierungsprinzip der PHP-Nachrichtenwarteschlange (Bild und Text)

Geplante Aufgaben ausführenCrontab -e


Hinweis: Diese Protokolldatei muss von Ihnen selbst erstellt werden


1 im Browser Besuchen Sie order.phpBestellung hinzufügen

2 Gehen Sie zur Datenbank, um die Ergebnisse anzuzeigen und schauen Sie im Protokoll nach shell Ergebnis ( wurde nicht erfolgreich ausgeführt. Es kann sein, dass die sh-Datei in einem bestimmten Verzeichnis abgelegt werden muss und nach Abschluss der Überprüfung ausgeführt wird )


Verwendung von Redis zur Verkehrsreduzierung



Idee:

1. Das Flash-Sale-Programm fordert das Schreiben in Redis an.

2. Direkt verwerfen (zurück zum Ende des Flash-Sales)

3. Endlosschleifenverarbeitung von Einzahlungen. Redis-Daten in Datenbank zusammengeführt

Tabellendesign:


Flash-Sale-Code:


Repository-Code:


Browser greift direkt auf user.php

zu. Verwenden Sie php -f savetodb.php in Shell

Gehen Sie zur Datenbank, um

Verwandte Empfehlungen anzuzeigen:

PHP-Nachrichtenwarteschlangendienst

Das obige ist der detaillierte Inhalt vonPHP-Warteschlangenverarbeitung: Implementierungsprinzip der PHP-Nachrichtenwarteschlange (Bild und Text). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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