Redis vs NCache

Aufgezeichnetes Webinar
Von Ron Hussain und Zack Khan

NCache ist ein nativer verteilter .NET-Open-Source-Cache, der bei .NET mit hoher Transaktionsdichte sehr beliebt ist. .NET Core und Java-Anwendungen. 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 haben wir das Thema, zwei Produkte zu vergleichen, die sehr ähnlich, aber auch in vielerlei Hinsicht unterschiedlich sind. Also haben wir NCache das ist unser wichtigstes verteiltes Caching-Produkt für .NET und .NET Core Anwendungen und dann werden wir aus Sicht der Funktionen mit vergleichen Redis. Wir haben also viel zu tun. Ich werde viele technische Details durchgehen, beginnend mit der Plattform und dem Technologie-Stack. Dann sprechen wir über das Clustering. Wie vergleichen sich diese beiden Produkte in Bezug auf das Cache-Clustering und welche unterschiedlichen Vorteile ergeben sich aus der Verwendung dieser Produkte und wie im Vergleich dazu? NCache ist besser und dann werde ich über verschiedene Funktionen sprechen. Wir werden gehen Merkmal für Merkmal Vergleich in Bezug auf verschiedene Anwendungsfälle, in denen Sie diese Produkte verwenden können, und dann, wie diese beiden Produkte vom Standpunkt des Funktionsvergleichs aus verglichen werden.

Für dieses Webinar habe ich ausgewählt NCache Enterprise 5.0.2, soweit Redis Was dies anbelangt, werden wir uns hauptsächlich auf Azure konzentrieren Redis. Das ist Open Source Redis 4.0.1.4. Aber ich würde Ihnen auch Details über die geben Redis Open-Source-Projekt sowie Redis lab, das ist die kommerzielle Variante von Redis. Also werden wir vergleichen NCache mit all diesen Geschmacksrichtungen, aber unser Hauptaugenmerk wäre Microsoft Azure Redis, das gehostete Modell von Redis die Sie in Microsoft Azure erhalten können.

Das Skalierbarkeitsproblem

Bevor wir also beginnen, werde ich in erster Linie die einführenden Details zu diesen beiden Produkten durchgehen. Warum genau brauchen Sie also eine verteilte Caching-Lösung?

Also, und danach würden Sie fortfahren und verschiedene Produkte vergleichen. Typischerweise ist es also die Skalierbarkeits- und Leistungsherausforderung, die Sie möglicherweise in Ihrer Anwendung erleben. Es könnte sein, dass Ihre Anwendung eine große Datenlast erhält, und obwohl Ihre Anwendungsebene sehr skalierbar ist, können Sie jederzeit eine Webfarm erstellen, Sie können der Anwendungsebene weitere Ressourcen hinzufügen, aber alle diese Anwendungsinstanzen müssen zurückgehen und mit ihnen kommunizieren -Ende Datenquellen. Und wenn Sie zurückgehen und mit diesen Datenquellen sprechen müssen, sehen Sie Leistungsprobleme, da Datenbanken, typischerweise relationale Datenbanken, in Bezug auf die Handhabung der Transaktionslast langsam sind.

Es gibt ein Leistungsproblem, das mit ihnen verbunden ist, und dann in Bezug auf das Aufskalieren, zum Beispiel, wenn Sie viel Kapazität zur Bearbeitung von Anfragen oder Anforderungen haben müssen, um die wir viele Anfragen bearbeiten müssen und Ihre Anwendungen eine Menge davon generieren Benutzerlast ist die Datenbank nicht dafür ausgelegt, diese extreme Transaktionslast zu bewältigen. Es ist sehr gut für die Speicherung, wo Sie viele Daten speichern können, aber eine Transaktionslast für diese Daten zu haben, ist etwas, wofür die Datenbank kein sehr guter Kandidat wäre. Es kann ersticken. Es würde Ihnen Langsamkeit geben und die Endbenutzererfahrung kann beeinträchtigt werden.

Sie können sich also auf die Leistung auswirken 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, dass Sie ein verteiltes In-Memory-Caching-System wie verwenden NCache was superschnell ist, weil es im Speicher ist. Im Vergleich zu einer relationalen Datenbank oder einem Dateisystem oder einer anderen Datenquelle, die nicht speicherbasiert ist, wird es also super, wenn es von einer Festplatte kommt, im Vergleich zum Speichern Ihrer Daten im Speicher, In-Memory. schnell. Der erste Vorteil, den Sie daraus ziehen, ist also, dass Sie eine superschnelle Leistung erzielen NCache.

Der zweite Vorteil ist, dass es sich um einen Cache-Cluster handelt. Es ist nicht nur eine einzige Quelle. Sie können mit einem Server beginnen, aber normalerweise empfehlen wir, dass Sie mindestens zwei Server haben und einen Cache-Cluster erstellen, und sobald Sie diesen Cache-Cluster erstellen, würde es sich verbessern, wenn wir die Last einfach auf alle Server verteilen und Sie weitermachen Hinzufügen weiterer Server zur Laufzeit.

Sie können also Ihre Kapazität skalieren, Sie können die Kapazität zur Laufzeit erhöhen, indem Sie weitere Server hinzufügen, und Sie können sie auch in Kombination mit Ihren relationalen Backend-Datenbanken verwenden. Es ist kein Ersatz für Ihre herkömmlichen relationalen Datenbanken und 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 den Moment, aber später in dieser Präsentation werden wir vergleichen, wie Redis eingesetzt wird und wie NCache eingesetzt wird und welche Flexibilitäten innerhalb dieser Produkte verfügbar sind.

So für NCache, es ist sehr flexibel. Sie können es sowohl in einer Windows- als auch in einer Linux-Umgebung bereitstellen. Es ist sowohl lokal verfügbar als auch in Cloud-Umgebungen unterstützt. Es ist auch in Azure verfügbar AWS marketplaces. Sie können also nur ein vorkonfiguriertes Bild von erhalten NCache und fange damit an. Es stehen Docker-Container sowohl für Windows als auch für Linux zur Verfügung, die Sie auf jeder Plattform verwenden können, wo Sie diese benötigen.

In der Regel können Ihre Anwendungen, ob sie lokal oder in der Cloud gehostet werden, ein App-Dienst sein, es könnte ein Cloud service, es könnte ein Microservice sein, es könnte eine Azure-Website sein, jede Art von Anwendung kann sich damit im Client-Server-Modell verbinden und es befindet sich zwischen Ihrer Anwendung und Ihrer Back-End-Datenbank, und das ist das typische Nutzungsmodell. Die Idee hier ist, dass Sie Daten darin speichern würden NCache und sparen dadurch teure Fahrten zur Backend-Datenbank. Sie würden Reisen zur Datenbank so weit wie möglich einsparen, und wann immer Sie zur Datenbank gehen müssen, würden Sie immer zur Datenbank gehen, Daten abrufen und in den Cache bringen, damit diese Daten das nächste Mal existieren und Sie nicht haben um zur Datenbank zu gelangen. Und als Ergebnis wird die Leistung Ihrer Anwendung und die allgemeine Skalierbarkeit verbessert, da Sie jetzt einen Speicherzugriff haben, der die Leistung verbessert. Sie haben mehrere Server, die Ihre Anfragen, Ihre Datenanfragen, hosten und bedienen. Es ist also im Vergleich skalierbarer. Und dann gibt es noch Funktionen für hohe Verfügbarkeit und Datenzuverlässigkeit, die ebenfalls integriert sind NCache Protokoll.

NCache können 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, dass Sie eine separate dedizierte Cache-Ebene verwenden und dann Ihre Anwendungen, Anwendungsinstanzen auf ihrer jeweiligen Ebene ausgeführt werden. Aber beide Modelle werden soweit unterstützt NCache ist besorgt.

Skalierbarkeitszahlen

Einige Skalierbarkeitszahlen. Wir haben diese Tests kürzlich in unserem AWS-Labor durchgeführt, wo wir die Lese- und Schreibanforderungslast simuliert und die Last weiter erhöht haben, und nach einem bestimmten Punkt, als wir sahen, dass die Server ausgelastet sind, haben wir die Anzahl der Server im Cache-Cluster erhöht. Von 2 auf 3 Server und dann 3 auf 4 konnten wir also mit nur 2 einen Durchsatz von 5 Millionen Anfragen pro Sekunde erreichen NCache Server und das ist nicht, das war keine Touch-and-Go-Daten. Dies waren reale Anwendungsdaten, die jedoch in unserem AWS-Labor innerhalb unserer Anwendungen simuliert wurden. Und auch der Latenzfaktor wurde sehr optimiert. All dies konnten wir innerhalb einer Mikrosekunden-Latenzzeit erreichen. Die individuelle Anforderungsleistung wurde also nicht beeinträchtigt, als wir in der Lage waren, all diese Last zu erreichen.

Häufige Anwendungsfälle: Verteilter Cache

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

App-Daten-Caching

Wo Sie fast alles zwischenspeichern, was Sie normalerweise aus der Back-End-Datenbank abrufen, und Daten in Ihrer Datenbank vorhanden sind und Sie es jetzt zwischenspeichern möchten. So sparen Sie teure Fahrten zur Datenbank und wir haben bereits festgestellt, dass die Datenbank langsam und dann nicht sehr optimal in Bezug auf die Handhabung der Transaktionslast ist. Wir haben viele Funktionen zur Datenbanksynchronisierung in dieser Zeile, aber hier verbinden Sie sich einfach NCache und verwenden Sie im Grunde unsere APIs, um eine Verbindung herzustellen, wissen Sie, um Datenaufrufe zu tätigen NCache. Sie können also fast alles zwischenspeichern. Es können Ihre Domänenobjekte, Sammlungen, Datensätze, Bilder und jede Art von anwendungsbezogenen Daten sein, die mit unserem Daten-Caching-Modell zwischengespeichert werden können.

ASP.NET/ASP.NET Core Caching

Dann haben wir unser ASP.NET und ASP.NET Core spezifisches Caching. Das ist wieder ein technischer Anwendungsfall, wo Sie es für ASP.NET oder ASP verwenden können.NET Core Zwischenspeichern des Sitzungsstatus. ASP.NET oder ASP.NET Core SignalR Backplane. NCache als Backplane steckbar. Für ASP.NET Core Sie können es auch für das Response Caching verwenden. IDistributedCache-Schnittstelle und Sitzungen durch IDistributedCache Schnittstelle werden diese beiden Funktionen ebenfalls unterstützt NCache und für Legacy-Anwendungen können Sie es auch für View State und Output Caching verwenden. wollte Ron eine kurze Frage stellen.

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

Absolut. In Bezug auf die Azure-Bereitstellung können Sie Ihre Anwendungen entweder auf Servern bereitstellen oder Ihre Anwendung, soweit es Ihren Anwendungsteil betrifft, könnten dies auch serverlose Anwendungen sein. Sie können einfach unsere NuGet-Pakete in Ihre Anwendung einschließen und diese Anwendungen können einfach erstellt werden NCache ruft an, wann immer es nötig ist. Sie müssen nicht einmal eine Installation von haben NCache oder haben Sie ein Server-Setup für Anwendungsressourcen. Aber soweit, NCache Die serverseitige Bereitstellung selbst ist betroffen, weil NCache ist die Datenquelle, also muss es eine VM oder eine Reihe von VMs haben, mit denen Ihre Anwendungen eine Verbindung herstellen und Daten abrufen und hinzufügen.

Also, von Servern, NCache Cache-Server-Standpunkt, als Quelle, die Sie benötigen NCache Server, aber was Ihre Anwendungen betrifft, könnten diese streng serverlos sein und es gibt keine Probleme. Sogar Microservices-Architektur. Das ist ein sehr häufiges Beispiel für Microservices, es gibt viele Microservices. Es könnte eine Azure-Funktion geben, die nur ausgeführt wird und mit vielen Daten umgeht und aus der Daten stammen können NCache. Also behandeln Sie NCache als Datenquelle. Während Ihre Anwendungen serverlos sein können und NCache ist voll kompatibel mit diesem Modell.

Pub/Sub-Messaging und Events

Dann ist ein weiterer Anwendungsfall in der Nähe Pub/Sub-Nachrichten und das dreht sich um Microservices, denn das ist einer der beeindruckenden Anwendungsfälle, in denen Sie Messaging für serverlose Anwendungen verwenden können. Microservices sind lose gekoppelte serverlose Anwendungen und der Aufbau einer Kommunikation zwischen ihnen ist eine große Herausforderung. Sie können also unsere Pub/Sub-Messaging-Plattform verwenden, auf der Sie unseren ereignisgesteuerten asynchronen Ereignisverbreitungsmechanismus nutzen können. Wo mehrere Anwendungen Nachrichten veröffentlichen können NCache und Abonnenten können diese Nachrichten empfangen.

Da es sich um einen asynchronen, ereignisgesteuerten Mechanismus handelt, müssen Publisher-Anwendungen nicht auf die Bestätigung oder die Zustellung von Nachrichten warten und Abonnenten müssen nicht auf Nachrichten warten oder warten. Sie werden bei Benachrichtigungen per Rückruf benachrichtigt. Es ist also sehr flexibel und das ist ein weiterer Anwendungsfall, den Sie verwenden 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. Aktuelle Version von NCache ist 5.0, 15. Version. Wir haben viele, viele Kunden. NCache ist auch als Open-Source-Edition verfügbar. Diese können Sie sowohl von unserer Website als auch aus dem GitHub-Repository herunterladen.

Einige NCache Kunden

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

ncache-Kunden

Plattform & Technologie

Als nächstes werden wir darüber sprechen, wie NCache vergleicht mit Redis und das erste Segment baut auf einigen einführenden Details über die Technologie im Allgemeinen auf. Dies wird Informationen über verteilte Caching-Technologie sein. Jetzt konzentrieren wir uns direkt auf das Wie NCache vergleicht mit Redis und ich habe einige Segmente, die ich formuliert habe.

Der erste Abschnitt, den wir definiert haben, ist Plattform und Technologie, und ich habe anfangs erwähnt, dass wir zielen NCache 5.0.2. Damit, 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 und sprechen Redis Lab als Teil davon. Die meisten dieser Details sind für verschiedene Geschmacksrichtungen üblich Redis.

Nativer .NET-Cache

Wenn Sie also einen Azure-Hintergrund haben und vorhaben, sich für ein Produkt zu entscheiden, ist die Kompatibilität mit der Plattform die wichtigste Sache.

Technologie-Vergleich

Damit NCache selbst ist zu 100 % in .NET geschrieben. Es ist ein natives .NET oder.NET Core Produkt, was Ihre Anwendungen betrifft, richtig. Im Grunde ist es also in .NET und hauptsächlich für .NET-Anwendungen geschrieben und wird auf Windows Server 2016, 2019 und sogar 2012 bereitgestellt. Nur Voraussetzung für NCache is .NET framework or .NET Core für diese Angelegenheit. Während z Redis, es ist in C++ geschrieben. NCache ist in .NET geschrieben. Es ist zu 100 % entwickelt, eigentlich ist C# die wichtigste Technologiesprache, die wir verwenden, und es ist zu 100 % natives .NET und .NET Core. Während Redis ist eine C++ Linux-basierte Lösung.

Aus der Windows-Perspektive, dem Windows-Hintergrund und wenn Sie Ihre Anwendungen in .NET geschrieben haben, wäre die natürliche Wahl, ein Produkt zu verwenden, das auch in .NET geschrieben ist, damit Sie sich auf demselben Technologie-Stack befinden. Sie müssen nicht viele Variationen innerhalb des Anwendungsentwicklungsstapels haben. Das ist also ein Problem oder ein Unterschied zwischen diesen beiden Produkten.

Der zweite Aspekt ist Windows im Vergleich zu Linux, und dann wissen Sie, was verfügbar ist NCache und was verfügbar ist Redis Seite. Windows, aus Sicht von NCache Deployment, das ist ein bevorzugtes Deployment, aber wir haben auch ein Linux-Deployment mit Hilfe unseres verfügbar .NET Core Serverfreigabe. Wir sind also vollständig kompatibel mit Windows 2012, 2016, 2019. Unsere Docker-Images sind auch für die Windows-Variante verfügbar. Eine Variante von NCache. Sie können also einfach unser Docker-Image herunterladen und das Windows-Image einfach drehen NCache nach Bedarf und wir unterstützen es vollständig in der Produktionsumgebung. Es ist eine offizielle Unterstützung von unserer Seite. Während, wenn Sie vergleichen Redis sogar in Microsoft Azure die Redis wird auf Linux gehostet. Der bevorzugte Ansatz, das bevorzugte Bereitstellungsmodell ist Linux für Redis. Die Windows-Variante ist ein Drittprojekt. Microsoft Open Tech hat eine portierte Version davon. Es gibt keine offizielle Unterstützung von Redis selbst. Das Projekt selbst wird auf Eis gelegt. Es ist fehlerhaft, instabil und sogar das Azure Redis, wie bereits erwähnt, verwendet die Linux-Version und das große Problem dabei ist, dass Sie keine offizielle Unterstützung von haben Redis, Hersteller von Redis oder wenn Sie das Open-Source-Projekt verwenden und es in Ihren eigenen Räumlichkeiten bereitstellen möchten, würden Sie dort viele Probleme sehen.

In diesem Zusammenhang möchte ich auch einen weiteren Aspekt hervorheben, wenn Sie verwenden NCache On-Premise und Sie möchten jetzt von On-Premise migrieren und in Azure verwenden, dieselbe Software funktioniert wie sie ist. Es ist also keine Änderung durch einen Umzug erforderlich NCache von lokal zu Azure. Ebenso innerhalb von Cloud-Anbietern, wenn Sie die Verwendung planen NCache Auf Azure können Sie bei Bedarf einfach zu AWS migrieren. Denn auf allen Plattformen steht durchgängig die exakt gleiche Software zur Verfügung. Während, soweit Redis besorgt ist, Azur Redis ist ein gehostetes Modell, das in Bezug auf die Backend-Bereitstellung unter Linux bereitgestellt wird, aber Sie haben nicht dieselbe Variante vor Ort verfügbar. Sie müssen sich also mit Open Source befassen Redis oder irgendein Drittanbieter. Sogar Sie müssen sich für eine kommerzielle Variante entscheiden, die ein völlig anderes Produkt ist.

Also, das ist der Hauptpunkt, den ich hier hervorheben möchte Redis On-Premise, die Open Source ist, oder eine kommerzielle Version im Vergleich Redis in Azure bzw Redis in AWS, das ist Elastic Cache. Dies sind völlig separate Produkte. Es gibt also einen Übergang, es gibt eine Menge Veränderungen. Du kannst nicht portieren Redis von einer Umgebung in eine andere, ohne einige Änderungen durchzumachen. Einige Feature-Sets fehlen. Einige APIs sind anders. Das Bereitstellungsmodell wird zwischen diesen Produkten vollständig geändert. Es gibt also keine Änderungen, wenn Sie es behalten NCache On-Premise auf Windows oder Linux und jetzt möchten Sie migrieren und zu Azure wechseln, es wäre genau das gleiche Produkt, und jetzt möchten Sie es von Azure zu AWS ändern, Sie möchten den Cloud-Anbieter wechseln, es ist im Vergleich flexibler zu Redis. So, NCache ist viel flexibler.

Linux-Unterstützung, NCache ist voll kompatibel, offiziell unterstützt. Sogar die Leistung wird getestet und die Linux-Leistung ist superschnell wie auf Augenhöhe NCache unter Windows. Wir haben Docker-Images verfügbar. Vollständige Unterstützung in der Produktion und wir haben ein vollständig integriertes Überwachungs- und Management-Tool, das Sie verwenden können Webverwaltungs- und Überwachungstools auf die Sie von überall zugreifen können. So können sogar Ihre Linux-Bereitstellungen so verwaltet und überwacht werden, wie Sie Ihre Windows-Bereitstellungen bereitstellen, verwalten und überwachen würden NCache. Linux wird auch auf unterstützt Redis. Also, seine Produktionsunterstützung verfügbar durch Redis Labor. Azurblau Redis wird auch auf der Linux-Version gehostet. Es wird also vom Anbieter selbst unterstützt.

Der zweite Aspekt nach der Plattform ist wieder das .NET und .NET Core, der Technologie-Stack. Wir haben einen offiziellen Client zur Verfügung. Wir haben es umgesetzt. Wir unterstützen es voll und ganz und wenn es irgendwelche Feature-Sets gibt und das ist der Grund NCache ist durchgängig kompatibel. Wenn Sie sich also für On-Premise- oder Azure- oder AWS-Umgebungen entscheiden, haben Sie die gleiche Geschmacksrichtung von NCache und seinen Kunden flächendeckend verfügbar. Und wenn Änderungen vorgenommen werden müssen, werden wir diese Änderungen offiziell bereitstellen, da wir sowohl Eigentümer von allem als auch von Projekten sind. Während z Redis es ist ein Dritter. Für verschiedene Sprachen kommt also auch Support aus verschiedenen Sprachen von verschiedenen Anbietern. Es könnte also einen Funktionsunterschied geben. Es könnte einen Unterschied im Release-Zyklus geben. Sie müssen sich also technologisch auf Drittanbieter-Clients verlassen, was die Client-Anforderungen betrifft.

Daher möchte ich einige Aspekte der Umgebung hervorheben NCache als natives .NET und .NET Core Produkt. NCache wird sowohl unter Windows als auch unter Linux vollständig unterstützt. Wohingegen, Redis ist unter Windows nicht sehr stabil. Es ist die portierte Version von Drittanbietern und Linux-Unterstützung ist verfügbar und das ist es, also müssen Sie sich auf die Linux-Unterstützung verlassen Redis ist besorgt. Wenn Sie also von einem Microsoft-Technologiehintergrund kommen, müssen Sie sich darauf verlassen.

Cache-Leistung und Skalierbarkeit

Der zweite Aspekt ist unsere Cache-Performance. Das ist auch ein sehr wichtiger Aspekt.

Performance-Perspektive

Beide Produkte sind sehr schnell und das ist der Hauptvorteil der Idee hier NCache und Redis, der Hauptgrund, warum Sie sich für ein solches Produkt entscheiden würden, ist der Aspekt der Leistungsverbesserung. Wir haben bereits festgestellt, dass Datenbanken langsam und nicht sehr skalierbar sind. Diese Produkte sind im Vergleich schnell und sehr skalierbar. Also wegnehmen würde ich nichts Redis. Nur die Windows-Version ist nicht stabil und es gibt Leistungsprobleme, aber wenn Sie eine Linux-Version haben, ist sie auch sehr schnell und skalierbar und extrem schnell und NCache geht auch sehr schnell. Es ist sehr skalierbar. Wir haben unser eigenes implementiertes TCP/IP-basiertes Clustering-Protokoll, das sehr optimiert und sehr robust in der Leistung 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 angesprochen haben, wie Sie sich verbessern können NCache Leistung. Wenn Sie einrichten NCache Standardmäßig bietet es Ihnen eine sehr gute Leistung, aber darüber hinaus können Sie basierend auf Ihren Anwendungsfällen verschiedene Funktionen aktivieren und die Leistung weiter verbessern, und eine dieser Funktionen ist unser Client-Cache.

NCache: Client-Cache (in der Nähe von Cache)

Der Client-Cache ist eine einzigartige Funktion NCache. Redis hat diese Funktion nicht.

Client-Cache

Es ist ein clientseitiger lokaler Cache, der wiederum sogar für serverlose Anwendungen möglich ist, bei denen Sie eine InProc-Kopie in Ihrem Anwendungsprozess haben können, und/oder für serverbasierte Anwendungen können Sie einen Out-of-Process-Client-Cache verwenden . Die Idee hier ist, dass es teure Fahrten über das Netzwerk zu Ihrem Cache-Cluster sparen würde. Dieser Cache sparte bereits Fahrten zu den Back-End-Datenquellen. Jetzt können Sie einen Cache dazwischen haben und davon ausgehen, dass Sie 100 Elemente im Cache haben. Wenn Sie einige Elemente auf der Anwendungsseite eingegeben haben, sagen wir 10 Elemente, würden diese 10 Elemente automatisch und beim nächsten Mal wieder in den Client-Cache gebracht Ihre Anwendung würde diese Daten näher an Ihrer Anwendung finden und dadurch teure Netzwerkreisen sparen.

Und dies ist ein synchronisierter Client-Cache. Die Synchronisierung wird verwaltet von NCache. Jede Änderung in der Client-Cache wird auf dem Servercache als viel propagiert, da dies 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 dann Schreibvorgänge haben, empfehlen wir Ihnen dringend, den Client-Cache zu aktivieren, was Ihnen im Vergleich zu einem Cache, der für unsere Datenbank ausgeführt wird, eine sehr gute Leistung bieten würde.

Wir haben kürzlich einen POC mit einem unserer Kunden durchgeführt, einem unserer größeren Kunden. Wo sie einen Workflow hatten, der mit Standardkonfigurationen etwa 46 Sekunden dauerte. Sie machten eine Menge NCache Anrufe und Abrufen von Daten. Es war also in erster Linie ein leseintensiver Anwendungsfall. Wir haben den Client-Cache außerhalb des Prozesses aktiviert, übrigens gibt es zwei Varianten: Sie können ihn außerhalb des Prozesses halten, was bedeutet, dass ein separater Cache-Prozess auf der Anwendungsbox ausgeführt wird, oder Sie können InProc haben, wo der Client-Cache innerhalb Ihres Anwendungsprozesses ausgeführt wird. InProc hat keinen Serialisierungs- oder Verarbeitungsaufwand für die Verarbeitung der Kommunikation. Es ist also extrem schnell. Auch im Vergleich zu OutProc ist es schneller. Bei diesem Kunden dauerte der Workflow also ungefähr 46 Sekunden, um zu beginnen. Dann haben wir den Out-of-Process-Client-Cache eingeschaltet, es hat ihn auf 3 bis 4 Sekunden reduziert, und dann haben wir ihn weiter eingeschaltet, den InProc-Client-Cache eingeschaltet, und wir konnten all dies innerhalb von 400 bis 500 Millisekunden erreichen. Von 46 Sekunden auf 400 bis 500 Millisekunden, das ist die Art von Verbesserung, über die wir sprechen, und diese Funktion ist in keinem anderen Produkt oder sogar in anderen Geschmacksrichtungen verfügbar Rediseinschließlich Redis Labs, einschließlich Open-Source-Projekt und Azure Redis.

Sie können also die Leistung optimieren, indem Sie unseren Client-Cache verwenden, und es ist ein Job ohne Codeänderung. Es ist nur eine Konfiguration, die Sie aktivieren.

Massenoperationen werden auf beiden Seiten aber mit unterstützt NCache Das heißt, unsere Massenoperationen arbeiten auf dem gesamten Cache-Cluster, was bedeutet, dass bei zehn Servern und vollständig verteilten Daten ein Massenaufruf Daten von all diesen Servern abrufen und das konsolidierte Ergebnis abrufen würde. All diese arbeiten also zusammen, um ein Ergebnis zu formulieren, und dann erhalten Sie ein Ergebnis, das vollständig ist. Wohingegen Redis Bulk-Vorgänge befinden sich auf Shard-Ebene. Sie müssen sich also mit Daten auf einem bestimmten Shard befassen. Das ist also die Einschränkung. Wenn Sie, sagen wir, mehrere Knoten im Cache-Cluster haben und Master-Shards verfügbar sind, könnten Sie Massenoperationen auf einem bestimmten Shard durchführen.

Das ist also die Einschränkung. Ansonsten ist dies eine gute Leistungsverbesserungsfunktion, 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 als Ergebnis Ihre Leistung unter Beweis stellen.

Serialisierung, das ist ein weiteres Feature und es gibt noch einen weiteren Aspekt, denn die meiste Zeit würde man für das Serialisieren und Deserialisieren von Daten aufwenden, und das trifft zu NCache und im Bereich der Redis. Standardmäßig würden beide Produkte serialisieren und deserialisieren, aber mit NCache Es gibt eine Möglichkeit, den Aufwand für die Serialisierung und Deserialisierung zu verbessern. Wir haben eine schnelle komplexe Serialisierung, die Ihre Serialisierungszeit optimiert, die Ihre Anwendung normalerweise in Anspruch nehmen würde. Ihre Objekte werden komplex. Sie können sie also ohne Codeänderungen als kompakte Typen und definieren NCache würde sicherstellen, dass es zur Laufzeit eine kompakte Serialisierung auf ihnen ausführt, und es würde Ihren Serialisierungs- und Deserialisierungsaufwand verbessern.

Schließlich haben wir auch eine Komprimierungsfunktion. Die Komprimierung erfolgt auf der Client-Seite. Wenn Sie es mit größeren Objekten zu tun haben, sagen wir 2 MB, 3 MB oder sagen wir 500 Kilobyte, ist das normalerweise ein größeres Objekt. Daher empfehlen wir normalerweise, dass Sie sich mit kleineren Objekten befassen, aber wenn Sie größere Objekte haben, wird das Netzwerk stark ausgelastet, und dann wird auch die Leistung beeinträchtigt. Mit NCache Sie können die Komprimierung einschalten. Das ist eine Option ohne Codeänderung, die auf der nicht verfügbar ist Redis Seite und es würde automatisch Elemente beim Hinzufügen in den Cache komprimieren. Kleinere Objekte werden also hinzugefügt und übertragen, reisen zwischen Ihrer Anwendung und dem Cache, und in ähnlicher Weise wird dasselbe kleinere Objekt auch auf der Anwendungsseite wieder abgerufen. Der Umgang mit geringerer Nutzlast verbessert die Leistung Ihrer Anwendung. Die Gesamtleistung der Anwendung würde also erhöht, wenn Sie die Komprimierung aktiviert haben.

Wir empfehlen also, für jedes Objekt, das größer als beispielsweise 100 Kilobyte ist, unbedingt die Komprimierung einzuschalten, und es gibt einen Schwellenwert, den Sie aktivieren können, und nur größere Objekte werden komprimiert, kleinere Objekte bleiben unverändert.

Also sind all diese Leistungsverbesserungsfunktionen, Client-Cache, Massenoperationen, kompakte Serialisierung, Komprimierung entweder nicht verfügbar oder Redis. Beispielsweise ist der Client-Cache nicht verfügbar. Massenoperationen sind verfügbar, aber sie sind begrenzt. Es gibt keine Serialisierungsoptimierungsoptionen und Komprimierung ist etwas, das nicht verfügbar ist. Also, das ist, wo Sie einen klaren Unterschied zwischen haben NCache und Redis, Wobei NCache ist ein komplettes Paket, in das wir viele leistungsorientierte Funktionen eingebaut haben.

Hochverfügbarkeit

Das nächste Segment ist die Hochverfügbarkeit, und hier werden Sie einen großen Funktionsunterschied feststellen NCache und Redis. Hochverfügbarkeit ist ein weiterer Aspekt, bei dem diese Teile verglichen werden können. Für unternehmenskritische Anwendungen ist dies ein sehr wichtiger Aspekt, dass Sie eine Quelle benötigen. Jetzt bringen Sie Ihre Daten mit, die sich normalerweise in der Datenbank befinden, und innerhalb der Datenbank hätten Sie eine Art Spiegelung, eine Art Sicherung, richtig?

Wenn also Daten in ein Produkt mit verteiltem Cache verschoben werden, verbessert es zwar Ihre Leistung, ist aber sehr skalierbar, aber Hochverfügbarkeit ist ein sehr wichtiger Aspekt. Für unternehmenskritische Anwendungen sind Ausfallzeiten nicht akzeptabel. Dies würde sich auf Ihr Geschäft auswirken und die Benutzererfahrung kann beeinträchtigt werden. Es ist also nicht bezahlbar. Daher ist es sehr wichtig, dass Ihre Anwendung immer Antworten aus dem Cache erhalten kann, in dem Daten vorhanden sind. Hier haben wir 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. Also eine Peer-to-Peer-Architektur NCache ermöglicht Ihnen das automatische Hinzufügen und Entfernen von Servern und fügt sich nahtlos in Ihre Anwendungen ein. Sie können fortfahren und so viele Server hinzufügen, wie Sie benötigen. Beispielsweise haben Sie mit 2 Servern begonnen. Jetzt möchten Sie einen 3. Server hinzufügen, das können Sie im Handumdrehen tun. Sie müssen den Cache oder die Client-Anwendungen, die mit diesem Cache verbunden sind, nicht stoppen. Es wird eine nahtlose Erfahrung beobachtet. So können Ihre Anwendungen mit unseren Hochverfügbarkeits- und Datenzuverlässigkeitsfunktionen ohne Ausfallzeiten oder Datenverlust weiterarbeiten. Während, in Redis Sie können nicht automatisch neue Shards hinzufügen. Denn es findet kein automatischer Datenabgleich statt. Das ist der Kern der dynamischen Natur unseres Cache-Clusters. Innerhalb NCache, gleicht es die Daten automatisch neu aus, wenn Sie neue Server hinzufügen möchten.

Hochverfügbarkeits-Cache-Cluster

Es gibt also zwei Szenarien. In einem Szenario fügen Sie einen neuen Server hinzu, um Kapazität und Skalierbarkeit zu erreichen, und im anderen Szenario fahren Sie einen Server herunter.

Lassen Sie uns also zuerst das Szenario „Knoten wird hinzugefügt“ angehen. Ein neuer Knoten wird hinzugefügt. Mit NCache, Ihre Daten würden automatisch verteilt.

dynamische-partitionen-2

Zum Beispiel von 2 auf 3 Server, wenn Sie 2 weitere hinzufügen, hatten Sie hier 6 Elemente und Sie fügen einen weiteren Server hinzu, an den vorhandene Daten übertragen würden, werden auf den neu hinzugefügten Server ausgeglichen. Dieser Server würde also einen Teil der Daten von vorhandenen Servern übernehmen, und das wird automatisch geschehen. Es ist dynamischer Natur. Es findet also ein automatischer Datenabgleich statt. Mit Redis, handelt es sich um einen manuellen Neuausgleich von Daten, und dies gilt für Azure Redis da in Azure verschiedene Tarife verfügbar sind. Es gibt eine Basisstufe, eine Mittelstufe und eine Fortgeschrittenenstufe. Das Clustering kommt hier nur mit Advanced ins Spiel, was auch teuer ist, und obendrein benötigen sie mindestens mindestens 3 Server, was wiederum eine Einschränkung darstellt.

Mit der NCache Sie können das Clustering sogar mit nur 2 Servern vollständig einrichten und ausführen, und obendrein erfordert das Hinzufügen eines neuen Servers einen manuellen Datenausgleich. Das ist ein großes Problem. Sie hätten also eine Art Einschränkung bei der Anwendung und wenn Sie planen, Kapazität hinzuzufügen. Während mit NCache Sie können dies zur Laufzeit erreichen. Sie können spontan weitere Server hinzufügen.

Der zweite Aspekt ist ein Server, der ausfällt. Wir haben also innerhalb Redis Wir haben ein Master-and-Slave-Konzept. Ein Master repliziert Daten zum Slave. Da ist ein Sklavensplitter. Der Master muss also Daten replizieren, und zwar entweder synchron oder asynchron. In Redis, wenn ein Slave-Shard ausfällt, stoppt der Master selbst, der Cluster wird unbrauchbar. Das ist also ein großes Problem und das kann ständig passieren. Ausschließlich bei On-Premise-Bereitstellungen, bei denen Sie über eine Open-Source- oder Redis Laboreinsatz von Redis. Wenn in diesem Fall ein Server ausfällt und dieser zufällig der Slave eines Master-Shards ist, wird der Cluster selbst unbrauchbar. Sie müssen sich also einmischen und manuell eingreifen, um sich von diesem Szenario zu erholen. Während innerhalb NCache es ist automatisch. So kann jeder Server ausfallen, der überlebende Knoten und er könnte aktiv oder Backup sein.

dynamische-partitionen-1

Zum Beispiel fällt dieser Server aus, das ist eine aktive Partition, es hat auch eine Backup-Partition. Wenn dieser gesamte Server ausfällt, fördert die Sicherung den aktiven. Die Backup-Partition wird auf aktiv hochgestuft und Sie erhalten alle Daten vom überlebenden Knoten und es gibt ein integriertes Verbindungs-Failover. Jeder Server, der Clients herunterfährt, würde dies zur Laufzeit erkennen und sie würden entscheiden und auf überlebende Knoten umschalten, und hier möchte ich dieses Konzept mit dem verstärken Redis Sie benötigen mindestens 3 Server. Dies ist das Konzept der Mehrheitsregel. Der Clusterkoordinator muss eine Wahl gewinnen. Das ist bei nicht der Fall NCache. Sie können mit nur 2 Knoten einen voll funktionsfähigen Cache-Cluster starten und erhalten volle Hochverfügbarkeitsfunktionen. Jeder Server, der ausfällt, ein überlebender Knoten ist vollständig in der Lage, ohne Probleme zu arbeiten, und das ist nicht der Fall Redis.

Dynamische Konfigurationen. Sie können Cluster-Konfigurationen zur Laufzeit ändern und dazu gehören das Hinzufügen neuer Server, das Entfernen von Servern oder das Ändern einiger Einstellungen im Cache-Cluster. Das können Sie zur Laufzeit auf einen ganzen 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 Clusterintegritätsereignisse, die verfügbar sind NCache Seite, die Sie abonnieren können. Darüber hinaus können Sie Überwachungs- und Verwaltungstools verwenden. Wohingegen, Redis hat diese Funktionen nicht.

Das ist also ein sehr wichtiges Konzept. Lassen Sie es mich einfach für Sie zusammenfassen. Hinzufügen und Entfernen eines Servers in Redis ist etwas, das Ihnen viele Probleme bereiten würde. Denn das Hinzufügen von Daten würde nicht automatisch neu ausgeglichen. Es ist also keine hundertprozentige Peer-to-Peer-Architektur. Daher ist die Kapazität des Cache-Clusters begrenzt. Ebenso wird der Cluster selbst unbrauchbar, wenn ein Slave-Shard ausfällt. Denn es gibt ein Verteilungsproblem, das Sie jetzt manuell verwalten müssen. Failover ist auch manuell, richtig? Wenn also ein Server ausfällt, müssen Sie ein manuelles Failover durchführen und mit der Verwendung der überlebenden Knoten beginnen. Wenn Sie neue Server hinzufügen, müsste manuell auf die neu hinzugefügten Server umgeschaltet werden.

Das sind also alle Einschränkungen, die Sie haben würden, und Sie wissen, ich wäre überrascht, wenn Sie eine solche Produktionsbereitstellung verwenden würden, und jetzt müssen Sie Kapazität bringen oder Server für Wartungsarbeiten herunterfahren. Das wäre also bei Produkten wie sehr schwierig Redis. Wohingegen, NCache bietet Ihnen ein nahtloses Erlebnis. Wo Sie Server spontan hinzufügen oder entfernen können, ohne etwas zu beeinträchtigen.

Dynamische Partitionen / Shards

Nun, ein anderes Konzept innerhalb des Clusters ist der Selbstheilungsmechanismus.

hochverfügbares-dynamisches-cluster

NCache hat dynamische Partitionen. Sie fügen weitere Server hinzu, Daten werden abgerufen redisverteilt, neue Partitionen werden zur Laufzeit formuliert. In ähnlicher Weise fahren Sie einen Server herunter, der Cluster würde die Sicherung verfügbar machen und er würde sich selbst heilen und einen gesunden 2-Knoten-Cache-Cluster formulieren, wenn Sie ihn von 3 auf 2 und dann den Zuverlässigkeitsaspekt herunterfahren. Es hat das Recht auf Replikationspartitionen, das auch verfügbar ist Redis als Form von Slaves, aber ihre hohe Verfügbarkeit ist von der Replikation abhängig. Sie haben nicht mit Redis Sie hätten keine hohe Verfügbarkeit, wenn Sie keine Slave-Shards konfiguriert haben. Sie müssen also Sklavenscherben zur Verfügung haben. Während mit der NCache, haben wir Topologien.

Zum Beispiel Partitionierter Cache, wo wir Master-Shards, Master-Partitionen haben. Wenn dieser Server ausfällt, haben Sie immer noch eine hohe Verfügbarkeit, da die Clients dies erkennen und ein Failover durchführen und mit der Verwendung des Überlebensknotens beginnen würden. Sie hätten Datenverlust und das ist wahr für Redis auch. Datenverlust, weil es keine Replikation gibt, aber immer noch hochverfügbar ist, und dann haben wir eine Erweiterung dazu, bei der wir auch Replikationsunterstützung haben. Wenn dieser Server ausfällt, wird nicht nur das Backup des Servers zur Verfügung gestellt Clients automatisch Failover. So, Redis ist begrenzt. Die Hochverfügbarkeit ist abhängig von der Replikation. Es ist nicht hochverfügbar, wenn die Replikation nicht aktiviert ist, was ebenfalls ein einschränkender Faktor ist.

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

dynamische-partitionen-2

Wenn Sie mit 3 Servern beginnen, bringen Sie einen Server herunter, Sie würden eine aktive Partition, einen Master verwenden und dann verlieren Sie auch einen Slave eines anderen Servers. In diesem Fall befand sich die Sicherung von Server 3 also auf Server 1, sodass dieser aktiviert wird. Es fügt sich zur Laufzeit in die aktiven Partitionen ein. Es ist kein Eingreifen erforderlich. Manuelle Arbeit ist erforderlich, und dann würde Partitionsserver 2 eine fehlerfreie Partition auf Server 1 formulieren. Der Cluster würde sich also automatisch heilen, und dies ist die dynamische Natur von NCache im Vergleich zu Redis. Wofür Redis, Shards können zur Laufzeit nicht nachjustiert werden. Der Cluster stoppt, wenn der Slave-Shard ausfällt. Die Daten redisDie Zuteilung ist nicht dynamisch. Hochverfügbarkeit ist abhängig von der Replikation, bei der dies nicht der Fall ist NCache. NCache bietet Ihnen Hochverfügbarkeit auch ohne Replikation.

Also all diese Vorteile, aus denen Sie herauskommen NCache, macht es zu einem viel besseren Produkt, da diese Funktionen vollständig fehlen oder eingeschränkt sind Redis und das 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 einige Zeit damit verbringen, das eigentliche Produkt in Aktion zu zeigen, damit Sie einen Einblick bekommen, wie es funktioniert NCache wird konfiguriert. Das ist also unsere Demo-Umgebung. Ich habe damit gearbeitet. Also werde ich einfach einen neuen Cache erstellen. Dies ist unser Webverwaltungstool, das mitinstalliert wird NCache. Der Serialisierungsmodus kann entweder binär oder JSON sein. Es liegt ganz bei Ihnen. Ich nenne nur den Cache und zeige Ihnen, wie Sie einen Cache-Cluster erstellen, eine Clientanwendung verbinden und ihn überwachen und verwalten.

Also werde ich alles einfach halten, denn das Hauptaugenmerk in diesem Webinar liegt auf der Rundumsicht NCache vs Redis, also werde ich alle Details einfach halten. Partitioniertes Replikat, das ist unsere am meisten empfohlene Topologie. Asynchrone Replikation zwischen Aktiv und Backup. Sie können also Sync wählen. Async ist schneller, also werde ich damit gehen. Größe des Cache-Clusters. Dann werde ich diese Serverknoten wo angeben NCache Ist bereits installiert. TCP-Port. NCache ist ein auf TCP/IP basierendes Kommunikationsprotokoll. Also werde ich alles einfach halten und hier nur die Räumung aktivieren, damit der Cache voll wird. Es entfernt also automatisch einige Elemente aus dem Cache und schafft dadurch Platz für die neueren Elemente. Starten Sie diesen Cache und beenden Sie ihn. Starten Sie dies automatisch beim Start des Dienstes, sodass mein Server bei jedem Neustart automatisch dem Cache-Cluster beitritt und das war's. So einfach ist es, einen Cache-Cluster zu konfigurieren und ihn dann zu verwenden, was ich Ihnen als Nächstes zeigen werde.

Cloud-Support (Azure und AWS)

Unser Managed-Service-Modell steht also kurz bevor. Unsere nächste Veröffentlichung konzentriert sich auf das, was ich denke, zwei bis drei Wochen später. Wir werden also ein vollständig verwaltetes haben NCache Software-as-a-Service-Modell sowohl in Azure als auch in AWS.

Cloud-Unterstützung

Im Moment wird es entweder ein VM-Modell sein. Wenn Sie vor Ort arbeiten, können Sie physische oder VM-Boxen verwenden. Wenn Sie sich für Azure entscheiden, müssen Sie Ihre VM entweder über den Marketplace einrichten oder Sie können einfach eine VM einrichten und dann installieren NCache Software durch Herunterladen von unserer Website. Und dann haben wir auch noch eine containerisierte Umgebung. Wir haben Docker-Images und werden vollständig von Azure Kubernetes Service, EKS - Elastic Kubernetes Service und allen anderen unterstützt, z. B. OpenShift Kubernetes-Plattform. NCache ist auf diesen Plattformen bereits vollständig integriert und wird vollständig unterstützt. Was den gemanagten Aspekt betrifft, so steht das kurz bevor. In zwei bis drei Wochen wäre es also vollständig verfügbar.

Also, ich werde Ihnen ein Statistikfenster zeigen, das ein Perfmon-Zähler ist, und nebenbei, diese Überwachungsoptionen sind verfügbar für NCache, bezüglich NCache sowohl auf Windows- als auch auf Linux-Umgebungen, richtig?

ncache-manager-before-stress-test-tool

Also werde ich ein Stresstest-Tool ausführen. Ich denke, es läuft bereits einer für einen anderen Cache. Also werde ich weitermachen und einen weiteren ausführen, und dies würde unsere, eine Dummy-Last auf unserem Cache-Cluster simulieren. Sie geben einfach den Namen an und es erkennt automatisch die Server mithilfe der Konfigurationsdateien und stellt einfach eine Verbindung her.

ncache-Manager-After-Stress-Test-Tool

Wir haben also den vollständig verbundenen Clusterstatus, Anforderungen pro Sekunde, die den Durchsatz, die Latenz in durchschnittlicher Mikrosekunde pro Cache-Vorgang, Hinzufügungen, Abrufe, Aktualisierungen, Löschungen, Cache-Größe, CPU und Arbeitsspeicher anzeigen. Sie erhalten also eine zentralisierte Überwachungsansicht. Sie können dieses Werkzeug verwenden. Sie können auch Windows-perfmon verwenden.

Für Linux-basierte haben wir unser angepasstes Monitoring. Sie können unser Überwachungstool also auch direkt für Linux-Server verwenden und Sie können auch jedes Drittanbieter-Tool für die Überwachung verwenden NCache auch. Das war also ein kurzer Einblick in unseren Cache-Erstellungsprozess. Einige Überwachungs- und Verwaltungsaspekte.

Also zurückkommen. Da besprechen wir einige Details. Als nächstes möchte ich das Cloud-Angebot / den Cloud-Support ansprechen. Jetzt Redis selbst können Sie einen nicht verwalteten Cache auswählen. Sie können auch einen verwalteten Cache auswählen, und dann gibt es einen gehosteten Dienst, der verfügbar ist, und die Verwaltungsoption stammt von Drittanbietern. Die gehostete Option stammt von Azure Redis, wo Sie eine Open-Source-Variante von haben können Redis von Microsoft angepasst und als gehostetes Modell verfügbar. Während auf der NCache Seite haben wir Cache-Server-Modell, VM-Modell. Ich habe bereits den Container-Ansatz besprochen. Es ist sowohl mit Windows als auch mit Linux-Containern vollständig kompatibel. Wir haben Videodemonstrationen für Azure Service Fabric für Windows-Container und Details zur Microservices-Architektur verfügbar. Wir haben Azure Kubernetes Service, die Linux-Container verwenden. EKS – Elastic Kubernetes Service und dann, glaube ich, haben wir auch Red Hat OpenShift Container über Kubernetes gemacht.

Das sind also alle verfügbaren Containerbereitstellungsoptionen, und es ist flexibel, seine Plattform, wissen Sie, es ist nicht plattformspezifisch. Sie können es also problemlos auf jeder Art von containerisierter Plattform bereitstellen. Der Managed Service kommt, also haben wir das bereits besprochen. Also, das ist etwas, wo NCache hätte Managed Service, aber das ist in unserer nächsten Version.

Ein wichtiger Aspekt ist der Vorteil der Verwendung eines VM-Modells, obwohl Sie sich mit einer VM anstelle eines Dienstes verbinden müssen, aber Sie alles kontrollieren. Sie können serverseitigen Code ausführen, den ich als nächstes behandeln werde, aber der wichtigste Aspekt ist der Leistungsaspekt. Wir haben bereits besprochen, dass es viele Leistungsmerkmale gibt NCache, die darin fehlen Redis. Wenn Sie sich für Azure entscheiden Redis, müssten Sie eine Verbindung mit der Azure-Infrastruktur herstellen. Das sind also VMs, die in einem separaten virtuellen Netzwerk ausgeführt werden. Diese befinden sich in der Nähe, aber auch sie sind weit entfernt. Es unterscheidet sich von Ihrem eigenen virtuellen Netzwerk, das Sie in Microsoft Azure haben und in dem Sie alle Ihre Anwendungsbereitstellungen haben.

Mit der NCache Sie können unsere wählen NCache Bereitstellung im selben virtuellen Netzwerk wie Ihre virtuellen Anwendungsnetzwerke. Beispielsweise werden Ihr App-Dienst, Ihre Azure-Website und Ihre Azure-Microservices in einem virtuellen Azure-Netzwerk ausgeführt. Sie können Azure-VMs im selben virtuellen Netzwerk bereitstellen und so Ihre 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 viel Kontrolle über Ihre VM. Sie haben die volle Kontrolle über das Starten eines Caches, das Erhöhen der Größe, Sie erhalten die volle Kapazität. Es gibt keine Begrenzung für Anforderungseinheiten, es gibt keine Begrenzung für die Größe, es gibt keinen Fußabdruck der Nutzung und Ihnen werden dafür keine Kosten in Rechnung gestellt. Sie bringen Ihre eigene Lizenz mit und die könnte auch unbefristet sein, das könnte auch eine Abonnementlizenz sein, die in Bezug auf die Lizenzierung sehr flexibel sein könnte. Darüber hinaus können Sie serverseitigen Code auf Ihrem ausführen 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 mit möglich NCache. Sogar unser SaaS-Modell, das ein gehostetes Modell wäre, das all diese Angebote zur Verfügung hätte, was nicht der Fall sein wird Redis. Das ist also unsere Plattform.

Cache frisch halten

Nächstes Segment, die nächsten 15 Minuten würde ich für den Feature-Level-Vergleich aufwenden, und dafür habe ich einige Segmente definiert. Also, ich fange an, wenn Sie den Cache aktuell halten müssen, und das ist sehr wichtig, es sollte ein separates Webinar zu diesem Thema geben, wie Sie den Cache speziell in Bezug auf Back-End-Datenquellen in Bezug auf Ihre Anwendungsnutzung aktuell halten Fälle.

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

Cache frisch halten

Wir haben einen Zeitbasisablauf, der absolut und gleitend ist, und dafür steht auch ein automatischer Nachlademechanismus zur Verfügung. Redis hat nur einen absoluten und gleitenden Ablauf ohne Nachlademechanismus. Zum erneuten Laden gestatten wir Ihnen, eine Schnittstelle namens Read-Through-Handler zu implementieren, bei der es sich um einen serverseitigen Code handelt. Auch das ist möglich, weil NCache ermöglicht es Ihnen, vollen Zugriff auf Ihre VMs zu geben, wo NCache wird gehostet. Sie können also serverseitigen Code zusätzlich bereitstellen NCache Und verwenden NCache Rechenleistung, um es zu sichern.

Sie können Ihren Cache mit der Datenbank synchronisieren. NCache ist sehr stark auf die Datenbanksynchronisierung. Wir haben eine SQL-Abhängigkeit. Wir haben eine DB-Abhängigkeit, die nur DB-konform ist. Wir haben .NET CLR Stored Procedures. Mit all diesen Funktionen können Sie also Ihren Cache mit der Datenbank synchronisieren. Und die Idee hier ist, wenn es eine Änderung in der Datenbank gibt, sich ein Datensatz in der Datenbank ändert und Sie diesen Datensatz zwischengespeichert haben, können diese beiden Quellen nicht 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 NCache zur Laufzeit. Dies ist eine einzigartige Funktion NCache. Keine anderen Produkte haben diese Funktion. Sie können also einen vollständig synchronisierten Cache mit Ihrer Back-End-Datenbank haben, und dies gilt nicht nur für relationale Datenbanken, wir haben auch Funktionen auf der Seite nicht relationaler Datenquellen.

Dateiabhängigkeit ist eine weitere Funktion, mit der Sie Elemente von Dateien abhängig machen können. Inhalt der Datei, wenn sich der Inhalt ändert, werden Elemente automatisch entfernt oder neu geladen. Und benutzerdefinierte Abhängigkeit, Sie können es mit jeder Quelle verwenden. Es könnte ein sein NoSQL database, es könnte ein Dateisystem oder relational sein, jeder Connector, jeder Webdienst. So können Sie Artikel basierend auf Ihren flexiblen Anforderungen validieren lassen. Wir haben eine Implementierung dieser Abhängigkeit mit Cosmos DB gegeben. Also haben wir die Synchronisierung von implementiert NCache mit CosmosDB. Wenn Sie verwenden NCache Neben Cosmos DB können Sie benutzerdefinierte Abhängigkeiten verwenden, und ich glaube, ich habe dazu auch ein Webinar durchgeführt.

Umgang mit relationalen Daten. Relationale Daten haben also Beziehungen. Elemente im Cache sind Schlüsselwertpaare, sodass Sie Beziehungen zwischen verschiedenen Elementen herstellen können, und das ist etwas, das nicht verfügbar ist Redis Seite. Sie müssten sich also mit Gegenständen nach ihrem eigenen Wert befassen. Während mit NCache Sie können Elemente in Eins-zu-eins-, Eins-zu-viele- oder Viele-zu-viele-Gruppen kombinieren. Das übergeordnete Element durchläuft eine Änderung, das untergeordnete Element kann bei Bedarf automatisch ungültig gemacht oder neu geladen werden.

Datengruppierung, SQL- und LINQ-Suche

Ein weiterer Aspekt ist die Gruppierung und Suche von Daten, wo NCache ist sehr stark & Redis hat keine Funktionen. Und das gilt wiederum für Azure Redis was ohnehin sehr begrenzt ist. Die offene Quelle Redis ist leicht voraus, aber in Bezug auf die Funktionen immer noch begrenzt. Sogar die Redis Lab, die kommerzielle Version von Redis, das nicht mit diesen Funktionen ausgestattet ist.

sql-und-linq-suchen

SQL-Suche ist verfügbar. Sie können darin nach Artikeln suchen NCache basierend auf ihren Objektattributen. Die Objekte werden im Cache hinzugefügt. Sie können Indizes für ihre Attribute definieren. Beispielsweise können Produkte nach ihrer ID, ihrem Preis, ihren Kategorien im Index sein, und jetzt können Sie die Suche nach diesen Produkten ausführen, indem Sie diese Attribute verwenden. Ein typisches Beispiel wäre ein ausgewähltes Produkt, bei dem die Produktpunktkategorie etwas ist oder der Produktpunktpreis größer als 10 und der Produktpunktpreis kleiner als 100 ist und NCache würde eine In-Memory-Suche für alle Elemente auf allen Servern ausführen, die Ergebnisse konsolidieren und Ihnen die Ergebnismenge zurückgeben. Sie müssen sich also nicht mehr mit Schlüsseln herumschlagen. Sie rufen Daten basierend auf einem Kriterium ab.

LINQ-Suchen sind ebenfalls verfügbar. Wir haben .NET und .NET Core Apps. Wenn Sie die LINQ-Suche verwenden, können Sie die LINQ-Suche ausführen NCache auch. Das ist also ein Alleinstellungsmerkmal von NCache woher Redis hat keine Unterstützung. Redis alle, alle Aromen von Redis, haben diese Unterstützung nicht.

Sie können Gruppen, Untergruppen haben. Sie können logischerweise Sammlungen im Inneren erstellen 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 an Ihre Artikel angehängt werden können. Ein typisches Beispiel wäre, dass Sie alle Kunden mit Kundentag markieren können. Alle Bestellungen mit einem Bestelletikett und Bestellungen eines bestimmten Kunden können auch mit einer Kunden-ID als Etikett versehen werden. Wenn Sie Bestellungen benötigen, sagen Sie einfach "Nach Tag abrufen" und geben Sie die Bestellungen als Tag an, damit Sie alle Bestellungen erhalten. Wenn Sie Bestellungen eines bestimmten Kunden benötigen, sagen Sie, dass Sie an einem beliebigen Tag oder an einem Tag ankommen und die Kunden-ID angeben. Sie erhalten alle Bestellungen, aber nur für diese Kunden-ID. Das ist also die Flexibilität bei der Verwendung von Tags und benannten Tags, die Sie haben NCache. Redis unterstützt diese nicht.

Serverseitiger .NET-Code

serverseitiger Code

Wir haben bereits besprochen, dass wir normalerweise ein Cache-Aside-Muster verwenden, bei dem Sie zuerst Daten im Cache überprüfen. Wenn Sie dort gefunden werden, kehren Sie zurück. Wenn Sie keine Daten im Cache finden, gehen Sie zur Backend-Datenbank in Ihrer Anwendung und holen Sie dann diese Daten und bringen Sie sie in den Cache. Es gibt also eine Null, Sie rufen Null ab und gehen dann zur Datenbank. Sie können dies mit Hilfe des Read-Thru-Handlers automatisieren. Es ist ein serverseitiger Code, der auf Ihrem ausgeführt wird NCache Server. Unser Managed Service hätte diese Funktion ebenfalls. Sie implementieren also diese Schnittstelle, mit der Sie eine Verbindung zu jeder Datenquelle herstellen können. Es könnte ein Webdienst sein, es könnte eine relationale Datenquelle oder eine nicht relationale Datenquelle sein, und es gibt eine Reihe von Methoden, die aufgerufen werden, sobald im Cache eine Null gefunden wird.

Sie rufen also die Cache.Get-Methode auf und aktivieren das Read-Thru-Flag. Wenn sich das Element nicht im Cache befindet, wird der Aufruf an Ihren Read-Thru-Handler weitergeleitet, und als Ergebnis würden Sie Daten aus der Back-End-Datenbank abrufen, indem Sie diesen Handler-Code durchlaufen. Welches ist Ihr Benutzercode, der ausgeführt wird? NCache serverseitig. So können Sie nahtlos durchgehen NCache und erhalten Sie die Daten, die Sie benötigen.

Write-Through ist dagegen, was auch unterstützt wird und Redis verfügt nicht über diese Funktionen, bei denen Sie etwas im Cache aktualisieren können, und jetzt möchten Sie die Datenbank aktualisieren, können Sie die Datenbank aktualisieren, indem Sie Ihren Write-Through-Handler aufrufen. Sie implementieren und registrieren diesen Write-Through-Handler und NCache würde es nennen, um die Backend-Datenbank zu aktualisieren, und Write-Behind ist das Gegenteil davon. Jede Aktualisierung des Cache, Client-Anwendung gibt und zurück NCache würde die Backend-Datenbank asynchron hinter den Kulissen aktualisieren. So, NCache kann sogar Ihre Leistung für Schreibvorgänge auf der Datenbank verbessern, was mit nicht möglich ist Redis oder ein anderes Produkt, wenn Sie keinen serverseitigen Code ausführen können. Und das ist ein rein natives .NET und .NET Core Klassenbibliotheken, die Sie als Read-Through- und Write-Through-Schnittstellen implementieren und registrieren können, was mit möglich ist NCache.

Cache Loader ist ein weiteres Feature. Wo Sie den Cache vorab füllen können, indem Sie eine Schnittstelle implementieren und sich bei registrieren NCache. Jedes Mal, wenn Sie Ihren Cache neu starten, laden Sie also automatisch einige Ihrer wichtigen Daten hinein NCache und dies läuft auf allen Servern gleichzeitig. Es ist also superschnell. So können Sie alle Ihre Daten vorab ausfüllen und müssen nie wieder zur Datenbank gehen. Sie würden diese Daten immer finden, weil Sie sie vorab geladen haben.

serverseitiger Code-2

Benutzerdefinierte Abhängigkeit, Entry-Prozessor, dies sind wiederum Funktionen, die nur für sie einzigartig sind NCache und der Grund der Hauptgrund dafür, dass Sie diese Funktionen nicht nutzen können. Zunächst, Redis verfügt nicht über diese Features, 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 dies der Hauptgrund war, mit dem ich mich zuvor darauf bezogen habe NCache Bei einem VM-Modell haben Sie derzeit vollen Zugriff darauf, wo Sie es bereitstellen, wie Sie es steuern und wie Sie es verwalten. Sie haben also die volle Kontrolle. Es ist keine Blackbox, da Redis ist.

WAN-Replikation für mehrere Rechenzentren

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

WAN-Replikation

Aktiv-Passiv wird unterstützt Redis, wo Sie das gesamte Rechenzentrum übertragen und von einem Rechenzentrum in das andere zwischenspeichern können. In NCache, wir haben aktiv-passiv. Also einseitige Übertragung von Daten von einem Rechenzentrum zum anderen. Wir haben auch aktiv-aktiv, was sehr dringend ist, ein sehr wichtiger Anwendungsfall, bei dem Sie möglicherweise beide Sites aktiv haben. Sie benötigen die Updates von Site eins auf Site zwei und umgekehrt. Das ist also keine aktivierte Fähigkeit Redis Seite. Sie haben diese Fähigkeit nicht, also können Sie keine Aktiv-Aktiv-Sites mit ausführen Redis. Mit NCache Dies gilt für den Anwendungsfall Ihres App-Daten-Cachings, bei dem Daten auf beiden Sites aktualisiert werden, und dies ist auch durch unsere Multi-Site-Sitzungen möglich. Das ist also ein weiterer Raum, in dem NCache ist ein klarer Gewinner.

WAN-Replikationsdiagramm

Cache-Topologien

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

Caching-Topologien

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

GUI-Tools - Cache-Verwaltung und -Überwachung

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

GUI-Tools

Während wir PowerShell-Tools haben, haben wir Dump- und Reload-Tools, vollständige Verwaltung, Überwachungsaspekte sind darin integriert. Wohingegen, Redis ist auch an dieser Front begrenzt und als Teil davon habe ich Ihnen einige Details gezeigt, und dies gilt sowohl für Windows- als auch für Linux-Bereitstellungen von NCache.

ASP.NET-spezifische Funktionen

Einige ASP.NET-spezifische Caching-Features.

asp-net-support

Sitzungen, wir haben Multi-Site-Sitzungen, ASP.NET zu ASP.NET Core Session-Sharing steht bevor. Standortübergreifendes ASP.NET und ASP.NET Core Sitzungen sind verfügbar. Status anzeigen, Ausgabe-Caching. Redis hat nur Sitzungen, was im Vergleich zu sehr einfach ist NCache. Sitzungssperrung, Sitzungsfreigabe ist ein Teil davon NCache. Ausgabe-Caching wird auf beiden Seiten unterstützt und zusätzlich haben wir SignalR Backplane, ASP.NET Core Antwort-Caching. All dies vervollständigt also den Funktionsumfang für Ihre webspezifischen Caching-Anforderungen. So können Sie den Funktionsumfang im Detail überprüfen.

Gemeinsame Nutzung von Laufzeitdaten 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 weit überlegen ist Redis. Ich habe ein separates Webinar zu unserem Pub/Sub-Messaging. Daher würde ich Ihnen wärmstens empfehlen, dies zu überprüfen, wenn Sie Fragen haben. Also, ich denke, ich werde an dieser Stelle schließen.

pubsub

Integrationen von Drittanbietern

Schließlich Integrationen von Drittanbietern.

Drittanbieter-Integrationen

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

Sicherheit & Verschlüsselung

Einige Details zu Sicherheitsverschlüsselung und ich denke, wir sind bereits auf Zeitmarke.

Sicherheitsverschlüsselung

Zusammenfassung

Es ist also ein guter Zeitpunkt, es abzuschließen. Also, das erste ist, dass ihr jederzeit, wann immer ihr wollt, auf www gehen könnt.alachisoft.com und Sie können eine Enterprise-Version von herunterladen NCache und wir zeigen Ihnen persönlich, wie es in Ihrem Umfeld funktioniert. Wir empfehlen Ihnen daher, direkt auf die Website zu gehen und die 30-tägige kostenlose Testversion von Enterprise zu erhalten. Es wird uns ein Vergnügen sein, eine Demo zu planen. Darüber hinaus stellen wir Ihnen eine Aufzeichnung dieses Webinars zur Verfügung. Halten Sie also bitte in Ihren E-Mails und in den sozialen Medien Ausschau, wenn wir Ihnen das mitteilen. Wenn wir heute nicht zu Ihren Fragen gekommen sind und ich weiß, dass noch viel mehr auf uns zukommt und wir ganz am Rande stehen, senden Sie bitte 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 deiner umgebung kannst du dich einfach melden sales@alachisoft.com .

Was macht man als nächstes?

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