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?
MySQL synchronisiert ES
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.
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
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.
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.
Ü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.
Schwierig, Echtzeitleistung zu garantieren
höherer Speicherdruck
4. Datenabonnement
Es gibt auch einen anderen Weg , das ist das beliebteste Datenabonnement.
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:
Datenabonnement + Überprüfung canal-adapter
Nutzen Sie also das Datenabonnement:
Vorteile:
Weniger geschäftliche Eingriffe
Bessere EchtzeitleistungWas die Auswahl an Datenabonnement-Frameworks betrifft, sind die gängigsten im Allgemeinen die folgenden: Quelle
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 | |
MySQL synchronisiert zu anderen Datenspeichern wie HBase, grundsätzlich mit ähnlichen Methoden. |
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!