Verwenden von Redis Enterprise in Azure

NoSQL-Speicher gibt es in vielen Ausführungen. Einige sind Dokumentendatenbanken, andere speichern Schlüssel / Wert-Paare, die alle viele verschiedene Arten von Indizes und Abfragen unterstützen. Es gibt festplattenbasierte Systeme und solche, die für die Arbeit im Speicher ausgelegt sind. Einige verarbeiten große Datenmengen effizient. andere konzentrieren sich auf die Bereitstellung von Geschwindigkeit. Bei so vielen verschiedenen Produkten ist es manchmal schwierig, eines auszuwählen.

Eines der beliebtesten In-Memory-Systeme ist Redis, der Remote Dictionary Server. Es basiert auf dem von RedisLabs gesponserten Open-Source-Redis-Server mit einer Reihe kommerzieller Unternehmensoptionen. Microsoft bietet seit einiger Zeit eine eigene Implementierung von Open Source Redis auf Azure an, wo es hauptsächlich als Hochleistungscache verwendet wird. Kürzlich wurde jedoch eine Partnerschaft mit RedisLabs angekündigt, die einen vollständig verwalteten Redis Enterprise-Stack in die Microsoft-Cloud bringt.

Hinzufügen von Redis Enterprise zu Azure

Der neue Dienst wird möglicherweise am besten als Hinzufügen neuer Ebenen zu den vorhandenen Basis-, Standard- und Premiumdiensten angesehen: Enterprise und Enterprise SSD. Die Redis-Implementierung von Microsoft hat sich darauf konzentriert, einen Hochleistungscache für Ihre Daten in großen Cloud-nativen Anwendungen bereitzustellen, in dem der Cache beim Verwalten von Nachrichten für ereignisgesteuerten Code oder Sitzungsstatus beim Erstellen von containerisierten oder serverlosen Systemen hilft.

Caches dienen nicht nur zur Verwaltung eingehender Daten. Moderne Apps können sie zum Vorladen von Inhalten verwenden, auf die Benutzer regelmäßig zugreifen. Sie können Azure's Redis mit Ihren allgemeinen Ressourcen wie Headern und Logos vorladen, die sich nicht so oft ändern. Durch das Hosten im Speicher können sie viel schneller geliefert werden, anstatt sie jedes Mal, wenn eine Seite geladen wird, von der Festplatte zu ziehen.

Bei der Verwendung von Redis dreht sich alles um Leistung. Durch das Speichern Ihrer Cache-Daten in einem In-Memory-System kann die Anwendungslatenz erheblich reduziert werden, insbesondere wenn Sie verteilte Anwendungen in großem Maßstab erstellen und ausführen. Inhalte in Redis-Stores können zwischen Azure-Regionen repliziert werden, wodurch das Risiko verringert wird, dass Benutzer in einer Region auf Inhalte zugreifen müssen, die in der halben Welt gespeichert sind.

Beginnend mit Azure Cache für Redis

Die Open Source-Implementierung von Microsoft, Azure Cache für Redis, ist in den Größen Basic, Standard und Premium mit einer maximalen Größe von 1,2 TB für Premium-Datenbanken erhältlich. Basic ist eine relativ einfache Einzelknotenimplementierung ohne SLA, aber mit einer Auswahl an Speichergrößen. Standard bietet Ihnen mehr Zuverlässigkeit, indem Sie ein System mit zwei Knoten implementieren und eine SLA hinzufügen. Wenn Sie eine bessere Leistung und eine geringere Latenz benötigen, verwendet die Premium-Option eine andere Azure-Hardwarequalität, die einen höheren Durchsatz als Standard für dieselbe Konfiguration bietet.

Es ist einfach genug, einen Redis-Cache in Azure einzurichten. Beginnen Sie mit einem DNS-Namen, fügen Sie den Cache einer Ressourcengruppe hinzu und wählen Sie einen Speicherort aus. Dadurch werden die zugrunde liegenden virtuellen Maschinen eingerichtet und der Cache gestartet. Sobald Azure es als ausgeführt meldet, können Sie es in Ihrem Code verwenden. Die für die Verbindung mit Redis erforderlichen Anmeldeinformationen befinden sich in Ihrem Azure-Portal mit Zugriffsschlüsseln und Verbindungszeichenfolgen. Das Portal zeigt die Adresse Ihrer Instanz sowie den Port an, über den Ihr Code eine Verbindung herstellen muss. Standardmäßig erfolgt dies über SSL.

Es gibt verschiedene NuGet-Pakete für die Verwendung von Redis mit Ihren .NET-Anwendungen, mit Aufrufen zum Abrufen und Festlegen von Elementen im Redis-Cache sowie zum Überprüfen, ob Ihre Anwendung mit Redis verbunden ist. Sie müssen lediglich Ihre Cache-Verbindungszeichenfolge festlegen und damit ein Cache-Objekt aus Ihrer Redis-Datenbank erstellen. Wenn Sie Visual Studio verwenden, können Sie mit Redis mithilfe vertrauter .NET-Datenbanktools wie Entity Framework arbeiten.

Redis-basierte Anwendungen lassen sich einfach mithilfe von MVC-Mustern (Modell, Ansicht und Controller) implementieren. Mithilfe von Controllern können serialisierte Daten in den Cache geschrieben und bei Bedarf gelesen werden. Microsoft empfiehlt die Verwendung von JSON-Formaten zum Schreiben und Lesen von Daten. Die zurückgegebenen JSON-Daten lassen sich einfach mit gängigen JavaScript- und .NET-Bibliotheken formatieren und anzeigen.

Azure Cache für Redis ist mehr als eine Datenbank und eine Reihe von APIs, da es eine vollständige Reihe von Verwaltungstools einschließlich Überwachung enthält. Diese können Ihnen helfen, Ihre Redis-Instanz nach Bedarf zu skalieren. Sie können nur Ebenen skalieren und von Basic über Standard zu Premium wechseln.

Alle Größenänderungen sind ein separater Vorgang, und Sie können die Größe innerhalb derselben Ebene nach oben oder unten ändern (mit der Maßgabe, dass Sie nicht auf das kleinste Standardgrößenangebot verkleinern können). Wenn Sie eine Ebene herunterfahren möchten, erstellen Sie eine neue Redis-Instanz und kopieren Sie dann alle Daten oder Strukturen in die neue Datenbank, bevor Sie die ältere Version löschen. Wenn Sie die Skalierung automatisieren müssen, können Sie PowerShell oder die Azure-CLI oder Code mithilfe der Azure-Verwaltungsbibliotheken verwenden.

Skalierung auf die In-Memory-Datenbankfunktionen von Redis Enterprise

Die Redis-Implementierung von Azure ist gut, aber nicht die ganze Geschichte. Es basiert auf Open Source Redis, bietet also nicht alle Funktionen des kommerziellen Redis Enterprise. Aus diesem Grund haben Microsoft und Redis zusammengearbeitet, um zwei zusätzliche Ebenen bereitzustellen, die von Microsoft verwaltet und von beiden Unternehmen unterstützt werden und vollständig in das Azure-Portal integriert sind. Enterprise, die Basisschicht, verwendet Standard-Azure-Speicher, während die Enterprise-SSD-Schicht Unterstützung für Flash-Speicher bietet, um schneller auf Daten zugreifen zu können, die nicht im Speicher verfügbar sind.

Derzeit in einer privaten Vorschau bietet der neue Dienst Unterstützung für wichtige Redis Enterprise-Module, sodass Sie den Dienst für viel mehr als nur zwischengespeicherte Daten verwenden können. Dies ist eine wichtige Unterscheidung, da eine schnelle In-Memory-Datenbank ein wichtiger Bestandteil eines ereignisgesteuerten Systems im Maßstab ist, insbesondere eines Systems, das auf Zeitreihendaten basiert. Weitere unterstützte Funktionen sind RedisBloom, das eine probabilistische Datenfilterung hinzufügt, und RediSearch, das die Indizierung verbessert und die Volltextsuche für Ihre Daten ermöglicht.

Zusätzliche Funktionen werden hinzugefügt, wenn der Dienst von der privaten Vorschau zur allgemeinen Verfügbarkeit wechselt (derzeit für Ende 2020 geplant). Auf diese Weise können Sie die Aktiv-Aktiv-Replikation zwischen geografischen Regionen und Hybridbereitstellungen verwenden, die zwischen privaten und von Azure gehosteten Redis-Instanzen funktionieren. Es ist keine dedizierte Verbindung zwischen lokal und Azure Redis erforderlich. Die Aktiv-Aktiv-Replikation funktioniert über ein VPN.

Die neue Redis Enterprise-Implementierung ähnelt dem vorhandenen Azure-Cache für Redis im Portal, und Sie können von vorhandenen Instanzen aus skalieren oder von vorne beginnen. Wenn Sie nach einer besseren Leistung suchen, ist eine Skalierung eine Option, aber Sie möchten wahrscheinlich eine ganz neue Instanz erstellen, wenn Sie eine der neuen Datenbankfunktionen verwenden. Sie können sie als Teil des Erstellungsprozesses über das Portal oder über eine Azure Resource Manager-Vorlage aktivieren. Obwohl ein Großteil Ihrer Verwaltung und Überwachung über das Azure-Portal erfolgt, können Sie die eigenen Verwaltungstools von Redis verwenden, um Ihre Daten zu optimieren und zu optimieren.

Die Kombination aus der Redis-Implementierung von Azure und RedisLabs Redis Enterprise ist interessant und zeigt, wie ein Anbieter mit einem auf Open Source-Basis basierenden Premium-Angebot mit Hyperscale-Clouds koexistieren kann. Azure kann einen Dienst anbieten, der auf der Open Source-Plattform basiert, während komplexere Implementierungen die Tools von RedisLabs verwenden können. Über diese Route erhält das Unternehmen Zugriff auf eine neue Einnahmequelle, ohne sein Lizenzmodell in ein Modell ändern zu müssen, das Cloud-Anbieter ausschließt.

Mit einem einfachen Pfad vom Redis-basierten Cache-Dienst von Azure zu Redis Enterprise und ohne Änderung der Verwaltungstools oder Abrechnungsbeziehungen ist er auch für Endbenutzer transparent. Sie erhalten Zugriff auf neue Ebenen und neue Funktionen, ohne ihre Arbeitsweise ändern zu müssen.