Die Rolle, Vor- und Nachteile der Nachrichtenwarteschlange MQ und mehrerer gängiger Nachrichtenwarteschlangen

Inhaltsverzeichnis

1. Definition

2. Die drei Hauptfunktionen der Nachrichtenwarteschlange sind: asynchron, Spitzenbeschneidung und Entkopplung

3. Nachteile von Nachrichtenwarteschlangen

4. Untersuchen Sie diesen Entwurf aus der Perspektive von drei hohen Ebenen

4. Mehrere allgemeine Nachrichtenwarteschlangen


1. Definition

        Nachrichtenwarteschlange: Im Allgemeinen bezeichnen wir sie kurz als MQ (Message Queue).

         Message Query (MQ), Nachrichtenwarteschlangen-Middleware. Viele Anfänger glauben, dass MQ die Asynchronität und Entkopplung von Programmen durch Senden und Empfangen von Nachrichten realisiert. MQ wird hauptsächlich für asynchrone Vorgänge verwendet. Dies ist nicht der eigentliche Zweck von MQ, sondern nur die Anwendung von MQ Der eigentliche Zweck von mq ist die Kommunikation.

        Es schirmt komplexe Kommunikationsprotokolle wie das häufig verwendete Dubbo ab. HTTP-Protokolle sind alle synchron.

         Für diese beiden Protokolle ist es schwierig, eine doppelseitige Kommunikation zu erreichen: A ruft B an, und B kann A auch aktiv anrufen und unterstützt keine langen Verbindungen. Was mq tut, ist, ein einfaches Protokoll auf diesen Protokollen aufzubauen – den Produzenten- und Konsumentenmodellen. Was mq uns bringt, ist nicht das zugrunde liegende Kommunikationsprotokoll, sondern ein Kommunikationsmodell auf höherer Ebene. Er definiert zwei Objekte: Diejenigen, die Daten senden, werden Produzenten genannt, und diejenigen, die Nachrichten empfangen, werden Konsumenten genannt. Wir können das zugrunde liegende Kommunikationsprotokoll ignorieren und Produzenten und Konsumenten selbst definieren.

2. Die drei Hauptfunktionen der Nachrichtenwarteschlange sind: asynchron, Spitzenbeschneidung und Entkopplung

        Die Nachrichtenwarteschlange ähnelt einem Drei-Schluchten-Damm und dient dazu, den Druck von flussaufwärts abzufangen.

        Asynchron: Was im vorherigen Schritt durchgeführt wurde, wurde in mehrschrittig geändert

        Peak Shaving: (Beispiel: Der Datenverkehr hat sich plötzlich um das Hundertfache erhöht, und das Programm ist auf die dazwischen liegende Datengröße ausgelegt.) Der Druck wird im MQ angehäuft, und der Verbraucher muss dem Datenanstieg nicht widerstehen. und die Nachricht wird in die Nachrichtenwarteschlange gestellt. Verbraucher können langsam konsumieren. Blockieren Sie den Anstieg des Datenverkehrs über mq, um nachgelagerte Dienste nicht zu überlasten. Wenn ein Dienst auf dem Server ausfällt, kommt es wahrscheinlich zu einer Kettenreaktion, die das gesamte System lahmlegt

        Entkopplung: Entkopplung von Produzent und Verbraucher. Solange der Produzent die Nachricht in mq einfügt, ist die Aufgabe des Produzenten abgeschlossen und die Verbraucher sind nicht miteinander verbunden

(Ändern Sie die obige allgemeine Form zur folgenden MQ-Implementierung.)

Mq wird im Allgemeinen für Änderungsvorgänge verwendet (wenn die Aufrufkette meines Änderungsvorgangs zu lang ist, muss ich mq verwenden). 

3. Nachteile von Nachrichtenwarteschlangen

        ①, was die Komplexität des Systems erhöht.

                Wenn Ihr Geschäftsvolumen also nicht groß ist und die Parallelität nicht hoch ist, besteht keine Notwendigkeit, Nachrichtenwarteschlangen zu verwenden.

        ②, geschäftliche Probleme.

                Das Transaktionsproblem ist eigentlich ein Problem, das in einem verteilten System vorhanden sein muss, aber die Nachrichtenwarteschlange ist schwerwiegender. Es gibt zwei allgemeine Lösungen: Die erste besteht darin, verteilte Transaktionen zu verwenden. Alle an der Bestellung beteiligten Dienste werden in einer Transaktion zusammengefasst, und entweder alle sind erfolgreich oder alle schlagen fehl. Zweitens müssen Verbraucher angemessene Datenkompensationsmaßnahmen ergreifen, z. B. Nachrichtenwiederholung, manuelle Datenaktualisierung usw.

        ③ Verfügbarkeit

        Die Entkopplung, über die ich gerade gesprochen habe, ist eigentlich die Entkopplung zwischen den verschiedenen Modulen des Systems, aber diese Module sind alle mit der Nachrichtenwarteschlange verbunden. Wenn die Nachrichtenwarteschlange hängen bleibt, ist es wirklich unmöglich, eine Bestellung aufzugeben. Um die Verfügbarkeit sicherzustellen, können wir Nachrichtenwarteschlangencluster, Front-End-Verkehrsbeschränkungen usw. verwenden, die später eingeführt werden.

4. Untersuchen Sie diesen Entwurf aus der Perspektive von drei hohen Ebenen

        Hohe Verfügbarkeit: Wenn ein Modul in meinem System ausfällt, hat dies keine Auswirkungen auf meine anderen Dienste. (Die endgültige Konsistenz der Daten kann durch Datenkompensation oder verteilte Transaktionen gewährleistet werden.)

        Hohe Leistung: Der Benutzer gibt eine Bestellung auf, stellt alle für die Bestellung erforderlichen Daten in die Nachrichtenwarteschlange und sendet sie direkt zurück. Der gesamte Zeitaufwand entspricht dem Zeitaufwand der Netzwerkübertragung.

        Hohe Parallelität: Da die Nachrichtenwarteschlange keine Geschäftslogik verarbeitet, liegt die gesamte unterstützte Parallelität auf der Millionenebene. Wenn 1 Million Benutzer Bestellungen aufgeben und 1 Million Daten in die Nachrichtenwarteschlange gestellt werden, kann der mit der Nachrichtenwarteschlange verbundene Dienst langsam genutzt werden und führt nicht dazu, dass sofort Millionen von Anfragen eingehen und meinen Dienst überfordern.

4. Mehrere allgemeine Nachrichtenwarteschlangen

Unter diesen sind Kafka und RocketMQ aufgrund ihres hohen Durchsatzes derzeit die am weitesten verbreiteten in großen Internetunternehmen.

Supongo que te gusta

Origin blog.csdn.net/qq_52240237/article/details/132030145
Recomendado
Clasificación