Heim  >  Artikel  >  Datenbank  >  Welche Lösungen gibt es für die MySQL-Datensynchronisierung mit Elasticsearch?

Welche Lösungen gibt es für die MySQL-Datensynchronisierung mit Elasticsearch?

WBOY
WBOYnach vorne
2023-06-01 18:37:281388Durchsuche

Produktabfrage

Sie sollten auf verschiedenen E-Commerce-Websites nach Produkten gesucht haben. Wie suchen Sie normalerweise nach Produkten? Suchmaschine Elasticsearch.

Dann stellt sich die Frage: Wenn ein Produkt in den Handel kommt, werden die Daten normalerweise in die MySQL-Datenbank geschrieben. Wie werden die Daten zum Abruf mit Elasticsearch synchronisiert?

Welche Lösungen gibt es für die MySQL-Datensynchronisierung mit Elasticsearch?

MySQL synchronisiert ES

1. Synchrones Doppelschreiben

Dies ist der direkteste Weg, den man sich vorstellen kann. Beim Schreiben in MySQL wird gleichzeitig auch eine Kopie der Daten direkt in ES geschrieben.

Welche Lösungen gibt es für die MySQL-Datensynchronisierung mit Elasticsearch?

Synchronisiertes Doppelschreiben

Für diese Methode:

Vorteile: Einfache Implementierung

Nachteile:

  • Geschäftskopplung, Kopplung einer großen Menge an Datensynchronisationscode in der Warenverwaltung

  • beeinträchtigt die Leistung , Schreiben Mit zwei Speichern wird die Antwortzeit länger

  • Unpraktisch zu erweitern: Die Suche kann einige personalisierte Anforderungen haben, die eine Aggregation von Daten erfordern, was umständlich zu implementieren ist

2. Asynchrones Doppelschreiben

Wir können Stellen Sie sich das auch leicht vor: Bei der asynchronen Dual-Writing-Methode werden die Produktdaten beim Auflisten von Produkten zunächst in MQ geworfen. Um die Kopplung zu verstehen, teilen wir normalerweise einen Suchdienst auf und der Suchdienst abonniert die Produktnachrichten Änderungen bis zur vollständigen Synchronisierung.

Welche Lösungen gibt es für die MySQL-Datensynchronisierung mit Elasticsearch?

Asynchrones Doppelschreiben

Wie bereits erwähnt, was soll ich tun, wenn einige Daten in einer Struktur ähnlich einer breiten Tabelle aggregiert werden müssen? Beispielsweise sind die Produktkategorie-, SPU- und SKU-Tabellen der Produktbibliothek getrennt, aber die erneute Aggregation in ES ist weniger effizient. Es ist am besten, die Produktdaten zu aggregieren und eine ähnliche Größe zu verwenden -scale-Methode in ES Es wird in Form einer breiten Tabelle gespeichert, sodass die Abfrageeffizienz höher ist.

Mehrdimensionale Abfrage mit mehreren Bedingungen

Es gibt eigentlich keine gute Möglichkeit, dies zu tun. Grundsätzlich müssen Sie immer noch den Dienst durchsuchen, um die Datenbank direkt zu überprüfen, oder ihn aus der Ferne aufrufen und dann die Produktdatenbank erneut abfragen. das ist der sogenannte Backcheck.

Welche Lösungen gibt es für die MySQL-Datensynchronisierung mit Elasticsearch?

Überprüfen, um die Aggregation abzuschließen

Auf diese Weise:

Vorteile:

  • Entkopplung, Produkte und Dienste müssen nicht auf Datensynchronisation achten

  • Gute Echtzeitleistung mit MQ unter Unter normalen Umständen ist die Synchronisierung auf der zweiten Ebene abgeschlossen. Nachteile: Einführung neuer Komponenten und Dienste, wodurch die Komplexität erhöht wird Daten nicht so groß? Was tun? Geplante Aufgaben sind ebenfalls verfügbar.

Geplante Aufgaben
  • Das Problem bei geplanten Aufgaben ist, dass die Häufigkeit hoch ist und es zu unnatürlichen Spitzenzeiten kommt, wodurch die Speicher-CPU- und Speicherauslastung in Spitzenzeiten ansteigt. Wenn die Frequenz niedrig ist, steigt sie in Echtzeit an. Der Sex ist relativ schlecht und es gibt auch Spitzen.

    Diese Methode:
Vorteile: relativ einfach zu implementieren

Nachteile:

Welche Lösungen gibt es für die MySQL-Datensynchronisierung mit Elasticsearch?Schwierig, Echtzeitleistung zu garantieren

höherer Speicherdruck

4. Datenabonnement

Es gibt auch einen anderen Weg , das ist das beliebteste Datenabonnement.

    MySQL erreicht die Master-Slave-Synchronisation durch Binlog-Abonnements. Verschiedene Datenabonnement-Frameworks wie Canal nutzen dieses Prinzip, um die Client-Komponente als Slave-Bibliothek zu tarnen, um ein Datenabonnement zu implementieren.
  • MySQL-Master-Slave-Synchronisation

    Wir nehmen den am weitesten verbreiteten Kanal, der eine Vielzahl von Adaptern unterstützt, einschließlich des ES-Adapters, nach dem Start können Sie MySQL-Daten direkt synchronisieren Mit ES ist dieser Prozess Zero-Code.

Kanalsynchronisationsdaten

Obwohl wir dem Rat des Chefs folgen und den Kanal für Synchronisationsarbeiten verwenden, müssen wir tatsächlich noch Code schreiben. Warum?

Aufgrund der begrenzten Unterstützung von Canal muss die oben erwähnte Datenaggregation mehrerer Tabellen noch durch Überprüfung implementiert werden. Zu diesem Zeitpunkt ist die Verwendung von Canal-Adapter nicht angebracht. Sie müssen den Canal-Client selbst implementieren, Daten überwachen und aggregieren und an ES schreiben: Welche Lösungen gibt es für die MySQL-Datensynchronisierung mit Elasticsearch?

Datenabonnement + Überprüfung canal-adapter

Das sieht eher nach asynchronem Double aus Aber erstens wird die Kopplung von Waren und Dienstleistungen reduziert, und zweitens ist die Echtzeitfähigkeit der Daten besser.

Welche Lösungen gibt es für die MySQL-Datensynchronisierung mit Elasticsearch?Nutzen Sie also das Datenabonnement:

Vorteile:

Weniger geschäftliche Eingriffe

Welche Lösungen gibt es für die MySQL-Datensynchronisierung mit Elasticsearch?

Bessere Echtzeitleistung

Was die Auswahl an Datenabonnement-Frameworks betrifft, sind die gängigsten im Allgemeinen die folgenden: Quelle

AlibabaZendeskJavaPythonAktivKein Support Pythonindividuell AngepasstDetailliertNicht unterstütztMySQL synchronisiert zu anderen Datenspeichern wie HBase, grundsätzlich mit ähnlichen Methoden.

Community
Entwicklungssprache Java
Aktivität Aktiv Aktiv
Hohe Verfügbarkeit Support Support
Client Java/Go/PHP/Python/Rust None
Message Landing Kafka/RocketMQ usw. Kafka/RabbitNQ/Redis usw.
Nachrichtenformat Angepasst JSON
Dokument detailliert Detailliert Detailliert
Boostrap Nicht unterstützt Unterstützt

Das obige ist der detaillierte Inhalt vonWelche Lösungen gibt es für die MySQL-Datensynchronisierung mit Elasticsearch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen