Redis vs NCache

Aufgezeichnetes Webinar
Von Ron Hussain und Zack Khan

NCache ist ein nativer .NET Open Source verteilter Cache, der sich großer Beliebtheit bei .NET-, .NET Core- und Java-Anwendungen mit hohem Transaktionsvolumen erfreut. Redis wird entwickelt von Redis Labs und wird derzeit von Microsoft in Azure verwendet. In diesem Webinar erfahren Sie, wie NCache und Redis miteinander vergleichen. Ziel dieses Webinars ist es, Ihnen den Vergleich der beiden Produkte vor allem in qualitativen Aspekten wie Features, Performance, Skalierbarkeit, Hochverfügbarkeit, Datensicherheit und Administration einfacher und schneller zu machen.

Folgendes wird in diesem Webinar behandelt:

  • Leistung und Skalierbarkeit
  • Cache-Elastizität (Hochverfügbarkeit)
  • Cache-Topologien
  • SQL & LINQ Durchsuchen des Caches
  • Integrationen von Drittanbietern (EF, EF Core, NHibernate usw.)

Heute geht es um den Vergleich zweier Produkte, die sich zwar sehr ähnlich, aber in vielerlei Hinsicht auch unterschiedlich sind. Wir haben also NCache Das ist unser wichtigstes Produkt für verteiltes Caching in .NET- und .NET Core-Anwendungen. Anschließend werden wir es hinsichtlich seiner Funktionen vergleichen mit Redis. Wir haben hier also viel zu besprechen. Ich werde viele technische Details durchgehen, angefangen bei der Plattform und dem Technologie-Stack. Dann sprechen wir über das Clustering. Wie schneiden diese beiden Produkte im Hinblick auf das Cache-Clustering ab und welche Vorteile bietet die Verwendung dieser Produkte? Und wie? NCache ist besser und dann werde ich über verschiedene Funktionen sprechen. Wir werden Vergleich der einzelnen Funktionen in Bezug auf die verschiedenen Anwendungsfälle, in denen Sie diese Produkte verwenden können, und wie diese beiden Produkte im Hinblick auf den Funktionsvergleich abschneiden.

Für dieses Webinar habe ich ausgewählt NCache Enterprise 5.0.2, soweit Redis Wir werden uns hauptsächlich auf Azure konzentrieren RedisDas ist Open Source Redis 4.0.1.4. Ich möchte Ihnen aber auch Einzelheiten über die Redis Open-Source-Projekt, sowie Redis Labor, das die kommerzielle Variante von Redis. Also vergleichen wir NCache mit all diesen Varianten, aber unser Hauptaugenmerk liegt auf Microsoft Azure Redis, das gehostete Modell von Redis die Sie in Microsoft Azure erhalten können.

Das Skalierbarkeitsproblem

Bevor wir beginnen, werde ich zunächst auf die einführenden Details zu diesen beiden Produkten eingehen. Warum genau benötigen Sie also eine verteilte Caching-Lösung?

Anschließend vergleichen Sie verschiedene Produkte. Typischerweise sind es Skalierbarkeits- und Leistungsprobleme, die Sie bei Ihrer Anwendung feststellen. Ihre Anwendung kann eine hohe Datenlast aufweisen. Obwohl Ihre Anwendungsebene sehr skalierbar ist, können Sie jederzeit eine Webfarm erstellen und weitere Ressourcen auf der Anwendungsebene hinzufügen. Allerdings müssen alle Anwendungsinstanzen auf Back-End-Datenquellen zugreifen. Und wenn Sie auf diese Datenquellen zugreifen müssen, treten Leistungsprobleme auf, da Datenbanken, typischerweise relationale Datenbanken, die Transaktionslast langsam verarbeiten.

Damit sind Leistungsprobleme verbunden. Auch bei der Skalierung ist eine Datenbank nicht für diese extreme Transaktionslast ausgelegt, wenn Sie beispielsweise eine hohe Kapazität für die Anfrageverarbeitung benötigen oder viele Anfragen verarbeiten müssen und Ihre Anwendungen eine hohe Benutzerlast erzeugen. Sie eignet sich zwar sehr gut für die Speicherung großer Datenmengen, ist aber für die ständige Transaktionslast dieser Daten nicht besonders geeignet. Sie kann ins Stocken geraten. Das führt zu Verlangsamung und kann die Benutzerfreundlichkeit beeinträchtigen.

Sie können also die Leistung beeinträchtigen und haben keine Möglichkeit, die Kapazität innerhalb der Anwendungsarchitektur zu erhöhen.

Die Lösung: Verteilter In-Memory-Cache (NCache)

Die Lösung ist sehr einfach, Sie verwenden ein verteiltes In-Memory-Caching-System wie NCache Das ist superschnell, weil es im Speicher liegt. Im Vergleich zu einer relationalen Datenbank, einem Dateisystem oder einer anderen nicht speicherbasierten Datenquelle ist die Datenspeicherung von einer Festplatte im Vergleich zur Speicherung im Speicher superschnell. Der erste Vorteil ist die superschnelle Leistung von NCache.

Der zweite Vorteil ist, dass es sich um einen Cache-Cluster handelt. Es handelt sich nicht nur um eine einzelne Quelle. Sie können mit einem Server beginnen, aber wir empfehlen in der Regel mindestens zwei Server und erstellen einen Cache-Cluster. Sobald dieser erstellt ist, verbessert sich die Leistung, wenn wir die Last einfach auf alle Server verteilen und zur Laufzeit weitere Server hinzufügen.

Sie können Ihre Kapazität skalieren und zur Laufzeit erhöhen, indem Sie weitere Server hinzufügen. Sie können dies auch in Kombination mit Ihren relationalen Backend-Datenbanken nutzen. Es handelt sich nicht um einen Ersatz für Ihre herkömmlichen relationalen Datenbanken. Wir werden später über einige Anwendungsfälle sprechen.

Verteilte Cache-Bereitstellung (NCache)

Hier ist eine typische Bereitstellung.

verteilte Cache-Bereitstellung

Ich bin mit NCache als Beispiel für jetzt, aber im weiteren Verlauf dieser Präsentation werden wir vergleichen, wie Redis bereitgestellt wird und wie NCache bereitgestellt wird und welche Flexibilität diese Produkte bieten.

So für NCacheEs ist sehr flexibel. Sie können es sowohl in Windows- als auch in Linux-Umgebungen einsetzen. Es ist sowohl vor Ort als auch in Cloud-Umgebungen verfügbar. Es ist sowohl im Azure- als auch im AWS-Marktplatz verfügbar. Sie erhalten also einfach ein vorkonfiguriertes Image von NCache und legen Sie los. Es stehen Docker-Container sowohl für Windows als auch für Linux zur Verfügung, die Sie auf jeder Plattform verwenden können, auf der Sie diese benötigen.

Typischerweise können Ihre Anwendungen, egal ob vor Ort oder in der Cloud gehostet, ein App-Dienst, ein Cloud-Dienst, ein Microservice oder eine Azure-Website sein. Jede Art von Anwendung kann sich im Client-Server-Modell damit verbinden. Es sitzt zwischen Ihrer Anwendung und Ihrer Back-End-Datenbank. Das ist das typische Nutzungsmodell. Die Idee dahinter ist, dass Sie Daten in NCache Dadurch sparen Sie sich teure Zugriffe auf die Back-End-Datenbank. Sie sparen sich so viele Zugriffe wie möglich, und wann immer Sie auf die Datenbank zugreifen müssen, rufen Sie die Daten ab und speichern sie im Cache, sodass Sie beim nächsten Mal nicht mehr auf die Datenbank zugreifen müssen. Dadurch verbessern sich die Leistung und die Skalierbarkeit Ihrer Anwendungen, da Sie nun In-Memory-Zugriff haben, was die Leistung verbessert. Sie haben mehrere Server, die Ihre Anfragen, Ihre Datenanfragen, hosten und verarbeiten. Das ist im Vergleich skalierbarer. Darüber hinaus gibt es Funktionen für hohe Verfügbarkeit und Datenzuverlässigkeit, die ebenfalls in NCache Protokoll.

NCache kann auf denselben Rechnern gehostet werden, auf denen Ihre Anwendungen laufen. Oder es könnte einfach eine separate Ebene sein. In der Cloud wäre der bevorzugte Ansatz, eine separate dedizierte Cache-Ebene zu verwenden und Ihre Anwendungen, Anwendungsinstanzen, auf ihrer jeweiligen Ebene auszuführen. Beide Modelle werden jedoch unterstützt, soweit NCache ist besorgt.

Skalierbarkeitszahlen

Einige Skalierbarkeitszahlen. Wir haben kürzlich diese Tests in unserem AWS-Labor durchgeführt, wo wir die Auslastung von Lese- und Schreibanfragen simulierten und die Auslastung kontinuierlich erhöhten. Als wir ab einem bestimmten Punkt sahen, dass die Server ausgelastet waren, erhöhten wir die Anzahl der Server im Cache-Cluster. So konnten wir von 2 auf 3 Server und dann von 3 auf 4 einen Durchsatz von 2 Millionen Anfragen pro Sekunde mit nur 5 erreichen. NCache Servern, und das waren keine „Touch-and-Go“-Daten. Es handelte sich um reale Anwendungsdaten, die jedoch in unserem AWS-Labor innerhalb unserer Anwendungen simuliert wurden. Auch die Latenz war sehr optimiert. Wir konnten all dies innerhalb einer Mikrosekunden-Latenz erreichen. Die Leistung einzelner Anfragen wurde also nicht beeinträchtigt, als wir diese gesamte Last erreichen konnten.

Häufige Anwendungsfälle: Verteilter Cache

Einige Anwendungsfälle und das ist etwas, was üblich ist für Redis auch, aber ich werde darüber sprechen, wie NCache vergleichen würde.

App-Daten-Caching

Hier cachen Sie fast alles, was Sie normalerweise aus der Back-End-Datenbank abrufen. Die Daten sind bereits in Ihrer Datenbank vorhanden und Sie möchten sie nun cachen. So sparen Sie sich teure Datenbankzugriffe. Wir haben bereits festgestellt, dass die Datenbank langsam ist und die Transaktionslast nicht optimal verarbeitet werden kann. Wir haben viele Datenbanksynchronisierungsfunktionen in dieser Zeile, aber hier verbinden Sie sich einfach mit NCache und verwenden Sie grundsätzlich unsere APIs, um eine Verbindung herzustellen, wissen Sie, machen Sie alle Datenaufrufe an NCacheSie können also fast alles zwischenspeichern. Ob Domänenobjekte, Sammlungen, Datensätze, Bilder oder anwendungsbezogene Daten aller Art – mit unserem Daten-Caching-Modell können Sie diese zwischenspeichern.

ASP.NET / ASP.NET Core Caching

Dann gibt es noch unser ASP.NET- und ASP.NET Core-spezifisches Caching. Auch das ist ein technischer Anwendungsfall, bei dem es für das Session-State-Caching in ASP.NET oder ASP.NET Core verwendet werden kann. ASP.NET- oder ASP.NET Core-SignalR-Backplane. NCache Kann als Backplane eingebunden werden. Für ASP.NET Core kann es auch für das Antwort-Caching verwendet werden. IDistributedCache-Schnittstelle und Sitzungen über IDistributedCache Schnittstelle werden diese beiden Funktionen auch mit NCache und für Legacy-Anwendungen können Sie es auch für den Ansichtsstatus und das Ausgabe-Caching verwenden. Ich wollte Ihnen eine kurze Frage stellen, Ron.

Wir sind reingekommen, die Frage ist, NCache und Azure unterstützt ein serverloses Programmiermodell?

Absolut. Im Hinblick auf die Azure-Bereitstellung können Sie Ihre Anwendungen entweder auf Servern oder, was Ihren Anwendungsteil betrifft, auch serverlose Anwendungen bereitstellen. Sie können einfach unsere NuGet-Pakete in Ihre Anwendung einbinden und diese Anwendungen können einfach NCache Anrufe, wann immer sie es brauchen. Sie müssen nicht einmal eine Installation von NCache oder haben einen Server-Setup für, soweit es um Anwendungsressourcen geht. Aber, soweit, NCache Die serverseitige Bereitstellung selbst ist besorgt, weil NCache ist die Datenquelle, daher muss es eine VM oder einen Satz von VMs haben, mit denen Ihre Anwendungen eine Verbindung herstellen und Daten abrufen und hinzufügen.

Also, von Servern, NCache Cache-Server-Sicht, als Quelle benötigen Sie NCache Server, aber was Ihre Anwendungen betrifft, könnten diese strikt serverlos sein, und es gibt keine Probleme. Sogar Microservices-Architektur. Das ist ein sehr häufiges Beispiel, wo Microservices, es gibt viele Microservices. Es könnte eine Azure-Funktion geben, die nur performt und mit großen Datenmengen umgeht, und diese Daten können von NCache. Sie behandeln also NCache als Datenquelle. Ihre Anwendungen können serverlos sein und NCache ist vollständig mit diesem Modell kompatibel.

Pub/Sub-Nachrichten und Ereignisse

Dann gibt es noch einen weiteren Anwendungsfall Pub/Sub-Nachrichten Dabei dreht es sich um Microservices, denn das ist einer der beeindruckendsten Anwendungsfälle, in denen Messaging für serverlose Anwendungen genutzt werden kann. Microservices sind lose gekoppelte serverlose Anwendungen, und der Aufbau einer Kommunikation zwischen ihnen ist eine große Herausforderung. Nutzen Sie daher unsere Pub/Sub-Messaging-Plattform mit unserem ereignisgesteuerten asynchronen Ereignisweitergabemechanismus. Mehrere Anwendungen können Nachrichten veröffentlichen, um NCache und Abonnenten können diese Nachrichten empfangen.

Da es auf einem asynchronen, ereignisgesteuerten Mechanismus basiert, müssen Publisher-Anwendungen nicht auf Bestätigungen oder Nachrichten warten. Abonnenten müssen ebenfalls nicht auf Nachrichten warten oder nachfragen. Sie werden über Rückrufe benachrichtigt, wenn Benachrichtigungen eingehen. Es ist also sehr flexibel und ein weiterer Anwendungsfall, in dem Sie Folgendes nutzen können: NCache als Pub/Sub-Messaging-Plattform für Ihre Anwendungen.

NCache Geschichte

Noch ein paar Details und dann sprechen wir über die Unterschiede zwischen NCache und Redis. NCache wurde 2005 eingeführt. Es ist seit über 15 Jahren auf dem Markt. Die aktuelle Version von NCache ist 5.0, Version 15. Wir haben sehr viele Kunden. NCache ist auch in der Open Source-Version verfügbar. Sie können es von unserer Website sowie aus dem GitHub-Repository herunterladen.

Einige NCache Kunden

Einige unserer Kunden. Eine detaillierte Liste können Sie auch erhalten.

ncache-Kunden

Plattform & Technologie

Als nächstes sprechen wir darüber, wie NCache vergleicht mit Redis Der erste Abschnitt enthält einige einführende Details zur Technologie im Allgemeinen. Es geht um Informationen zur verteilten Caching-Technologie. Jetzt konzentrieren wir uns direkt darauf, wie NCache vergleicht mit Redis und ich habe einige Abschnitte, die ich formuliert habe.

Der erste Abschnitt, den wir definiert haben, ist Plattform und Technologie. Ich habe bereits erwähnt, dass wir uns auf NCache 5.0.2. Also, NCache 5.0 SP2 ist die Hauptversion auf NCache Website und von Redis Standpunkt werden wir Azure verwenden Redis als Vergleich und wir werden auch über Open Source sprechen und Redis Lab als Teil davon. Die meisten dieser Details sind für verschiedene Geschmacksrichtungen gleich Redis.

Nativer .NET-Cache

Wenn Sie also aus dem Azure-Bereich kommen und ein Produkt auswählen möchten, ist die Kompatibilität mit der Plattform das Wichtigste.

Technologievergleich

Damit NCache Es ist zu 100 % in .NET geschrieben. Es handelt sich um ein natives .NET- bzw. .NET Core-Produkt, zumindest was Ihre Anwendungen betrifft. Kurz gesagt: Es ist in .NET geschrieben und primär für .NET-Anwendungen gedacht und wird auf Windows Server 2016, 2019 und sogar 2012 bereitgestellt. Einzige Voraussetzung für NCache ist .NET Framework oder .NET Core, um genau zu sein. Wohingegen für Redis, es ist in C++ geschrieben. NCache Es ist in .NET geschrieben. Es wurde zu 100 % entwickelt; tatsächlich ist C# die Hauptsprache, die wir verwenden, und es ist zu 100 % nativ für .NET und .NET Core. Redis ist eine C++-Linux-basierte Lösung.

Aus Windows-Sicht und mit Windows-Hintergrund, wenn Ihre Anwendungen in .NET geschrieben sind, ist die Wahl eines Produkts naheliegend, das ebenfalls in .NET geschrieben ist, sodass Sie auf demselben Technologie-Stack arbeiten. Sie benötigen nicht viele Variationen innerhalb des Anwendungsentwicklungs-Stacks. Das ist also ein Problem bzw. ein Unterschied zwischen diesen beiden Produkten.

Der zweite Aspekt ist Windows versus Linux und dann wissen Sie, was verfügbar ist in NCache und was ist verfügbar auf Redis Seite. Windows, aus der Sicht der NCache Die Bereitstellung unter Linux ist zwar die bevorzugte Methode, wir bieten aber dank unserer .NET Core Server-Version auch eine Linux-Bereitstellung an. Somit sind wir vollständig kompatibel mit Windows 2012, 2016 und 2019. Unsere Docker-Images sind ebenfalls für Windows verfügbar. NCache. Sie können also einfach unser Docker-Image herunterladen und einfach das Windows-Image von NCache nach Bedarf und wir unterstützen es vollständig in der Produktionsumgebung. Es ist eine offizielle Unterstützung von unserer Seite. Wenn Sie jedoch vergleichen Redis sogar in Microsoft Azure Redis wird auf Linux gehostet. Der bevorzugte Ansatz, bevorzugte Bereitstellungsmodell ist Linux für Redis. Die Windows-Variante ist ein Drittanbieterprojekt. Microsoft Open Tech hat eine portierte Version davon. Es gibt keinen offiziellen Support von Redis selbst. Das Projekt selbst ist auf Eis gelegt. Es ist fehlerhaft, instabil und sogar die Azure Redis, wie bereits erwähnt, verwendet die Linux-Version und das große Problem dabei ist, dass Sie keinen offiziellen Support von der Redis, Hersteller von Redis oder aus der Perspektive, dass Sie auf viele Probleme stoßen würden, wenn Sie das Open-Source-Projekt verwenden und es auf Ihrem eigenen Gelände einsetzen möchten.

In diesem Zusammenhang möchte ich auch einen weiteren Aspekt hervorheben: Wenn Sie NCache On-Premise und Sie möchten nun von On-Premise migrieren und in Azure verwenden. Die gleiche Software funktioniert wie bisher. Es sind also keine Änderungen durch den Umzug erforderlich. NCache von On-Premise zu Azure. Ebenso innerhalb von Cloud-Anbietern, wenn Sie planen, NCache Auf Azure können Sie bei Bedarf einfach zu AWS migrieren. Denn auf allen Plattformen ist die gleiche Software verfügbar. Wohingegen, soweit Redis ist besorgt, Azure Redis ist ein gehostetes Modell, das unter Linux bereitgestellt wird, was die Backend-Bereitstellung betrifft. Die gleiche Variante steht Ihnen jedoch nicht vor Ort zur Verfügung. Sie müssen sich also mit Open Source befassen Redis oder ein Drittanbieter. Sogar Sie müssen sich für eine kommerzielle Variante entscheiden, bei der es sich um ein völlig anderes Produkt handelt.

Der Hauptpunkt, den ich hier hervorheben möchte, ist, dass Redis On-Premise, das Open Source oder eine kommerzielle Version ist, im Vergleich Redis in Azure oder Redis in AWS, nämlich Elastic Cache. Dies sind völlig separate Produkte. Es gibt also einen Übergang, es gibt viele Veränderungen. Man kann nicht portieren Redis von einer Umgebung in eine andere, ohne dass Änderungen vorgenommen werden müssen. Einige Funktionen fehlen. Einige APIs sind unterschiedlich. Das Bereitstellungsmodell wird zwischen diesen Produkten vollständig geändert. Es gibt also keine Änderungen, wenn Sie NCache vor Ort unter Windows oder Linux und jetzt möchten Sie migrieren und zu Azure wechseln. Es wäre genau dasselbe Produkt. Und jetzt möchten Sie es von Azure zu AWS ändern. Sie möchten den Cloud-Anbieter ändern. Es ist flexibler im Vergleich zu Redis. So, NCache ist viel flexibler.

Linux-Unterstützung, NCache ist voll kompatibel, offiziell unterstützt. Auch die Leistung ist getestet und Linux-Leistung ist superschnell wie auf Augenhöhe mit NCache unter Windows. Wir haben Docker-Images verfügbar. Volle Unterstützung in der Produktion und wir verfügen über vollständig integrierte Überwachungs- und Verwaltungstools, die Sie nutzen können. Dies sind Webverwaltungs- und Überwachungstools auf die Sie von überall zugreifen können. So können Sie sogar Ihre Linux-Bereitstellungen verwalten und überwachen, wie Sie Ihre Windows-Bereitstellungen mit NCacheLinux wird auch unterstützt auf Redis. Daher ist die Produktionsunterstützung verfügbar durch Redis Labor. Azure Redis wird auch auf der Linux-Version gehostet. Es wird also vom Anbieter selbst unterstützt.

Der zweite Aspekt nach der Plattform ist wiederum .NET und .NET Core, der Technologie-Stack. Wir bieten einen offiziellen Client an. Wir haben ihn implementiert und bieten umfassenden Support dafür. Sollten Funktionsumfänge erforderlich sein, dann ist dies der Grund dafür. NCache ist durchgängig kompatibel. Wenn Sie sich also für eine On-Premise- oder Azure- oder AWS-Umgebung entscheiden, haben Sie die gleiche Auswahl an NCache und sein Kunde sind flächendeckend verfügbar. Und wenn Änderungen vorgenommen werden müssen, werden wir diese offiziell bereitstellen, da wir sowohl für das Projekt als auch für alles verantwortlich sind. Wohingegen für Redis Es handelt sich um einen Drittanbieter. Für verschiedene Sprachen wird der Support auch von verschiedenen Anbietern bereitgestellt. Es kann also Unterschiede im Funktionsumfang geben. Es kann Unterschiede im Release-Zyklus geben. Sie sind also hinsichtlich der Technologie und der Client-Anforderungen auf Drittanbieter-Clients angewiesen.

Ich möchte einige Aspekte hervorheben rund um NCache da es sich um ein natives .NET- und .NET Core-Produkt handelt. NCache wird sowohl unter Windows als auch unter Linux vollständig unterstützt. Wobei Redis ist unter Windows nicht sehr stabil. Es handelt sich um die portierte Version eines Drittanbieters und Linux-Unterstützung ist verfügbar. Sie müssen sich also auf Linux-Unterstützung verlassen, soweit Redis ist besorgt. Da Sie aus dem Bereich Microsoft-Technologie kommen, ist dies etwas, worauf Sie sich verlassen müssen.

Cache-Leistung und Skalierbarkeit

Der zweite Aspekt ist unsere Cache-Leistung. Auch das ist ein sehr wichtiger Aspekt.

Leistungsperspektive

Beide Produkte sind sehr schnell und das ist die Idee hier, dass Hauptvorteil von NCache und RedisDer Hauptgrund für die Wahl eines solchen Produkts ist die Leistungssteigerung. Wir haben bereits festgestellt, dass Datenbanken langsam und wenig skalierbar sind. Diese Produkte sind dagegen schnell und sehr skalierbar. Ich würde also nichts von Redis. Nur die Windows-Version ist nicht stabil und es gibt Leistungsprobleme, aber wenn Sie die Linux-Version haben, ist sie auch sehr schnell und skalierbar und sie ist extrem schnell und NCache ist außerdem sehr schnell. Es ist sehr skalierbar. Wir haben unser eigenes implementiertes TCP/IP-basiertes Clustering-Protokoll, das sehr optimiert und sehr leistungsfähig ist.

Allerdings gibt es auch hier einige Unterschiede. Innerhalb NCache Wir haben viele Funktionen zur Leistungsverbesserung. Wir haben kürzlich auch ein Webinar durchgeführt, in dem wir sechs verschiedene Möglichkeiten zur Verbesserung besprochen haben NCache Leistung. Wenn Sie einrichten NCache Standardmäßig erhalten Sie eine sehr gute Leistung, aber darüber hinaus können Sie je nach Anwendungsfall verschiedene Funktionen aktivieren und die Leistung weiter verbessern. Eine dieser Funktionen ist unser Client-Cache.

NCache: Client-Cache (Near-Cache)

Client Cache ist eine Funktion, die einzigartig ist in NCache. Redis verfügt nicht über diese Funktion.

Client-Cache

Es handelt sich um einen lokalen Client-Cache, der auch für serverlose Anwendungen möglich ist. Sie können eine InProc-Kopie innerhalb Ihres Anwendungsprozesses erstellen und/oder für serverbasierte Anwendungen einen Out-of-Process-Client-Cache verwenden. Die Idee dahinter ist, teure Netzwerkverbindungen zu Ihrem Cache-Cluster zu sparen. Dieser Cache sparte bereits Verbindungen zu den Back-End-Datenquellen. Nun können Sie einen Zwischenspeicher verwenden und davon ausgehen, dass Sie 100 Elemente im Cache haben. Wenn Sie einige Elemente auf der Anwendungsseite eingeben, sagen wir 10 Elemente, werden diese 10 Elemente automatisch in den Client-Cache zurückgeladen. Beim nächsten Mal findet Ihre Anwendung die Daten näher an Ihrer Anwendung, wodurch teure Netzwerkverbindungen gespart werden.

Und dies ist ein synchronisierter Client-Cache. Die Synchronisierung wird verwaltet von NCacheJede Änderung in der Client-Cache wird im Server-Cache propagiert, da dieser die Masterkopie ist. Dies ist eine Teilmenge der Daten, und diese Änderung wird auch an andere Client-Caches weitergegeben. Wenn Sie ein Referenzdatenszenario haben. Wenn Sie viele Lese- und Schreibvorgänge haben, empfehlen wir Ihnen dringend, den Client-Cache zu aktivieren. Dies würde Ihnen eine sehr gute Leistung im Vergleich zu einem Cache bieten, der mit unserer Datenbank läuft.

Wir haben kürzlich einen POC mit einem unserer größeren Kunden durchgeführt. Der Workflow dauerte mit Standardkonfigurationen etwa 46 Sekunden. Sie erstellten eine Reihe von NCache Aufrufe und Datenabrufe. Es handelte sich also primär um einen leseintensiven Anwendungsfall. Wir haben den Client-Cache außerhalb des Prozesses aktiviert. Es gibt übrigens zwei Varianten: Entweder man lässt ihn außerhalb des Prozesses, d. h. ein separater Cache-Prozess läuft auf der Anwendungsseite, oder man nutzt InProc, wo der Client-Cache innerhalb des Anwendungsprozesses läuft. InProc benötigt weder Serialisierung noch Prozess-zu-Prozess-Kommunikations-Overhead. Daher ist es extrem schnell. Sogar im Vergleich zu OutProc ist es schneller. Bei diesem Kunden dauerte der Workflow etwa 46 Sekunden, bis er startete. Dann haben wir den Client-Cache außerhalb des Prozesses aktiviert, wodurch er auf 3 bis 4 Sekunden reduziert wurde. Anschließend haben wir den InProc-Client-Cache aktiviert und konnten all dies innerhalb von 400 bis 500 Millisekunden erreichen. Von 46 Sekunden auf 400 bis 500 Millisekunden – das ist die Art von Verbesserung, von der wir sprechen. Diese Funktion ist in keinem anderen Produkt oder sogar in anderen Varianten von Rediseinschließlich Redis Labs, einschließlich Open-Source-Projekt und Azure Redis.

Sie können die Leistung mithilfe unseres Client-Cache optimieren, ohne dass dafür Codeänderungen erforderlich sind. Es handelt sich lediglich um eine Konfiguration, die Sie aktivieren.

Massenvorgänge werden auf beiden Seiten unterstützt, jedoch mit NCache Unsere Massenoperationen arbeiten auf dem gesamten Cache-Cluster. Das bedeutet: Wenn Sie zehn Server haben und Ihre Daten vollständig verteilt sind, ruft ein Massenaufruf die Daten von allen Servern ab und liefert das konsolidierte Ergebnis. Alle diese Operationen arbeiten zusammen, um ein Ergebnis zu formulieren, das vollständig ist. Wohingegen Redis Massenoperationen erfolgen auf Shard-Ebene. Sie müssen also mit Daten auf einem bestimmten Shard arbeiten. Das ist die Einschränkung. Wenn Sie beispielsweise mehrere Knoten im Cache-Cluster haben und Master-Shards verfügbar sind, können Sie Massenoperationen auf einem bestimmten Shard durchführen.

Das ist also die Einschränkung. Ansonsten ist dies eine gute Funktion zur Leistungsverbesserung, bei der Sie, anstatt für einzelne Anfragen hin und her zu gehen, eine große Anfrage senden und alle Daten auf einmal erhalten und so Ihre Leistung unter Beweis stellen.

Serialisierung ist ein weiteres Feature und ein weiterer Aspekt, da die meiste Zeit mit der Serialisierung und Deserialisierung von Daten verbracht wird. Das gilt für NCache und im Bereich der Redis. Standardmäßig würden beide Produkte serialisieren und deserialisieren, aber mit NCache Es gibt eine Möglichkeit, den Serialisierungs- und Deserialisierungsaufwand zu reduzieren. Wir haben eine schnelle, komplexe Serialisierung entwickelt, die die Serialisierungszeit, die Ihre Anwendung normalerweise benötigt, optimiert. Ihre Objekte werden komplex. Ohne Codeänderungen können Sie sie als kompakte Typen definieren und NCache würde sicherstellen, dass zur Laufzeit eine kompakte Serialisierung auf ihnen ausgeführt wird, und es würde Ihren Serialisierungs- und Deserialisierungsaufwand verbessern.

Schließlich verfügen wir auch über eine Komprimierungsfunktion. Die Komprimierung erfolgt auf der Client-Seite. Typischerweise handelt es sich bei größeren Objekten, beispielsweise 2 MB, 3 MB oder 500 Kilobyte, um größere Objekte. Daher empfehlen wir normalerweise kleinere Objekte. Bei größeren Objekten ist jedoch die Netzwerkauslastung hoch und die Leistung nimmt ab. Mit NCache Sie können die Komprimierung aktivieren. Dies ist eine Option ohne Codeänderung, die auf der Redis Seite und es komprimiert Elemente automatisch beim Hinzufügen zum Cache. So werden kleinere Objekte hinzugefügt und zwischen Ihrer Anwendung und dem Cache übertragen, und dasselbe kleinere Objekt wird auch auf der Anwendungsseite abgerufen. Der Umgang mit kleinerer Nutzlast verbessert die Leistung Ihrer Anwendung. Die Gesamtleistung der Anwendung wird also gesteigert, wenn Sie die Komprimierung aktiviert haben.

Wir empfehlen daher, bei allen Objekten, die größer als beispielsweise 100 Kilobyte sind, unbedingt die Komprimierung zu aktivieren. Es gibt einen Schwellenwert, den Sie aktivieren können. Nur größere Objekte werden komprimiert, kleinere Objekte bleiben unverändert.

Daher sind alle diese Funktionen zur Leistungsverbesserung, Client-Cache, Massenvorgänge, kompakte Serialisierung und Komprimierung entweder nicht verfügbar oder Redis. Beispielsweise ist der Client-Cache nicht verfügbar. Massenoperationen sind zwar möglich, aber eingeschränkt. Es gibt keine Optionen zur Serialisierungsoptimierung und Komprimierung ist nicht verfügbar. Hier besteht also ein klarer Unterschied zwischen NCache und Redis, Wobei NCache ist ein Komplettpaket, in das wir viele leistungsorientierte Funktionen integriert haben.

Hochverfügbarkeit

Das nächste Segment ist die Hochverfügbarkeit und hier werden Sie einen großen Unterschied im Funktionsumfang sehen zwischen NCache und Redis. Hochverfügbarkeit ist ein weiterer Aspekt, der diese Teile vergleichbar macht. Für unternehmenskritische Anwendungen ist dies ein sehr wichtiger Aspekt, da Sie eine Quelle benötigen. Sie bringen Ihre Daten, die normalerweise in der Datenbank gespeichert sind, und innerhalb der Datenbank gibt es eine Art Spiegelung und Backups, richtig?

Die Datenverschiebung in einem Produkt mit verteiltem Cache verbessert zwar die Leistung und ist sehr skalierbar, hohe Verfügbarkeit ist jedoch ein sehr wichtiger Aspekt. Für unternehmenskritische Anwendungen sind Ausfallzeiten nicht akzeptabel. Sie würden sich negativ auf Ihr Geschäft auswirken und die Benutzerfreundlichkeit beeinträchtigen. Daher ist es unbezahlbar. Daher ist es sehr wichtig, dass Ihre Anwendung immer eine Antwort aus dem Cache erhält, in dem die Daten gespeichert sind. Hier gibt es also eine Vielzahl von Funktionsunterschieden.

Cache-Cluster

NCache ist ein Cache-Cluster mit 100 % Peer-to-Peer-Architektur.

Cache-Cluster

Es ist dynamisch und selbstheilend und ich werde darüber sprechen, wie das funktioniert, aber im Vergleich Redis verwendet Master / Slave. Da es sich also um eine Peer-to-Peer-Architektur handelt NCache ermöglicht das automatische Hinzufügen und Entfernen von Servern und integriert sich nahtlos in Ihre Anwendungen. Sie können beliebig viele Server hinzufügen. Beispiel: Sie haben mit zwei Servern begonnen und möchten nun einen dritten Server hinzufügen. Dies ist im Handumdrehen möglich. Sie müssen weder den Cache noch die damit verbundenen Client-Anwendungen stoppen. Ein nahtloses Erlebnis ist gewährleistet. So können Ihre Anwendungen dank unserer Hochverfügbarkeits- und Datenzuverlässigkeitsfunktionen ohne Ausfallzeiten oder Datenverlust weiterlaufen. Während in Redis Sie können nicht automatisch neue Shards hinzufügen. Da es keine automatische Datenverteilung gibt. Das ist der Kern der dynamischen Natur unseres Cache-Clusters. Innerhalb NCache, es gleicht die Daten automatisch neu aus, wenn Sie neue Server hinzufügen möchten.

Hochverfügbarkeits-Cache-Cluster

Es gibt also zwei Szenarien: Das eine ist, dass Sie einen neuen Server hinzufügen, um die Kapazität zu erhöhen und die Skalierbarkeit zu verbessern, und das andere ist, dass Sie einen Server ausschalten.

Lassen Sie uns zunächst das Szenario des Hinzufügens eines Knotens angehen. Ein neuer Knoten wird hinzugefügt. Mit NCache, würden Ihre Daten automatisch verteilt.

dynamische-partitionen-2

Wenn Sie beispielsweise von 2 auf 3 Server zwei weitere hinzufügen (Sie hatten hier 2 Elemente), werden die vorhandenen Daten auf den neu hinzugefügten Server übertragen und ausgeglichen. Dieser Server übernimmt also einen Teil der Daten von den vorhandenen Servern, und das geschieht automatisch. Es ist dynamisch. Es findet also ein automatischer Datenausgleich statt. Mit Redis, es handelt sich um eine manuelle Neuverteilung der Daten und dies gilt für Azure Redis Azure bietet verschiedene Stufen an: eine Basisstufe, eine mittlere Stufe und eine erweiterte Stufe. Clustering ist hier nur bei der erweiterten Stufe möglich, die ebenfalls teuer ist. Zudem werden mindestens drei Server benötigt, was wiederum eine Einschränkung darstellt.

Mit NCache Sie können Clustering sogar mit nur zwei Servern vollständig betreiben. Darüber hinaus erfordert das Hinzufügen eines neuen Servers eine manuelle Datenausbalancierung. Das ist ein großes Problem. Sie hätten also gewisse Einschränkungen bei der Anwendung und bei der Kapazitätserweiterung. Während mit NCache Sie können dies zur Laufzeit erreichen. Sie können im laufenden Betrieb weitere Server hinzufügen.

Der zweite Aspekt ist ein Serverausfall. Wir haben also innerhalb Redis Wir haben ein Master- und Slave-Konzept. Ein Master repliziert Daten zum Slave. Es gibt einen Slave-Shard. Der Master muss also Daten replizieren, und zwar entweder synchron oder asynchron. In RedisWenn ein Slave-Shard ausfällt, stoppt der Master selbst und der Cluster wird unbrauchbar. Das ist ein großes Problem und kann ständig passieren. Nur bei On-Premise-Bereitstellungen mit Open Source oder Redis Laboreinsatz von Redis. In diesem Fall würde der Cluster selbst unbrauchbar, wenn ein Server ausfällt, der zufällig der Slave eines Master-Shards ist. Sie müssen also manuell eingreifen, um dieses Szenario zu beheben. Während innerhalb NCache es geschieht automatisch. Jeder Server kann ausfallen, der überlebende Knoten kann aktiv oder ein Backup sein.

dynamische-partitionen-1

Beispiel: Dieser Server fällt aus. Dies ist eine aktive Partition, die auch eine Backup-Partition hat. Fällt der gesamte Server aus, wird die Backup-Partition aktiv. Die Backup-Partition wird aktiv und Sie erhalten alle Daten vom verbleibenden Knoten. Ein integriertes Verbindungs-Failover ist integriert. Jeder Serverausfall wird von Clients zur Laufzeit erkannt und ein Failover auf die verbleibenden Knoten durchgeführt. Hier möchte ich dieses Konzept mit dem Redis Sie benötigen mindestens 3 Server. Dies ist das Konzept der Mehrheitsregel. Der Cluster-Koordinator muss eine Wahl gewinnen. Das ist nicht der Fall bei NCache. Sie können einen voll funktionsfähigen Cache-Cluster mit nur 2 Knoten starten und erhalten volle Hochverfügbarkeitsfunktionen. Bei jedem Serverausfall ist ein überlebender Knoten voll funktionsfähig, was bei Redis.

Dynamische Konfigurationen. Sie können Clusterkonfigurationen zur Laufzeit ändern. Dies beinhaltet das Hinzufügen neuer Server, das Entfernen von Servern oder das Ändern einiger Einstellungen im Cache-Cluster. Dies können Sie zur Laufzeit auf einen gesamten Crash-Cluster anwenden, ohne ihn zu stoppen. Während für Redis, es ist begrenzt. Es gibt viele Konfigurationen, die Sie manuell anwenden müssen, und dann gibt es viele Cluster-Integritätsereignisse, die verfügbar sind auf NCache Seite, die Sie abonnieren können. Darüber hinaus können Sie Überwachungs- und Verwaltungstools verwenden. Wohingegen Redis verfügt nicht über diese Funktionen.

Dies ist ein sehr wichtiges Konzept. Lassen Sie es mich kurz zusammenfassen. Das Hinzufügen und Entfernen eines Servers in Redis Dies würde viele Probleme bereiten. Hinzugefügte Daten würden nicht automatisch neu ausbalanciert. Es handelt sich also nicht um eine hundertprozentige Peer-to-Peer-Architektur. Die Kapazität des Cache-Clusters ist also begrenzt. Fällt ein Slave-Shard aus, wird der Cluster selbst unbrauchbar. Denn es gibt ein Verteilungsproblem, das Sie nun manuell verwalten müssen. Failover erfolgt doch auch manuell, oder? Fällt also ein Server aus, müssen Sie ein manuelles Failover durchführen und die verbleibenden Knoten verwenden. Wenn Sie neue Server hinzufügen, müssen Sie manuell auf die neu hinzugefügten Server umstellen.

Das sind also alle Einschränkungen, die Sie haben würden, und wissen Sie, ich wäre überrascht, wenn Sie eine Produktionsbereitstellung dieser Art verwenden würden und jetzt Kapazitäten hinzufügen oder Server für Wartungsarbeiten herunterfahren müssten. Das wäre also sehr schwierig mit Produkten wie Redis. Wohingegen, NCache bietet Ihnen ein nahtloses Erlebnis. Sie können Server im laufenden Betrieb hinzufügen oder entfernen, ohne dass dies Auswirkungen hat.

Dynamische Partitionen/Shards

Ein weiteres Konzept innerhalb des Clusters ist der Selbstheilungsmechanismus.

Hochverfügbarkeits-Dynamischer-Cluster

NCache verfügt über dynamische Partitionen. Sie fügen weitere Server hinzu, Daten werden neu verteilt, neue Partitionen werden zur Laufzeit erstellt. Ähnlich verhält es sich mit einem Serverausfall. Der Cluster stellt das Backup zur Verfügung und heilt sich selbst. Ein fehlerfreier 2-Knoten-Cache-Cluster wird erstellt, wenn Sie ihn von 3 auf 2 reduzieren. Auch die Zuverlässigkeit spielt eine Rolle. Es verfügt über Replikationspartitionen, die ebenfalls verfügbar sind auf Redis als Form von Slaves, aber ihre hohe Verfügbarkeit ist abhängig von der Replikation. Sie haben nicht mit Redis Sie hätten keine hohe Verfügbarkeit, wenn Sie keine Slave-Shards konfiguriert hätten. Sie müssen also Slave-Shards verfügbar haben. Während mit dem NCache, wir haben Topologien.

Zum Beispiel Partitionierter Cache, wo wir Master-Shards und Master-Partitionen haben. Wenn dieser Server ausfällt, ist die Verfügbarkeit immer noch hoch, da die Clients dies erkennen, ein Failover durchführen und den Survival-Knoten verwenden. Es kommt zu Datenverlusten, und das gilt für Redis Auch Datenverluste, da keine Replikation stattfindet, die Verfügbarkeit aber weiterhin hoch ist. Wir haben eine Erweiterung, die auch Replikationsunterstützung bietet. Fällt dieser Server aus, wird nicht nur das Backup des Servers verfügbar gemacht, sondern auch das Failover der Clients automatisch durchgeführt. Also, Redis ist begrenzt. Die hohe Verfügbarkeit hängt von der Replikation ab. Ohne aktivierte Replikation ist die hohe Verfügbarkeit nicht gegeben, was ebenfalls ein limitierender Faktor ist.

Und dann der Selbstheilungsmechanismus, obwohl kein manueller Eingriff erforderlich ist.

dynamische-partitionen-2

Wenn Sie mit drei Servern starten und einen Server ausfallen lassen, verwenden Sie eine aktive Partition, einen Master, und verlieren dann auch einen Slave eines anderen Servers. In diesem Fall befand sich das Backup von Server 3 auf Server 3, daher wird dieser aktiviert. Er wird zur Laufzeit den aktiven Partitionen hinzugefügt. Ein Eingriff ist nicht erforderlich. Es ist manuelle Arbeit erforderlich, und dann erstellt Partitionsserver 1 eine fehlerfreie Partition auf Server 2. Der Cluster heilt sich also automatisch selbst, und das ist die dynamische Natur von NCache im Vergleich zu RedisWofür Redis, Shards können zur Laufzeit nicht neu angepasst werden. Der Cluster stoppt, wenn der Slave-Shard ausfällt. Die Datenumverteilung erfolgt nicht dynamisch. Hohe Verfügbarkeit ist von der Replikation abhängig, was bei NCache. NCache bietet Ihnen auch ohne Replikation eine hohe Verfügbarkeit.

Alle Vorteile, die Sie daraus ziehen, NCache, macht es zu einem viel besseren Produkt, da diese Funktionen in Redis und dies gilt für Azure Redis. Dies gilt auch für Open Source, da es sich um sehr vergleichbare Produkte handelt, und dies gilt auch für Redis Labs Redis auch anbieten.

NCache Demo

Ich werde jetzt etwas Zeit darauf verwenden, das Produkt in Aktion zu zeigen, damit Sie einen Einblick bekommen, wie NCache wird konfiguriert. Das ist unsere Demo-Umgebung. Ich habe damit gearbeitet. Ich werde einfach einen neuen Cache erstellen. Dies ist unser Web-Management-Tool, das mit NCacheDer Serialisierungsmodus kann entweder binär oder JSON sein. Das bleibt ganz Ihnen überlassen. Ich werde den Cache einfach benennen und Ihnen zeigen, wie Sie einen Cache-Cluster erstellen, eine Client-Anwendung verbinden und ihn überwachen und verwalten.

Ich werde alles einfach halten, denn der Schwerpunkt dieses Webinars liegt auf NCache vs Redis, also werde ich alle Details einfach halten. Partitionierte Replik, das ist unsere am häufigsten empfohlene Topologie. Asynchrone Replikation zwischen aktivem und Backup. Sie können also Sync wählen. Asynchron ist schneller, also werde ich das wählen. Größe des Cache-Clusters. Dann werde ich diese Serverknoten angeben, wo NCache ist bereits installiert. TCP-Port. NCache ist ein TCP/IP-basiertes Kommunikationsprotokoll. Ich halte es einfach und aktiviere hier nur die Auslagerung, damit der Cache voll wird. Dadurch werden automatisch einige Elemente aus dem Cache entfernt und Platz für neuere Elemente geschaffen. Starten Sie diesen Cache und beenden Sie die Installation. Starten Sie dies automatisch beim Dienststart. Bei jedem Neustart meines Servers wird er automatisch dem Cache-Cluster beigetreten, und das war's. So einfach ist es, einen Cache-Cluster zu konfigurieren und ihn dann zu verwenden. Ich werde es Ihnen als Nächstes zeigen.

Cloud-Support (Azure und AWS)

Unser Managed-Service-Modell steht vor der Tür. Unsere nächste Version konzentriert sich darauf, ich denke, sie erscheint in zwei bis drei Wochen. Wir werden also ein vollständig verwaltetes NCache Software-as-a-Service-Modell sowohl in Azure als auch in AWS.

Cloud-Unterstützung

Derzeit wird es entweder ein VM-Modell sein. Wenn Sie vor Ort sind, können Sie physische oder VM-Boxen verwenden. Wenn Sie sich für Azure entscheiden, müssen Sie Ihre VM entweder über den Marktplatz einrichten oder Sie können einfach eine VM einrichten und dann installieren NCache Software können Sie von unserer Website herunterladen. Außerdem haben wir eine containerisierte Umgebung. Wir verfügen über Docker-Images und werden vollständig von Azure Kubernetes Service, EKS (Elastic Kubernetes Service) und allen anderen Plattformen unterstützt, zum Beispiel von OpenShift Kubernetes. NCache ist auf diesen Plattformen bereits vollständig integriert und wird vollständig unterstützt. Der verwaltete Aspekt ist in Vorbereitung. In zwei bis drei Wochen dürfte es vollständig verfügbar sein.

Ich zeige Ihnen das Statistikfenster, das ein Leistungsmonitor ist. Diese Überwachungsoptionen sind übrigens verfügbar für NCache, bezüglich NCache sowohl in der Windows- als auch in der Linux-Umgebung, richtig?

ncache-manager-vor-stress-test-tool

Ich werde also ein Stresstest-Tool ausführen. Ich glaube, es läuft bereits eines für einen anderen Cache. Ich werde also noch ein weiteres ausführen, um eine Dummy-Last auf unserem Cache-Cluster zu simulieren. Sie geben einfach den Namen an, und das Tool erkennt die Server automatisch anhand der Konfigurationsdateien und stellt eine Verbindung zu ihnen her.

ncache-manager-nach-stress-test-tool

Wir haben also den Status des vollständig verbundenen Clusters, Anfragen pro Sekunde mit Durchsatz, Latenz in durchschnittlichen Mikrosekunden pro Cache-Operation, Hinzufügungen, Abrufe, Aktualisierungen, Löschungen, Cache-Größe, CPU und Speicher. So erhalten Sie eine zentrale Überwachungsansicht. Sie können dieses Tool verwenden. Sie können auch Windows Perfmon verwenden.

Für Linux-basierte Systeme bieten wir unser maßgeschneidertes Monitoring an. Sie können unser Monitoring-Tool also auch direkt für Linux-Server nutzen und auch jedes Drittanbieter-Tool zur Überwachung verwenden. NCache auch. Das war also ein kurzer Einblick in unseren Cache-Erstellungsprozess. Einige Überwachungs- und Verwaltungsaspekte.

Kommen wir zurück. Wir besprechen einige Details. Als nächstes möchte ich das Cloud-Angebot/den Cloud-Support besprechen. Nun Redis Sie können einen nicht verwalteten Cache wählen, Sie können auch einen verwalteten Cache wählen und dann gibt es einen gehosteten Dienst, der verfügbar ist und die Verwaltungsoption von Drittanbietern ist. Die gehostete Option ist von Azure Redis, wo Sie eine Open-Source-Variante von Redis von Microsoft angepasst und als gehostetes Modell verfügbar. Während auf der NCache Auf der anderen Seite haben wir ein Cache-Server-Modell und ein VM-Modell. Den Container-Ansatz habe ich bereits besprochen. Er ist vollständig kompatibel mit Windows- und Linux-Containern. Wir bieten Videodemonstrationen für Azure Service Fabric für Windows-Container und Details zur Microservices-Architektur an. Wir haben den Azure Kubernetes Service, der Linux-Container verwendet. EKS – Elastic Kubernetes Service – und ich glaube, wir haben auch Red Hat OpenShift-Container über Kubernetes implementiert.

Das sind also alle verfügbaren Container-Bereitstellungsoptionen. Es ist flexibel und plattformunabhängig. Sie können es problemlos auf jeder Art von Containerplattform einsetzen. Der Managed Service steht vor der Tür, das haben wir bereits besprochen. Das ist also etwas, wo NCache hätte einen verwalteten Dienst gehabt, aber das ist in unserer nächsten Version.

Ein wichtiger Aspekt ist der Vorteil eines VM-Modells: Obwohl Sie sich mit einer VM statt mit einem Dienst verbinden müssen, haben Sie die volle Kontrolle. Sie können serverseitigen Code ausführen, worauf ich als Nächstes eingehen werde. Der wichtigste Aspekt ist jedoch die Leistung. Wir haben bereits besprochen, dass es viele Leistungsmerkmale innerhalb von NCache, die fehlen in RedisWenn Sie sich für Azure entscheiden Redis, müssten Sie eine Verbindung zur Azure-Infrastruktur herstellen. Dabei handelt es sich um VMs, die in einem separaten virtuellen Netzwerk laufen. Diese befinden sich zwar in der Nähe, sind aber dennoch weit voneinander entfernt. Es unterscheidet sich von Ihrem eigenen virtuellen Netzwerk in Microsoft Azure, in dem Sie alle Ihre Anwendungsbereitstellungen durchführen.

Mit NCache Sie können wählen, unsere NCache Bereitstellung im selben virtuellen Netzwerk wie Ihre virtuellen Anwendungsnetzwerke. Beispielsweise laufen Ihr App-Dienst, Ihre Azure-Website und Ihre Azure Microservices in einem virtuellen Azure-Netzwerk. Sie können Azure-VMs im selben virtuellen Netzwerk bereitstellen und so die Anwendungsleistung verbessern. Basierend auf unseren eigenen Tests in unserem Labor, NCache war vier- bis fünfmal schneller als das SaaS-Modell von Redis die Sie normalerweise in Microsoft Azure erhalten. Das ist also ein sehr wichtiger Aspekt, den ich hervorheben möchte.

Darüber hinaus erhalten Sie umfassende Kontrolle über Ihre VM. Sie haben die volle Kontrolle über das Starten eines Caches, die Vergrößerung und die volle Kapazität. Es gibt keine Begrenzung der Anforderungseinheiten, keine Größenbeschränkung, keinen Nutzungsbedarf und keine Kosten. Sie bringen Ihre eigene Lizenz mit, die auch unbefristet oder als Abonnementlizenz erhältlich sein kann. Diese kann in Bezug auf die Lizenzierung sehr flexibel sein. Darüber hinaus können Sie serverseitigen Code auf Ihrer NCache Server. Sie können dies vollständig verwalten. Sie können dies vollständig optimieren. Sie können viele Schnittstellen schreiben. Wie Read-Through, Write-Through, Write-Behind, Cache Loader und einige Compute Grid-Funktionen wie MapReduce, Aggregator, Entry-Prozessoren und dies ist nur möglich mit NCache. Selbst unser SaaS-Modell, das gehostet wird und alle diese Angebote zur Verfügung stellt, wird nicht der Fall sein mit Redis. Das ist also unsere Plattform.

Cache frisch halten

Nächstes Segment, die nächsten 15 Minuten, werde ich dem Vergleich der Funktionsebenen widmen. Dafür habe ich einige Segmente definiert. Ich fange also an, wenn Sie den Cache aktuell halten müssen. Das ist sehr wichtig. Es sollte ein separates Webinar nur dazu geben, wie Sie den Cache aktuell halten, insbesondere im Hinblick auf Back-End-Datenquellen, im Hinblick auf Ihre Anwendungsfälle.

Also im Vergleich zu Redis, du weißt, NCache hat auch auf dieser Seite viele Funktionen.

Cache aktuell halten

Wir haben ein zeitlich begrenztes Ablaufdatum, das absolut und gleitend ist, aber auch dafür steht uns ein automatischer Nachlademechanismus zur Verfügung. Redis hat nur absolutes und gleitendes Ablaufdatum ohne Nachlademechanismus. Zum Nachladen können Sie eine Schnittstelle namens Read-Through-Handler implementieren, die serverseitiger Code ist. Auch das ist möglich, weil NCache ermöglicht Ihnen den vollen Zugriff auf Ihre VMs, wo NCache wird gehostet. So können Sie serverseitigen Code auf NCache Und verwenden NCache Rechenleistung zur Unterstützung.

Sie können Ihren Cache mit der Datenbank synchronisieren. NCache ist sehr stark in der Datenbanksynchronisierung. Wir haben SQL-Abhängigkeit. Wir haben DB-Abhängigkeit, die nur DB-kompatibel ist. Wir haben .NET CLR Stored Procedures. All diese Funktionen ermöglichen Ihnen die Synchronisierung Ihres Caches mit der Datenbank. Die Idee dabei ist: Wenn sich in der Datenbank eine Änderung ergibt, ein Datensatz in der Datenbank geändert wird und dieser Datensatz zwischengespeichert war, können diese beiden Quellen nicht mehr synchron sein. Also, mit NCache, wenn es eine Änderung in der Datenbank gibt, können Sie diese Daten automatisch ungültig machen oder neu laden in NCache zur Laufzeit. Dies ist eine einzigartige Funktion NCache. Kein anderes Produkt verfügt über diese Funktion. Sie können also einen vollständig synchronisierten Cache mit Ihrer Back-End-Datenbank haben. Dies gilt nicht nur für relationale Datenbanken, wir bieten auch Funktionen für nicht-relationale Datenquellen.

Dateiabhängigkeiten sind eine weitere Funktion, mit der Sie Elemente von Dateien abhängig machen können. Ändert sich der Inhalt einer Datei, werden die entsprechenden Elemente automatisch entfernt oder neu geladen. Benutzerdefinierte Abhängigkeiten lassen sich mit jeder beliebigen Datenquelle verwenden, z. B. mit einer NoSQL-Datenbank, einem Dateisystem, einer relationalen Datenbank, einem beliebigen Konnektor oder einem beliebigen Webdienst. So können Sie Elemente flexibel nach Ihren Anforderungen validieren. Wir haben diese Abhängigkeit anhand von Cosmos DB implementiert und die Synchronisierung sichergestellt. NCache mit Cosmos DB. Wenn Sie NCache Neben Cosmos DB können Sie benutzerdefinierte Abhängigkeiten verwenden, und ich glaube, ich habe auch ein Webinar dazu gemacht.

Umgang mit relationalen Daten. Relationale Daten haben also Beziehungen. Elemente im Cache sind Schlüssel-Wert-Paare, sodass Sie Beziehungen zwischen verschiedenen Elementen herstellen können. Dies ist etwas, das auf Redis Seite. Sie müssten also die einzelnen Punkte einzeln behandeln. Während mit NCache Sie können Elemente in Eins-zu-Eins-, Eins-zu-Viele- oder Viele-zu-Viele-Gruppen zusammenfassen. Das übergeordnete Element wird bei einer Änderung berücksichtigt, das untergeordnete Element kann bei Bedarf automatisch ungültig gemacht oder neu geladen werden.

Datengruppierung, SQL- und LINQ-Suche

Ein weiterer Aspekt ist die Datengruppierung und -suche, wobei NCache ist sehr stark & Redis hat keine Funktionen. Und wieder gilt dies für Azure Redis die ohnehin sehr begrenzt ist. Die Open Source Redis ist leicht voraus, aber es ist immer noch begrenzt in Bezug auf die Funktionen. Auch die Redis Lab, die kommerzielle Version von Redis, das nicht mit diesen Funktionen ausgestattet ist.

SQL- und Linq-Suche

SQL-Suche ist verfügbar. Sie können Elemente innerhalb suchen NCache Basierend auf ihren Objektattributen. Die Objekte werden im Cache abgelegt. Sie können Indizes für ihre Attribute definieren. Beispielsweise können Produkte nach ihrer ID, ihrem Preis und ihren Kategorien indexiert werden, und Sie können nun anhand dieser Attribute nach diesen Produkten suchen. Ein typisches Beispiel wäre die Produktauswahl, bei der die Produktkategorie etwas ist oder der Produktpreis größer als 10 und der Produktpreis kleiner als 100 ist und NCache führt eine In-Memory-Suche für alle Elemente auf allen Servern aus, konsolidiert die Ergebnisse und liefert Ihnen den Ergebnissatz zurück. Sie müssen sich also nicht mehr mit Schlüsseln befassen. Sie rufen Daten basierend auf einem Kriterium ab.

LINQ-Suchen sind ebenfalls verfügbar. Wir bieten .NET- und .NET Core-Anwendungen an. Wenn Sie LINQ-Suchen verwenden, können Sie diese ausführen. NCache Das ist ein einzigartiges Feature für NCache woher Redis hat keine Unterstützung. Redis alle Geschmacksrichtungen von Redis, haben diese Unterstützung nicht.

Sie können Gruppen und Untergruppen haben. Sie können logischerweise Sammlungen innerhalb NCache. Das ist nicht verfügbar in Redis und Sie können Daten basierend auf diesen Gruppen abrufen, aktualisieren und entfernen.

Tags und benannte Tags können zugeordnet werden. Sie können beispielsweise Schlüsselwörter verwenden, die Ihren Artikeln zugeordnet werden können. Ein typisches Beispiel wäre, alle Kunden mit einem Kundentag zu versehen. Alle Bestellungen mit einem Bestelltag und Bestellungen eines bestimmten Kunden können zusätzlich mit einer Kunden-ID als Tag versehen werden. Wenn Sie Bestellungen benötigen, geben Sie einfach „Nach Tag abrufen“ ein und geben die Bestellungen als Tag an, um alle Bestellungen zu erhalten. Wenn Sie Bestellungen eines bestimmten Kunden benötigen, geben Sie „Nach Tag abrufen“ oder „Nach Tag abrufen“ ein und geben die Kunden-ID an. Dadurch erhalten Sie alle Bestellungen, jedoch nur für diese Kunden-ID. Das ist also die Flexibilität, die Ihnen die Verwendung von Tags und benannten Tags bietet. NCache. Redis unterstützt diese nicht.

Serverseitiger .NET-Code

Serverseitiger Code

Wir haben bereits besprochen, dass wir typischerweise das Cache-Aside-Muster verwenden. Dabei prüfen wir zunächst die Daten im Cache. Werden sie dort gefunden, kehren wir zurück. Sind keine Daten im Cache vorhanden, gehen wir zur Backend-Datenbank unserer Anwendung, holen die Daten und speichern sie im Cache. Es gibt also einen Nullwert, wir rufen den Nullwert ab und gehen dann zur Datenbank. Das lässt sich mit Hilfe des Read-Thru-Handlers automatisieren. Es handelt sich um einen serverseitigen Code, der auf Ihrem NCache Server. Unser Managed Service verfügt ebenfalls über diese Funktion. Sie implementieren also diese Schnittstelle, die Ihnen die Verbindung zu jeder beliebigen Datenquelle ermöglicht. Dies kann ein Webdienst, eine relationale oder eine nicht-relationale Datenquelle sein. Es gibt eine Reihe von Methoden, die aufgerufen werden, sobald im Cache ein Nullwert gefunden wird.

Sie rufen also die Methode Cache.Get auf und aktivieren das Read-Thru-Flag. Wenn sich das Element nicht im Cache befindet, wird der Aufruf an Ihren Read-Thru-Handler weitergeleitet. Dadurch holen Sie Daten aus der Backend-Datenbank, indem Sie diesen Handler-Code durchlaufen. Dies ist Ihr Benutzercode, der auf NCache Serverseite. So können Sie nahtlos durch NCache und erhalten Sie die Daten, die Sie benötigen.

Das Gegenteil davon ist Write-Through, das ebenfalls unterstützt wird und Redis verfügt nicht über diese Funktionen, mit denen Sie etwas im Cache aktualisieren können und nun die Datenbank aktualisieren möchten. Sie können die Datenbank aktualisieren, indem Sie Ihren Write-Through-Handler aufrufen. Sie implementieren und registrieren diesen Write-Through-Handler und NCache würde es aufrufen, um die Backend-Datenbank zu aktualisieren, und Write-Behind ist das Gegenteil davon. Jede Aktualisierung im Cache, Client-Anwendung gibt zurück und NCache würde die Backend-Datenbank asynchron hinter den Kulissen aktualisieren. Also, NCache kann sogar Ihre Leistung für Schreibvorgänge auf der Datenbank verbessern, was nicht möglich ist mit Redis oder jedes andere Produkt, falls Sie keine Möglichkeit haben, serverseitigen Code auszuführen. Es handelt sich hierbei um eine rein native .NET- und .NET Core-Klassenbibliothek, die Sie implementieren und als Lese- und Schreibschnittstellen registrieren können, was mit NCache.

Ein weiteres Feature ist der Cache Loader. Hier können Sie den Cache vorab füllen, indem Sie eine Schnittstelle implementieren und sich bei NCache. Jedes Mal, wenn Sie Ihren Cache neu starten, laden Sie automatisch einige Ihrer wichtigen Daten in NCache Und das läuft auf allen Servern gleichzeitig. Es ist also superschnell. Sie können alle Ihre Daten vorab ausfüllen und müssen nie wieder zur Datenbank gehen. Sie finden die Daten immer, weil Sie sie vorab geladen haben.

Serverseitiger Code-2

Benutzerdefinierte Abhängigkeit, Entry-Prozessor, das sind wieder Funktionen, die nur einzigartig sind für NCache und der Hauptgrund dafür, dass diese Funktionen nicht genutzt werden können. Zunächst einmal, Redis verfügt nicht über diese Funktionen, Module werden in Azure nicht unterstützt Redis oder sogar in Open Source Redis. Der serverseitige Code ist mit Azure nicht möglich Redis. In erster Linie, weil Sie keinen Zugriff auf die zugrunde liegenden VMs haben, und das war der Hauptgrund, auf den ich mich zuvor bezog, dass mit NCache Bei einem VM-Modell haben Sie derzeit vollen Zugriff darauf, wo Sie es einsetzen, wie Sie es steuern und verwalten. Sie haben also die volle Kontrolle. Es ist keine Blackbox wie Redis ist.

WAN-Replikation für mehrere Rechenzentren

Noch ein paar Details, dann komme ich zum Schluss. Die WAN-Replikation ist ein weiterer Aspekt.

WAN-Replikation

Aktiv-Passiv wird unterstützt auf Redis, wo Sie das gesamte Rechenzentrum und den Cache von einem Rechenzentrum zum anderen übertragen können. In NCacheWir haben Aktiv-Passiv. Das bedeutet, dass Daten von einem Rechenzentrum zum anderen übertragen werden. Wir haben auch Aktiv-Aktiv, ein sehr wichtiger Anwendungsfall, bei dem beide Standorte aktiv sein können. Sie benötigen die Updates von Standort eins auf Standort zwei und umgekehrt. Das ist also keine Funktion auf Redis Seite. Sie haben diese Fähigkeit nicht, also können Sie keine Active-Active-Sites mit Redis. Mit NCache Dies gilt für Ihren Anwendungsfall des App-Daten-Cachings, bei dem Daten auf beiden Sites aktualisiert werden. Dies ist auch über unsere Multi-Site-Sitzungen möglich. Das ist also ein weiterer Bereich, in dem NCache ist ein klarer Gewinner.

WAN-Replikationsdiagramm

Cache-Topologien

Dann noch ein paar weitere Details. Caching-Topologien. Wir haben eine riesige Liste von Caching-Topologien im Vergleich zu Redis.

Caching-Topologien

Basierend auf verschiedenen Anwendungsfällen haben wir gespiegelt, repliziert, partitioniert und dann Partitionsreplikate und dann haben wir bereits diskutiert, wir haben besprochen, wie NCache Clustering ist im Allgemeinen besser und wir haben viel mehr Optionen im Vergleich zu Redis Angebote

GUI-Tools – Cache-Verwaltung und -Überwachung

Dann haben wir GUI-Tools. Hier ist ein Vergleich. Manager, Monitor.

GUI-Tools

Wir verfügen über PowerShell-Tools, Dump- und Reload-Tools sowie integrierte Administrations- und Überwachungsfunktionen. Redis ist auch an dieser Front begrenzt und als Teil davon habe ich Ihnen einige Details gezeigt und das gilt sowohl für Windows als auch für Linux-Bereitstellungen von NCache.

ASP.NET-spezifische Funktionen

Einige ASP.NET-spezifische Caching-Funktionen.

ASP-NET-Unterstützung

Sitzungen, wir haben standortübergreifende Sitzungen, die gemeinsame Nutzung von ASP.NET- und ASP.NET Core-Sitzungen ist in Vorbereitung. Standortübergreifende ASP.NET- und ASP.NET Core-Sitzungen sind verfügbar. Ansichtsstatus und Ausgabecaching. Redis hat nur Sitzungen, was im Vergleich zu sehr einfach ist NCache. Sitzungssperre, Sitzungsfreigabe ist Teil von NCacheAusgabecaching wird auf beiden Seiten unterstützt. Zusätzlich bieten wir SignalR Backplane und ASP.NET Core-Antwortcaching. Damit ist ein vollständiger Funktionsumfang für Ihre webspezifischen Caching-Anforderungen gewährleistet. Die detaillierte Funktionsübersicht finden Sie hier.

Laufzeitdatenfreigabe mit Ereignissen

Und dann haben wir Pub/Sub-Messaging.

Laufzeit-Daten-Sharing

Wir haben Ereignisse auf Artikelebene und wir haben auch ein kriterienbasiertes Ereignisbenachrichtigungssystem, das im Vergleich zu RedisIch habe ein separates Webinar zu unserem Pub/Sub-Messaging. Ich empfehle Ihnen daher dringend, sich dieses anzusehen, falls Sie Fragen haben. Ich denke, ich werde an dieser Stelle zum Schluss kommen.

pubsub

Integrationen von Drittanbietern

Schließlich Integrationen von Drittanbietern.

Drittanbieter-Integrationen

Wir haben auch NHibernate und Entity Framework. AppFabric Wrapper ist verfügbar. Memcached Wrapper ist verfügbar. Wenn Sie also von diesen Produkten wechseln, können Sie nahtlos zu NCache im Vergleich zu Redis.

Sicherheit & Verschlüsselung

Einige Details zu Sicherheitsverschlüsselung und ich glaube, wir sind bereits auf dem Zeitmarker.

Sicherheitsverschlüsselung

Fazit

Es ist also ein guter Zeitpunkt, es abzuschließen. Zunächst einmal können Sie jederzeit auf www.alachisoft.com gehen und eine Enterprise-Version herunterladen von NCache Wir zeigen Ihnen persönlich, wie es in Ihrer Umgebung funktioniert. Besuchen Sie unsere Website und testen Sie Enterprise 30 Tage lang kostenlos. Gerne vereinbaren wir eine Demo. Darüber hinaus stellen wir Ihnen eine Aufzeichnung dieses Webinars zur Verfügung. Behalten Sie unsere E-Mails und Social-Media-Kanäle im Auge, sobald wir Ihnen diese zukommen lassen. Falls wir Ihre Fragen heute nicht beantwortet haben – wir haben noch viele weitere Fragen und sind kurz davor –, schreiben Sie uns einfach eine E-Mail. support@alachisoft.com.

Wenn Sie technische Fragen haben, haben wir eine Antwort für Sie und wenn Sie Interesse haben, weiterzumachen und sich zu bewerben NCache in Ihrer Umgebung können Sie einfach kontaktieren sales@alachisoft.com .

Was macht man als nächstes?

 

© Copyright Alachisoft 2002 - Alle Rechte vorbehalten NCache ist eine eingetragene Marke der Diyatech Corp.