Der Weg zum intelligenten Caching

Warum nicht selber Cache bauen?

Viele Anwendungsentwickler cachen keine Daten oder höchstens einige der schreibgeschützten statischen Daten. Einige Entwickler gehen noch einen Schritt weiter und cachen Daten im „Session State“ zwischen Benutzeranfragen. Alle diese Ansätze verfehlen jedoch den grundlegenden Vorteil des Cachings, nämlich das Cachen und Teilen von Daten mit allen Benutzern der Anwendung. Und diese Art des Cachings muss sehr intelligent sein, um Datenintegritätsprobleme im Cache (durch veraltete Daten) zu vermeiden.

Wenn Sie ernsthaft daran interessiert sind, die Leistung Ihrer Anwendung durch intelligentes Caching zu verbessern, stehen Sie vor der offensichtlichen Frage „Kaufen“ oder „Erstellen“. Es gibt eine Reihe von Nachteilen beim Erstellen einer eigenen Caching-Lösung.

In erster Linie ziehen Sie wichtige Entwicklungsressourcen von Ihrem Geschäftsziel, der Entwicklung Ihrer Anwendung, ab und stecken sie in die Entwicklung einer Infrastruktur, die Sie leicht kaufen könnten. Zweitens erfordert die Entwicklung einer korrekten und intelligenten Caching-Lösung viel Aufwand, und Sie verfügen möglicherweise nicht über das richtige Fachwissen in Ihrem Team, um einen Hochleistungs-Cache zu entwerfen und zu entwickeln, der die komplexen Parallelitäts- und Synchronisierungsszenarien bewältigen kann. Und schließlich, selbst wenn Sie über das Fachwissen verfügten, investieren Sie viel Mühe in etwas, das Sie von Ihrem Geschäftsfokus ablenkt.

Selbst wenn Sie sich schließlich für den Kauf einer kommerziellen Caching-Lösung entscheiden, müssen Sie sicherstellen, dass sie alle erforderlichen Caching- und Clustering-Funktionen bietet, die Ihre Anwendung benötigt. Selbst wenn Sie heute mit einer Einzelserverkonfiguration beginnen, möchten Sie eine Caching-Lösung, die mit Ihrer Anwendung zu einer verteilten und geclusterten Umgebung wachsen kann.

Steigern Sie die Anwendungsleistung

Der offensichtlichste Vorteil der Verwendung von Caching ist eine dramatische Verbesserung Ihrer Anwendungsleistung. Caching ist der Vorgang des Speicherns von Daten (sowohl schreibgeschützt als auch transaktional) in der Nähe der häufig verwendeten Anwendung. Typischerweise werden diese Daten im Speicher (als Objekte) gespeichert, da das Abrufen von Daten aus dem Speicher viel effizienter ist als das Abrufen von Daten aus anderen Orten, wie z. B. einer Datenbank.

Hochskalieren des Datenbankservers ohne teure Hardware-Upgrades

Die meisten Anwendungen führen viel mehr Lesevorgänge als Schreibvorgänge durch (normalerweise im Verhältnis 70:30 oder 80:20). Und das Zwischenspeichern von Daten auf der Anwendungsserverebene ermöglicht es den Anwendungen, Datenbankausflüge für Lesevorgänge zu reduzieren. Dadurch wird die Belastung des Datenbankservers drastisch reduziert.

Daraus ergeben sich zwei offensichtliche Vorteile. Erstens führt der Datenbankserver die Schreiboperationen jetzt viel schneller aus. Und zweitens kann der Datenbankserver jetzt eine viel größere Anzahl von Clients verwalten, ohne dass teure Hardware-Upgrades erforderlich sind. Datenbankserver sind normalerweise die teuerste Hardware in den meisten N-Tier-Anwendungsbereitstellungen und daher sind die Einsparungen bei Hardware-Upgrades hier normalerweise sehr hoch.

Transaktionsdaten zwischenspeichern

Herkömmlicherweise speichern Webanwendungen oder Webdienste entweder keine Daten oder verwenden primitive Mechanismen wie „Session State“, um schreibgeschützte Daten zwischenzuspeichern. Bei diesem Ansatz gibt es zwei Probleme. Erstens sind die meisten Daten, die eine unternehmenskritische Anwendung verwendet, nicht schreibgeschützt, sondern transaktional, und daher reicht das Zwischenspeichern von schreibgeschützten Daten nicht aus, um die Anwendungsleistung zu verbessern. Zweitens werden selbst diese Nur-Lese-Daten nicht unter Benutzern geteilt, die in einer realen Anwendung Tausende oder Zehntausende umfassen. Infolgedessen landen die meisten dieser Anwendungen für die meisten benötigten Daten auf dem Datenbankserver, was zu Leistungsproblemen führt.

Auf der anderen Seite, NCache ermöglicht es Anwendungen, sowohl statische als auch transaktionale Daten im Cache zu speichern. Und diese zwischengespeicherten Daten stehen allen Benutzern im Server-Cluster zur Verfügung. NCache stellt dann eine Reihe von Mechanismen bereit, um sicherzustellen, dass zwischengespeicherte Daten nicht veraltet sind und immer aktualisiert werden, wenn die Anwendung die Daten in der Datenbank aktualisiert. NCache ermöglicht es Ihnen auch, Situationen zu handhaben, in denen Daten von außerhalb der Anwendung aktualisiert werden müssen. Dies wird durch ein Konzept der "Abhängigkeiten" erreicht.

Beziehungen verwalten

Die meisten realen Anwendungen befassen sich mit komplexen Daten, die nicht nur transaktional sind, sondern vielschichtige Beziehungen enthalten. Das bedeutet, wenn Sie Daten zwischenspeichern, müssen Sie auch ihre Beziehungen behandeln. Der Cache muss diese Beziehungen kennen, damit er sie im Falle von Lade-, Einfüge-, Aktualisierungs- oder Löschvorgängen verwalten kann.

NCache verwaltet Beziehungen zwischen Objekten, sodass Änderungen an einem Objekt Änderungen oder Invalidierungen an allen zugehörigen Objekten auslösen können. Auch wenn Ihre Anwendung zuerst ein Objekt lädt und es in den Cache legt und dann später die zugehörigen Objekte lädt, kann sie dies erkennen NCache über diese Beziehungen und NCache kann sie verwalten.

Sie können nicht nur Beziehungen zwischen zwischengespeicherten Objekten verwalten, sondern auch zwischen zwischengespeicherten Objekten und externen Ressourcen. NCache stellt für diesen Zweck schlüssel- und dateibasierte Abhängigkeiten bereit. Und diese Abhängigkeiten können mithilfe von .NET Remoting remote aufgerufen werden. Dies hilft, Ihren Cache die ganze Zeit frisch zu halten.

Datenänderungen in Clustern synchronisieren

Viele Webanwendungen und Webdienste werden in Server-Cluster-/Server-Farm-Konfigurationen ausgeführt, um eine große Anzahl von Benutzern zu bewältigen. Wenn Ihr Cache in diesen Umgebungen nicht geclustert ist, sind Aktualisierungen von einem Server für andere Server nicht verfügbar. Infolgedessen werden Ihre zwischengespeicherten Daten inkonsistent und veraltet, was zu Datenintegritätsproblemen führt.

NCache ist ein leistungsstarker geclusterter Cache, der alle Datenänderungen im gesamten Cluster synchronisiert. Es bietet eine große Auswahl an Clustering-Topologien, mit denen Sie Ihre spezifischen Anforderungen erfüllen können. Sie können in Ihrem Cluster aus Topologien mit gespiegeltem Cache, repliziertem Cache, partitioniertem Cache und partitioniertem Replikat-Cache wählen. Diese werden ausführlicher besprochen in NCache Clustering-Topologien.

NCache stellt sicher, dass gleichzeitige Aktualisierungen des Caches serialisiert behandelt werden, um Datenintegritätsprobleme zu vermeiden. Darüber hinaus stellt es sicher, dass alle Änderungen am Cache sofort für alle Knoten im Cluster verfügbar sind. Dies ermöglicht Ihre Anwendung zu behandeln NCache als ein logischer Cache im gesamten Cluster.

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