Der einzige Zweck von NCache ist es, die optimale Leistung für Ihre Anwendung bereitzustellen. Und um diese Leistungswerte zu erreichen, muss Ihre Caching-Umgebung einfach und kosteneffizient skalierbar sein.
As NCache Da es sich um einen In-Memory-Datenspeicher handelt, ist die erste Sorge der begrenzte Speicher, der ihm auf einer physischen Box zugewiesen wurde. Das zweite ist die Rechengrenze. Wir alle wissen das NCache, zusätzlich zur Bereitstellung grundlegende CRUD-Operationen, unterstützt auch viele erweiterte Funktionen wie Pub / Sub, Abfragen, kriterienbasierte Abrufaufrufe usw. Und wenn die Client-Anfragen zu diesen Funktionen zahlreich werden, steigt der Bedarf an mehr Rechenleistung. Das bedeutet, dass Ihr Cache-Server früher oder später sein maximales Verarbeitungslimit erreicht. Wenn das passiert, NCache lässt dich nicht im Stich. Stattdessen gibt es eine Lösung dafür und ich bin hier, um Ihnen diese zu erklären.
NCache Details Verteiltes Caching in .NET Hochverfügbar NCache
Lineare Skalierbarkeit in NCache
Wenn Ihre Umgebung die oben genannten Grenzen erreicht, NCache ermöglicht Ihnen das Hinzufügen eines neuen Serverknotens (oder mehrerer Knoten) zu Ihrem Cache-Cluster. Beim Hinzufügen eines neuen Servers fügen Sie im Grunde einen neuen physischen Knoten zum Cluster hinzu NCache Web Manager or NCache PowerShell-Tool Dies erhöht den Gesamtspeicher und stellt Ihnen eine weitere Ressource zur Verfügung, um überschüssige eingehende Anforderungen zu bearbeiten.
Dies gewährleistet lineare Skalierbarkeit. Wie? Denn je mehr Knoten Sie hinzufügen, desto besser ist die Leistung. In NCacheDas Hinzufügen zusätzlicher Knoten zum Cluster verursacht keinen Overhead, der dazu führen würde, dass der konsistente Durchsatz ins Stocken gerät. Und laut den kürzlich durchgeführten Leistungsbenchmarks, NCache erreicht 2 Millionen Operationen/Sekunde mit 5 Serverknoten! Wenn das kein Sieg ist, dann weiß ich nicht, was es ist.
Und das Beste an all dem ist das dynamisch die Natur von NCache Clusterbildung. Das bedeutet, dass Sie bestehende Prozesse, Anwendungen oder Knoten nicht stoppen müssen, nur um einen neuen Knoten zum Cluster hinzuzufügen.
NCache Details NCache Leistungsbenchmarks NCache Leistungsbenchmarks – Video
Lassen Sie uns etwas tiefer graben und beleuchten, was NCache Funktionen bringen die Skalierbarkeitstabelle mit sich.
Client-Operationen für Skalierbarkeit
NCache Der Client verfügt über die integrierte Funktion, dass er sich automatisch direkt mit jedem Serverknoten verbindet. Und NCache Mithilfe der Verteilungskarte kann der Client erkennen, welcher Knoten über die benötigten Daten verfügt. Der vom Client kommende Vorgang durchläuft also nicht mehrere Hops und Knoten. Stattdessen erfolgt ein direkter Sprung zu dem Server, der über die spezifischen Daten verfügt. Diese einfache, aber clevere Funktionalität hilft bei der Skalierung Ihrer Umgebung.
Parallelität für Skalierbarkeit im Betrieb
NCache unterstützt verschiedene erweiterte Vorgänge wie Abfragen, Massenoperationen, Schlüsselwörterund viele andere Vorgänge, die auf mehreren Knoten ausgeführt werden müssen. Anstatt diese Operationen im Round-Robin-Verfahren an jeden Knoten zu senden, NCache ermöglicht es Ihnen, jede Operation parallel an jeden Knoten zu senden.
Beispielsweise möchte ein Client im Cache gespeicherte Daten abfragen und sendet diese Abfrage daher an alle Knoten des Clusters. Jeder Knoten führt diese Abfrage lokal für den von ihm gespeicherten Datensatz aus und teilt das Ergebnis mit dem Client. Der Client führt alle Ergebnisse aller Serverknoten zusammen und gibt ein einziges Ergebnis an alle Endanwendungen zurück. Jeder Knoten führt die gleiche Abfrage parallel aus, was die Skalierbarkeit erhöht und das System beschleunigt.
Pipelining für Skalierungsvorgänge
NCache verwendet Pipelining um Blöcke von Vorgängen zu erstellen, die in einem einzigen TCP-Aufruf über ein Netzwerk gesendet werden müssen. Diese Technik reduziert den Aufwand, der durch das Senden mehrerer Anfragen nacheinander und das Warten auf deren Bestätigung entsteht.
Nehmen wir hier ein Beispiel. Sagen Sie, dass die NCache Der Client sendet 100 Vorgänge an den Server, was normalerweise bedeutet, dass der Client 100 E/A-Vorgänge ausführt. Für den Erfolg dieser Vorgänge wird jede Transaktion vom Benutzer- in den Kernelmodus eine ganze Menge CPU-Leistung verbrauchen. Eine zu hohe CPU-Auslastung ist teuer und beeinträchtigt die Leistung meiner Anwendung.
Hier kombiniert das clientseitige Pipelining alle Vorgänge, die an einen Server gehen, und sendet diesen Block in einem dedizierten E/A-Aufruf. Durch serverseitiges Pipelining wird sichergestellt, dass der Server mehrere E/A-Aufrufe in einem einfachen Aufruf empfängt. Die von den Servern zurückgesendeten Antworten werden ebenfalls zusammen empfangen. Darüber hinaus versucht der Server, möglichst viele Antworten auf die eingehenden Vorgänge auf einmal zu generieren.
Somit werden die 100 Vorgänge, die in dedizierten Aufrufen an den Server gesendet wurden, vom Server in einem Aufruf empfangen. Und die Ergebnisse der empfangenen Operationen werden in einem Aufruf vom Server gesendet. Diese Technik hilft enorm, das System zu skalieren.
NCache Details Clientseitige Operationen Pipelining ein NCache
Skalierbare Hintergrundreplikation in Partition-Replica
Welcher Aktualisierungsvorgang auch immer der Client auf einem Serverknoten ausführt, muss aus Gründen der Fehlertoleranz und der hohen Verfügbarkeit auf dem Replikatserver repliziert werden. NCache Der Server führt diese Replikation im Hintergrund ohne Beteiligung des Clients durch. Diese Replikation ist nicht nur ein Hintergrundprozess, sondern wird auch in großen Mengen durchgeführt, um maximale Kosten zu sparen. Dieser Prozess sorgt für Skalierbarkeit, da alle Vorgänge durch Hintergrundreplikation skaliert werden, und sorgt außerdem für eine hohe Verfügbarkeit Ihres Caches. Win-win-Situation.
Write-Behind-Caching für Skalierbarkeit
Wenn der Client Daten in die Datenbank schreiben möchte, werden diese Daten mit derselben an den Server gesendeten Anfrage in den Cache und die Datenbank geschrieben.
Eine asynchrone Implementierung dieser Funktion ist Write-Behind Dadurch kann Ihr Server ohne Rechenverzögerung auf die Datenbank zugreifen. Auf diese Weise bleiben Ihre Datenbank und Ihr Cache synchron und bieten gleichzeitig die gleiche Leistung, die Sie von einem In-Memory-Cache erwarten.
Besitzt das NCache Wenn der Client dem Cache-Server eine Anfrage mit aktiviertem Write-Behind sendet, schreibt der Server diese Daten in den Cache, gibt die Steuerung an den Client zurück und verwendet ein Batch-System im Hintergrund, um sicherzustellen, dass die Daten auch in der Datenbank gespeichert werden. Dieser Mechanismus macht Ihre Anwendung skalierbar.
Skalierbarkeit durch Objektpooling in der Speicherverwaltung
Wenn in der .NET-Umgebung der automatische Garbage Collector (GC) aktiviert wird, werden alle in der Anwendung laufenden Aktivitäten angehalten, was zu Pausen bei der In-Memory-Datenberechnung führt. Diese Pausen beeinträchtigen die Leistung Ihrer Anwendung erheblich. Je größere Objekte Sie erstellen, desto stärker wird der GC eingreifen und desto größer wird dieser Treffer sein.
Um diese langen GC-Pausen zu vermeiden, NCache Da es sich um einen nativen .NET-Cache handelt, nutzt er die Object-Pooling-Technik als eigene Speicherverwaltung. Bei diesem Mechanismus NCache Der Server bündelt Objekte und verwendet sie wieder, anstatt neue zu erstellen, was dazu führt, dass GC weniger aufgerufen werden muss. Je geringer dieser Bedarf ist, desto mehr Leistung erhalten Sie aus Ihrer Anwendung und desto größer ist die Skalierbarkeit.
NCache Details Serverseitige Operationen Pipelining ein NCache
Client-Cache zur Förderung der Skalierbarkeit
Was die Skalierbarkeit betrifft, Client-Cache erweist sich als eines der wichtigsten Merkmale von NCache.
Der Client-Cache speichert die am häufigsten verwendeten Daten Ihres Cluster-Cache auf demselben Computer, auf dem Ihre Anwendung ausgeführt wird. Durch die Verwendung von Client Cache zwischen Ihrer Anwendung und dem Cluster-Cache erhalten Sie eine lokale Cache-Ressource, die sich in der Nähe Ihrer Anwendung befindet. Dieser Cache kann die meisten Leseanfragen Ihrer Anwendung verarbeiten, was unweigerlich zu einer Reduzierung der E/A-Kosten führt. So erhalten Sie nicht nur schnellen Zugriff auf aktualisierte Daten, sondern Ihre Anwendung lässt sich auch skalieren.
Dieses Skalierbarkeitsdiagramm kann weiter optimiert werden, wenn Sie vom OutProc-Client-Cache zum InProc-Client-Cache wechseln, indem Sie die Kosten für den Zugriff auf den lokalen Knoten reduzieren.
Abschließende Skalierbarkeit in NCache
Während Sie das Beste aus Ihrer Bewerbung herausholen, können Sie auf zwei große Rückschläge stoßen. Entweder steigt die Rechenlast Ihres Caches oder Sie erreichen die festgelegten Grenzen der Datenspeicherung, was beides durch Skalierung deutlich verbessert werden kann NCache. Sie haben die volle Kontrolle darüber NCache Das ist reich an Funktionen, die Ihrer Umgebung Skalierbarkeit verleihen. Also, worauf wartest Du? Holen Sie sich NCaching!
NCache Details Herunterladen NCache Editionsvergleich