Dieser Artikel vermittelt Ihnen hauptsächlich die Gründe, warum wir Nachrichtenwarteschlangen verwenden, und warum wir Nachrichtenwarteschlangen verwenden sollten. Schauen wir uns das gemeinsam an . Jeder ist hilfsbereit.
Warum Nachrichtenwarteschlangen verwenden? Sechs Wörter Zusammenfassung: Entkopplung, asynchron, Spitzenbeseitigung
1) Entkopplung
Die Kopplung zwischen Systemen im herkömmlichen Modus ist zu stark. Um es beispielsweise auszudrücken: System A sendet Daten über Schnittstellenaufrufe an die drei Systeme B, C und D. Wenn System E in Zukunft verbunden wird oder System B nicht verbunden werden muss, muss auch System A geändert werden der Code, der sehr mühsam ist.
Wenn System A relativ kritische Daten generiert, muss es dann immer überlegen, was zu tun ist, wenn die vier Systeme B, C, D und E ausfallen? Haben sie alle diese Daten erhalten? Offensichtlich ist System A stark mit anderen Systemen gekoppelt.
Und wenn wir Daten (Nachrichten) in die Nachrichtenwarteschlange schreiben, verbraucht das System, das die Nachricht benötigt, diese direkt aus der Nachrichtenwarteschlange selbst. Auf diese Weise muss System A weder überlegen, an wen es Daten sendet, noch muss es diesen Code pflegen, noch muss es berücksichtigen, ob andere Systeme erfolgreich aufgerufen werden, Fehlerzeitüberschreitungen usw. Wie auch immer, ich bin nur dafür verantwortlich für die Produktion, und alles andere ist mir egal.
2) Asynchron
Schauen wir uns zunächst die herkömmliche Synchronisationssituation an. Beispiel: System A empfängt eine Benutzeranforderung und muss einen Bibliotheksschreibvorgang ausführen, und das Gleiche muss in B erfolgen. C und D. Führen Sie Bibliotheksschreibvorgänge im System durch. Wenn A die Bibliothek lokal schreibt, dauert es nur 1 ms, während die drei Systeme B, C und D 100 ms, 200 ms bzw. 300 ms benötigen. Die endgültige Gesamtverzögerung der Anforderung beträgt 1 + 100 + 200 + 300 = 601 ms, was die Benutzererfahrung erheblich verringert.
Wenn Sie die Nachrichtenwarteschlange verwenden, muss System A nur 3 Nachrichten an die Nachrichtenwarteschlange senden. Wenn es 5 ms dauert, beträgt die Gesamtzeit von der Annahme einer Anfrage durch System A bis zur Rückgabe einer Antwort an den Benutzer + 5 = 6 ms. Für Benutzer wird die Erfahrungszufriedenheit direkt maximiert.
3)Spitzenbeseitigung
Wenn kein Cache oder keine Nachrichtenwarteschlange verwendet wird, basiert das System direkt auf der Datenbank MySQL. Wenn es eine solche Spitzenzeit gibt, werden viele Anfragen generiert und Es besteht kein Zweifel, dass das System direkt abstürzen wird.
Wenn wir dann die Nachrichtenwarteschlange verwenden, gehen wir davon aus, dass MySQL bis zu 1.000 Daten pro Sekunde verarbeiten kann und während der Spitzenzeit 5.000 Daten sofort einfließen. Diese 5.000 Daten werden jedoch in die Nachricht eingefügt Warteschlange. Auf diese Weise kann unser System entsprechend den Fähigkeiten der Datenbank langsam Anforderungen aus der Nachrichtenwarteschlange abrufen und die maximale Anzahl von Anforderungen, die es pro Sekunde verarbeiten kann, nicht überschreiten.
Das bedeutet, dass pro Sekunde 5.000 Anfragen in der Nachrichtenwarteschlange eingehen und 1.000 Anfragen aus der Nachrichtenwarteschlange ausgehen. Unter der Annahme, dass die Spitzenzeit 1 Stunde beträgt, können sich während dieser Zeit Hunderttausende oder sogar Millionen von Anfragen in der Nachrichtenwarteschlange aufhalten Zeitraum. Dieser kurze Spitzenrückstand ist jedoch völlig akzeptabel, da nach der Spitzenzeit nicht mehr so viele Anfragen pro Sekunde in die Nachrichtenwarteschlange eingehen, die Datenbank sie aber immer noch mit einer Rate von 1.000 Anfragen pro Sekunde verarbeitet. Sobald die Spitzenzeit vorbei ist, wird das System daher den Rückstand an Nachrichten schnell verarbeiten.
Empfohlenes Lernen: „Redis-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonMuss ich die Nachrichtenwarteschlange verwenden? Lassen Sie uns darüber sprechen, warum wir es verwenden sollten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!