Heim > Artikel > Backend-Entwicklung > PHP-Warteschlangenverarbeitung: Implementierungsprinzip der PHP-Nachrichtenwarteschlange (Bild und Text)
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:
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: wieJetzt 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 zusammen3. 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:
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 )
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!