Ein verteilter Cache ist für jede Anwendung unerlässlich, die bei extremer Transaktionslast eine schnelle Leistung erfordert. Ein verteilter In-Memory-Cache bietet eine bessere Leistung als eine Datenbank. Und es bietet eine lineare Skalierbarkeit bei der Bewältigung größerer Transaktionslasten, da Sie problemlos mehr Server zum Cache-Cluster hinzufügen können, als ein Datenbankserver nicht kann.
Trotz all dieser Vorteile gibt es immer noch ein Problem. In den meisten Fällen wird ein verteilter Cache auf einer Reihe dedizierter Cache-Server im Netzwerk gehostet, sodass Ihre Anwendung Netzwerkreisen unternehmen muss, um Daten abzurufen. Und das ist nicht so schnell wie der lokale Zugriff auf Daten und insbesondere aus dem Bewerbungsprozess heraus. Hier kommt der Client-Cache zum Einsatz.
In NCache, eine Client-Cache Hält eine Verbindung zum verteilten Cache-Cluster offen und empfängt Ereignisbenachrichtigungen aus dem Cache-Cluster, wenn sich dort Client-Cache-Daten ändern. Ein verteilter Cache-Cluster kennt den Speicherort von Datenelementen zwischen Client-Caches, sodass Ereignisbenachrichtigungen nur an den relevanten Client-Cache gesendet werden, anstatt sie an alle Client-Caches zu senden.
NCache Details Client-Cache Ereignisbenachrichtigungen im Cache
Wie funktioniert der Client-Cache?
Ein Client-Cache ist nichts anderes als ein lokaler Cache auf Ihrem Web-/Anwendungsserver, aber er kennt den verteilten Cache und ist mit ihm verbunden. Darüber hinaus kann ein Client-Cache entweder prozessintern (in Ihrer Anwendung ist ein Client-Cache vorhanden) oder prozessextern sein. Dadurch kann ein Client-Cache eine viel schnellere Leseleistung als selbst ein verteilter Cache liefern und gleichzeitig sicherstellen, dass die Client-Cache-Daten immer mit dem verteilten Cache synchronisiert bleiben.
Allerdings benachrichtigt ein verteilter Cache den Client-Cache asynchron, nachdem er die Daten im verteilten Cache-Cluster erfolgreich aktualisiert hat. Technisch gesehen bedeutet dies, dass es ein kleines Zeitfenster (in Millisekunden) gibt, in dem einige der Daten im Client-Cache älter sind als der verteilte Cache. In den meisten Fällen ist dies für Anwendungen völlig akzeptabel. In einigen Fällen erfordern Anwendungen jedoch eine 100-prozentige Datengenauigkeit.
Um mit solchen Situationen umzugehen, NCache Bietet auch ein pessimistisches Synchronisationsmodell für den Client-Cache. In diesem Modell prüft der Client-Cache jedes Mal, wenn die Anwendung versucht, etwas aus dem Client-Cache abzurufen, zunächst, ob der verteilte Cache über eine neuere Version desselben zwischengespeicherten Elements verfügt. Wenn dies der Fall ist, ruft der Client-Cache eine neuere Version aus dem verteilten Cache ab. Dieser Ausflug zum verteilten Cache ist zwar mit Kosten verbunden, aber er ist immer noch schneller, als das zwischengespeicherte Element vollständig aus dem verteilten Cache abzurufen.
Wann sollte ein Client-Cache verwendet werden?
Nach dem Lesen dieses Blogs kommt mir vor allem die Frage in den Sinn, wann man einen Client-Cache verwenden sollte und wann nicht. Nun, die Antwort ist ziemlich einfach. Wenn Ihre Anwendung(en) mehr Lese- als Schreibvorgänge ausführt(en), verwenden Sie einen Client-Cache, insbesondere wenn dieselben Elemente immer wieder vorkommen.
Wenn Ihre Anwendung(en) viele Aktualisierungen durchführt (oder zumindest so viele wie die Lesevorgänge), verwenden Sie keinen Client-Cache, da die Aktualisierungen mit einem Client-Cache langsamer sind. Dies geschieht, weil Sie jetzt zwei verschiedene Caches aktualisieren, den Client-Cache und den verteilten Cache.
Zusammenfassung
Damit NCache ermöglicht es Ihnen, den Client-Cache mit einem verteilten Cache zu nutzen. Laden Sie eine voll funktionsfähige 60-Tage-Testversion herunter NCache Enterprise und probiere es selbst aus.
Du hast einen wirklich interessanten Blog, poste weiterhin so informative Beiträge!