Beheben Sie ASP.NET-Cachebeschränkungen in Webfarmen mit NCache
Microsoft stellt ein ASP.NET Cache-Objekt innerhalb des Anwendungsbereichs von ASP.NET bereit, mit dem Sie Anwendungsdaten zwischenspeichern und diese teuren Datenbankfahrten reduzieren können Verbessern Sie Ihre ASP.NET-Leistung. So wird ASP.NET Cache normalerweise verwendet.
using System.Web.Caching;
...
string key = "Employee:EmployeeId:1000";
Employee employee = (Employee)Cache[key];
if (employee == null){
// Load Employee from DB & put it in the Cache
LoadEmployeeFromDb(employee);
Cache.Insert(key, employee, null,
Cache.NoAbsoluteExpiration,
Cache.NoSlidingExpiration,
CacheItemPriority.Default, null );
}
ASP.NET-Cachebeschränkungen in Webfarmen
ASP.NET Cache ist ein eigenständiger In-Process-Cache (InProc) und weist daher viele Einschränkungen auf, wenn Ihre Anwendung in einer Webfarm mit Lastenausgleich bereitgestellt wird. Diese Einschränkungen sind:
- Mehrere Cache-Kopien nicht synchronisiert: Mehrere Kopien Ihres Caches in Webgärten oder Webfarmen werden nicht miteinander synchronisiert, da ASP.NET Cache eigenständig ist. Und dies stellt ein großes Problem der Datenintegrität für Ihre Anwendung dar.
- Cache verloren, wenn Arbeitsprozess wiederverwendet wird: Alle ASP.NET-Cachedaten gehen verloren, wenn der Arbeitsprozess wiederverwendet wird. Und dies verursacht ein Leistungsproblem, da Sie den gesamten Cache erneut aus der Datenbank laden müssen.
- Das Problem mit der Cache-Größe ist begrenzt: Der ASP.NET-Cache muss innerhalb der Arbeitsspeichergrenze des ASP.NET-Worker-Prozesses liegen, was die Größe Ihres Cache stark einschränkt.
- Cache-Synchronisierung über DB hat Probleme: Mit SQL CacheDependency in ASP.NET Cache können Sie den Cache mit der Datenbank synchronisieren. Und einige Leute verwenden es, um mehrere Cache-Kopien auf verschiedenen Webservern miteinander zu synchronisieren, indem sie die Datenbank durchlaufen. Dies hat jedoch große Leistungs- und Skalierbarkeitsprobleme, da die Datenbank wieder im Mittelpunkt aller Aktivitäten steht und SQL CacheDependency selbst nicht sehr skalierbar ist.
Verteilter Cache (NCache): Lösung für Webfarmen
NCache ist ein verteilter Cache und löst alle oben genannten Einschränkungen von ASP.NET Cache. Hier ist, wie NCache behebt diese Einschränkungen:
- In der Webfarm synchronisierter Cache: NCache ist eine verteilter Cache und synchronisiert den Cache über mehrere Server in einer Webfarm. Dies bedeutet, dass es keine Probleme mit der Datenintegrität gibt NCache.
- Cache OutProc im Webgarten: NCache ist ein prozessexterner Cache, sodass sich mehrere Arbeitsprozesse einen gemeinsamen Cache teilen können.
- Cachegröße sehr skalierbar: NCache beschränkt nicht nur jeden ASP.NET-Arbeitsprozesstyp der Speichergröße, sondern ermöglicht es Ihnen auch weitere Cache-Server hinzufügen um die Speicherkapazität zu erweitern. Sie können also problemlos 100 GB oder mehr Cache-Größe haben.
- Cache-Skalierungen für hohe Transaktionen in Webfarmen: NCache ist ein verteilter Cache und bietet skalierbare Caching-Topologien. Dies erlaubt NCache den Cache-Cluster problemlos zu skalieren.
- Der Cache ist bei der Datenreplikation sehr zuverlässig: NCache bietet Intelligente Datenreplikation ohne auf Leistung verzichten zu müssen. Diese Datenreplikation stellt sicher, dass selbst beim Ausfall eines Cache-Servers keine Daten verloren gehen. Dadurch kann Ihre ASP.NET-Anwendung Daten zwischenspeichern, ohne sich Gedanken über Datenverlust machen zu müssen.
NCache hat ASP.NET Cache API plus mehr
NCache bietet alle ASP.NET Cache-Features mit einer identischen API plus. Dies ermöglicht Ihnen Migration von ASP.NET-Cache zu NCache einwandfrei. Sie ändern nur den Namensraum ab System.Web.Caching zu Alachisoft.NCache.Web.Caching und stellen Sie sicher, dass alle zwischengespeicherten Objekte serialisierbar sind.
Zusätzlich NCache bietet zahlreiche Caching-Features, die ASP.NET Cache nicht hat. Hier ist eine unvollständige Liste:
Lesen Sie mehr über alle NCache Funktionen.
So verwenden Sie schnell NCache?
Hier sind einige einfache Schritte, die Sie unternehmen können, um schnell davon zu profitieren:
- Installieren NCache: auf Ihren Webservern und zwei Cache-Servern
- Erstellen Sie einen Cache: über eine GUI basiert NCache Manager-Tool
- Anwendungsdaten zwischenspeichern NCache: Sie müssen referenzieren NCache zusammenbauen und dann machen NCache API-Aufrufe zum Speichern und Abrufen Ihrer .NET-Objekte aus dem Cache
- Überwachen Sie die ASP.NET-Leistung: Sie können jetzt die Leistung von ASP.NET überwachen und auch NCache Leistung. NCache bietet einen umfangreichen Satz von PerfMon-Leistungsindikatoren, mit denen Sie überwachen können
Was macht man als nächstes?