Elasticsearch in einer cloudnativen App
Tipp
Diese Inhalte sind ein Auszug aus dem E-Book „Architecting Cloud Native .NET Applications for Azure“, verfügbar in der .NET-Dokumentation oder als kostenlos herunterladbare PDF-Datei, die offline gelesen werden kann.
Elasticsearch ist ein verteiltes Such- und Analysesystem, das komplexe Suchfunktionen über verschiedene Arten von Daten hinweg ermöglicht. Es ist Open Source und weit verbreitet. Beachten Sie, wie die folgenden Unternehmen Elasticsearch in ihre Anwendung integrieren:
- Wikipedia für die Volltextsuche und die inkrementelle Suche (Suche während der Eingabe).
- GitHub, um über 8 Millionen Coderepositorys zu indizieren und verfügbar zu machen.
- Docker, um die Containerbibliothek erkennbar zu gestalten.
Elasticsearch basiert auf der Apache Lucene-Volltextsuchmaschine. Lucene bietet leistungsstarke Dokumentindizierung und -abfrage. Es indiziert Daten mit einem umgekehrten Indizierungsschema – anstatt Seiten den Stichwörtern zuzuordnen, ordnet es Stichwörter den Seiten zu, wie ein Glossar am Ende eines Buchs. Lucene verfügt über eine leistungsstarke Abfragesyntax und kann Daten anhand der folgenden Kriterien abfragen:
- Begriff (ein vollständiges Wort)
- Präfix (Wortanfang)
- Platzhalter (mithilfe der Filter „*“ oder „?“)
- Ausdruck (eine Textsequenz in einem Dokument)
- Boolescher Wert (komplexe Suchvorgänge, die Abfragen kombinieren)
Während Lucene die Suche auf niedriger Ebene ermöglicht, stellt Elasticsearch den Server bereit, der auf Lucene aufsetzt. Elasticsearch fügt Funktionen auf höherer Ebene hinzu, um die Arbeit mit Lucene zu vereinfachen, einschließlich einer RESTful-API für den Zugriff auf die Indizierungs- und Suchfunktionen von Lucene. Es bietet auch eine verteilte Infrastruktur, die massive Skalierbarkeit, Fehlertoleranz und Hochverfügbarkeit ermöglicht.
Für größere cloudnative Anwendungen mit komplexen Suchanforderungen ist Elasticsearch als verwalteter Dienst in Azure verfügbar. Der Microsoft Azure Marketplace bietet vorkonfigurierte Vorlagen, die Entwickler für die Bereitstellung eines Elasticsearch-Clusters auf Azure verwenden können.
Über den Microsoft Azure Marketplace können Entwickler vorkonfigurierte Vorlagen verwenden, die für die schnelle Bereitstellung eines Elasticsearch-Clusters auf Azure erstellt wurden. Bei Verwendung des von Azure verwalteten Angebots können Sie bis zu 50 Datenknoten, 20 Koordinationsknoten und drei dedizierte Masterknoten bereitstellen.
Zusammenfassung
In diesem Kapitel wurde ein detaillierter Blick auf Daten in cloudnativen Systemen geworfen. Wir haben zunächst die Datenspeicherung in monolithischen Anwendungen mit den Datenspeichermustern in cloudnativen Systemen verglichen. Wir haben Datenmuster betrachtet, die in cloudnativen Systemen implementiert sind, darunter dienstübergreifende Abfragen, verteilte Transaktionen und Muster für den Umgang mit Systemen mit hohem Datenvolumen. Wir haben SQL- mit NoSQL-Daten verglichen. Wir haben uns die in Azure verfügbaren Datenspeicheroptionen angesehen, die sowohl Microsoft-zentrierte als auch Open-Source-Optionen umfassen. Schließlich haben wir über Zwischenspeicherung und Elasticsearch in einer cloudnativen Anwendung gesprochen.
Referenzen
Warum ist RDBMS im CAP-Theorem nicht partitionstolerant und warum ist es verfügbar?
Alles, was Sie über Open Source-Datenbanken wissen müssen (IBM-Blog)
Saga-Muster | Implementieren von Geschäftstransaktionen mithilfe von Microservices
Getting Behind the 9-Ball: Cosmos DB Consistency Levels Explained (Lösung zu 9-Ball: Erläuterung der Cosmos DB-Konsistenzebenen)
Über RDBMS, NoSQL- und NewSQL-Datenbanken. Interview mit John Ryan
SQL vs NoSQL vs NewSQL: The Full Comparison (SQL, NoSQL und NewSQL: Der vollständige Vergleich)
DASH: Four Properties of Kubernetes-Native Databases (DASH: Vier Eigenschaften von Kubernetes-nativen Datenbanken)
Elasticsearch: The Definitive Guide (Elasticsearch: Die ultimative Anleitung)