NCache als NHibernate Second Level Cache

Erfahren Sie, wie zu verwenden, NCache als Second-Level-Cache für NHibernate. NCache stellt einen NHibernate-Cache-Anbieter der zweiten Ebene bereit, den Sie über Änderungen in web.config oder app.config einbinden können. NCache hat auch eine Datenbanksynchronisierungsfunktion implementiert, sodass Sie angeben können, welche Klassen mit der Datenbank synchronisiert werden sollen. NCache können Sie SqlDependency oder eine beliebige OLEDB-kompatible Datenbankabhängigkeit dafür angeben.

NCache ist eine Enterprise Distributed Caching-Lösung, die für die Skalierbarkeit und Leistung Ihrer Anwendung gedacht ist. Im heutigen Tutorial werden wir sehen, wie wir NHibernate-Anwendungen mithilfe eines Level-2-Cache-Anbieters skalieren können NCache.

Einschränkungen bei NHibernate L1 Cache

NHibernate ist ein hervorragendes ORM-Tool für Ihre Anwendung und vereinfacht Ihre Codierungsstandards über verschiedene Teams hinweg.

Einschränkungen bei NHibernate L1 Cache
Einschränkungen bei NHibernate L1 Cache

NHibernate gibt Ihnen standardmäßig einen In-Process-Cache, in dem Sie die Daten für jede Transaktion vorübergehend in Ihrem Worker-Prozess speichern können. Dies funktioniert gut für Einzelserveranwendungen, wird jedoch zu einem Leistungsengpass für Unternehmensanwendungen.

In Unternehmensanwendungen haben Sie normalerweise mehrere Webserver in einem Lastausgleichsszenario und ihre mehreren Worker-Prozessoren, die auf jedem von ihnen ausgeführt werden. Dies führt also dazu, dass mehrere redundante Abfragen für dieselben Daten von jedem Arbeitsprozess in Ihrer Datenbank durchgeführt werden, was Ihre Anwendung als Nettoergebnis verlangsamt, und es führt auch zu redundanter Speicherung einzeln auf jeder Arbeitsprozessseite in seinem eigenen Speicher und Ihnen kann nicht skaliert werden, wenn Sie Ihre Benutzerbasis vergrößern müssen.

NHibernate L2-Cache-Anbietermodell

Also, um diese Einschränkungen zu überwinden NHibernate stellt Ihnen einen Level-2-Cache-Anbieter zur Verfügung, wo Sie einen Second Level Cache anschließen können.

  • Idealerweise sollte L2-Cache sein
    • außer prozess
    • im Speicher
    • Verteilter Cache
  • Zuverlässig und hochverfügbar
  • Skalierbar

NHibernate L2 Cache Provider-Modell

Der Second Level Cache wird in Verbindung mit Ihrem In-Process-Cache verwendet. Wann immer Sie die Daten zum ersten Mal aus Ihrer Datenbank abrufen, schiebt NHibernate diese Daten automatisch in den Second Level Cache, der von allen Worker-Prozessen gemeinsam genutzt wird.

Idealerweise sollte der Second-Level-Cache ein In-Memory-Cache sein, da Sie Ihre Anwendungsleistung steigern möchten. Es muss ein Out-of-Process-Cache sein, der nicht geleert wird, selbst wenn Ihr Worker-Prozess wiederverwendet wird. Es muss verteilt werden, damit es von mehreren Arbeitsprozessen auf verschiedenen Webservern gemeinsam genutzt werden kann.

Denken Sie daran, dass Sie nur Ihre erhöhen können Anwendungsskalierbarkeit und Leistung, wenn Ihre zugrunde liegende Caching-Infrastruktur hochgradig skalierbar und leistungsorientiert ist.

NCache - NHibernate L2-Cache-Anbieter

Hier haben wir also einen solchen Level-2-Cache-Anbieter von NCache.

NCache - NHibernate L2-Cache-Anbieter
NCache - NHibernate L2-Cache-Anbieter

Dies ist eine Out-of-Process-In-Memory-Distributed-Caching-Lösung, die a dynamisches Clustering Fähigkeit und erstreckt sich über mehrere Server. Die Transaktionslast Ihrer Anwendung wird zur Laufzeit gleichmäßig auf alle Cache-Server verteilt, um Ihnen mehr Leistung und Leistung zu bieten NCache hält die Daten im gesamten Cluster repliziert, um Ihnen ein konsistentes Failover zu bieten, falls Sie einen Ihrer Cache-Server verlieren.

NCache unterstützt sowohl synchrone als auch asynchrone Replikationsmodi. So können Sie die Daten ohne Leistungseinbußen replizieren. Die Leistung von NCache wächst linear, wenn Sie der Caching-Ebene weitere Server hinzufügen. Die Cache-Größe ist unbegrenzt, sodass Sie Ihre Datengröße beliebig erweitern können.

Sie können auch weitere Server zur Laufzeit dynamisch in den Cache-Cluster aufnehmen, um die Transaktionsfähigkeit zu erhöhen und mehr Arbeitsspeicher zu haben.

Es bietet Ihnen auch eine Überwachung im Dashboard-Stil, mit der Sie auf einen Blick die Cache-Leistung, Ihre Client-Anwendungsaktivität im Cache und die verschiedenen vom Cache verbrauchten Systemressourcen sehen können.

Das rechte Bild zeigt die Partition-Replikat-Topologie, wodurch die Daten partitioniert und auf mehreren Servern repliziert werden. Partition-Replica ist die beliebteste Topologie darin NCache.

NCache Verteilter Level-2-Cache für NHibernate

Hier ist also ein allgemeines Architekturdiagramm.

Architekturdiagramm auf hoher Ebene
Architekturdiagramm auf hoher Ebene

Wenn Sie diesen Level-2-Anbieter ausschalten NCache in Ihrer Unternehmensanwendung erfordert es keine Codeänderungen in Ihrer Anwendung. Sie müssen nur einige Konfigurationsänderungen in Ihrer vornehmen web.config or app.config, wir reden darüber. Es gibt also keine redundanten Aufrufe mehr an Ihre Datenbank, wenn Sie die Daten bereits in der vorherigen Transaktion abgerufen haben.

In einer Lastausgleichs-Webfarm wie dieser werden die Daten automatisch von NHibernate in den Second-Level-Cache gepusht, sobald Sie sie zum ersten Mal von Ihrer Datenbank erhalten, und dieser Cache wird von allen Webservern gemeinsam genutzt. So hilft es Ihnen, die Belastung Ihrer Datenbank zu reduzieren.

NCache Konfigurierbare Level-2-Cache-Funktionen

Mit den Konfigurationsänderungen können Sie also eine Reihe von Features für den Second Level Cache-Anbieter konfigurieren.

  • Verwenden Sie NHibernate-Regionen
  • Cache-Objekte ablaufen lassen mit:
    • Gleit- oder Sterbezeit
    • Absoluter Ablauf
  • Datenbanksynchronisation mit:
    • SQL-Abhängigkeit
    • Polling-Abhängigkeit
  • Verwenden Sie die Synchronisierung. / Asynchron. Cache-Operationen
  • Legen Sie die Priorität von Cache-Elementen fest

NCache Konfigurierbare Level-2-Cache-Funktionen

Beispielsweise können Sie NHibernate-Regionen verwenden, Sie können Cache-Objekte so einstellen, dass sie mit einem absoluten oder Leerlaufzeitablauf ablaufen, Sie können auch die SQL-Abhängigkeit für konfigurieren Datenbanksynchronisierung. Sowohl synchrone als auch asynchrone Cache-Vorgänge werden unterstützt, und Sie können auch die Cache-Elementpriorität konfigurieren.

Daher führe ich Sie Schritt für Schritt durch eine praktische Session zur Konfiguration NCache Cache-Anbieter der Ebene 2 für eine Beispielanwendung.

Ich würde dir vorschlagen Laden Sie die kostenlose 30-Tage-Enterprise-Edition herunter von unserer Website. Dies ist ein voll funktionsfähiges und funktionsreiches Produkt, selbst in den Testtagen.

NHibernate-Integrationsbeispiel in NCache

Sobald Sie installieren NCache, so sieht es auf Ihrem System aus.

NHibernate-Integrationsbeispiel
NHibernate-Integrationsbeispiel

Es installiert eine Reihe von Visual Studio-Beispielen. Gehen wir zum Beispiel zum NHibernate-Beispiel, öffnen Sie es in Visual Studio. Möglicherweise müssen Sie das Beispiel neu erstellen, wenn Sie Video Studio 2010 verwenden. Möglicherweise benötigen Sie auch die Konvertierung.

Werfen wir einen Blick auf die Konfigurationsänderungen, die Sie für Ihre app.config für den Second Level Cache-Anbieter vornehmen müssen NCache.

app.config-Datei
app.config-Datei

Alles, was Sie brauchen, um einen Abschnitt mit dem Namen "ncache' für den Cache-Anbieter wie folgt in Ihrer app.config und dann können Sie eine Eigenschaft für den Cache-Anbieter wie diese hinzufügen.

Wir definieren auch die NCache Abschnitt selbst mit mehreren Regionen. Diese Regionen sind die NHibernate-Regionen. Jede Region wird einem anderen Cache-Namen zugeordnet NCache.

Wir haben hier also eine Standardregion, die alle Entitäten abdeckt, für die Sie keine NHibernate-Region angeben, und wir haben eine spezifische Namensregion wie diese „Kunden“-Region. Innerhalb jeder Region können Sie mehrere Eigenschaften für jede der Klassen angeben, die in diese Region fallen.

NHibernate Regionen
NHibernate Regionen

Legen Sie dafür beispielsweise die SQL-Abhängigkeit fest, legen Sie die Priorität der Cache-Elemente fest, verwenden Sie Synchronous oder Asynchronous, legen Sie die Ablaufstrategie auf Relativ oder Leerlaufzeit fest.

Ausführen der Caches

Um das Beispiel auszuführen, benötigen Sie also einige Caches. Der Standard-Cache und 'myPartitionReplicaCache' laufen in Ihrer NCache Geschäftsführer.

Lass uns gehen zu NCache Manager, ich habe dies jetzt mit „myPartionedReplicaCache“ und Standard-Cache mit 2 Server-Setups eingerichtet. Lassen Sie uns Ihre Anwendung ausführen, sehen Sie sich die Kundenliste an, beobachten Sie zum Beispiel einfach die Anforderung/Sek., die an beide Server geht, die die Daten dorthin schieben, sobald Sie sie aus der Datenbank erhalten haben.

Anfragen/Sek. gleichermaßen beantwortet
Anfragen/Sek. gleichermaßen beantwortet

Es gibt also etwa 49 plus 42 Elemente auf diesen beiden Servern, die gleichmäßig auf beide verteilt sind, und wenn ich die Abfrage erneut ausführe, kann ich diese Ergebnisse direkt aus dem Cache-Cluster der zweiten Ebene abrufen, anstatt zu Ihrer Datenbank zu gehen. Beobachten Sie also einfach die Anfragen/Sek., die von beiden Servern gleichermaßen beantwortet werden.

Cache-Zuverlässigkeitstest

Wir können den Zuverlässigkeitstest haben. Wir können einen der Cache-Server herunterfahren und Sie werden immer noch sehen, dass der Cache-Cluster in der Lage ist, Ihnen die Elemente zu geben und sie von den verbleibenden Servern wiederherzustellen.

Dafür müssen wir einen der Server stoppen und ich werde das tun. Wir haben die 2 Server, 21 und 22. Ich werde 22 stoppen, als ob er den Cluster verlassen hätte, und dann die Abfrage erneut ausführen.

Anhalten des Cache-Servers
Anhalten des Cache-Servers

Sie sehen 49 plus 42, die 91 Artikel sind noch auf einem der Server verfügbar. Sie wurden jetzt vom anderen Server wiederhergestellt, und wenn ich die Abfrage erneut ausführe und die Kundenliste erneut ansehe, sollte ich in der Lage sein, alle Artikel von diesem Server aus dem Cluster abzurufen. Sie können sehen, wie viele Anfragen/Sek. und Abrufe/Sek. von diesem Server laufen.

Zuverlässigkeitstest erfolgreich
Zuverlässigkeitstest erfolgreich

So haben Sie jetzt das zuverlässige Caching an Ort und Stelle, egal ob einer Ihrer Cache-Server zur Laufzeit nicht verfügbar ist. Die anderen Cache-Server können die Daten wiederherstellen und gut auf Ihre Anfragen reagieren. Gleichzeitig entlasten Sie Ihre Datenbank. Es werden keine redundanten Abfragen mehr an Ihre Datenbank gesendet.

Integrationscode für NHibernate in NCache

Wir stellen den Integrationscode für NHibernate in bereit NCache, wie Sie in dem Projekt sehen können, das ich geöffnet habe, und dieser Quellcode steht Ihnen zur Optimierung oder Anpassung für Ihre spezifischen NHibernate-Versionen zur Verfügung.

Integrationscode für NHibernate in NCache
Integrationscode für NHibernate in NCache

Wenn du zur NCache Installationsordner, hier haben wir den Code. Also, vielen Dank für Ihre Zeit heute und wir haben heute gesehen, wie NCache kann nützlich sein. Wie zuverlässig und skalierbar NCache ist, die Leistung Ihrer NHibernate-Anwendung zu steigern. Bleiben Sie dran für weitere Updates von NCache. Wir werden verschiedene Funktionen in den kommenden Tutorials besprechen. Wenn Sie Fragen haben, senden Sie uns eine E-Mail an support@alachisoft.com

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