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.
NHibernate ist ein hervorragendes ORM-Tool für Ihre Anwendung und vereinfacht Ihre Codierungsstandards über verschiedene Teams hinweg.
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.
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.
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.
Hier haben wir also einen solchen Level-2-Cache-Anbieter von NCache.
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.
Hier ist also ein allgemeines Architekturdiagramm.
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.
Mit den Konfigurationsänderungen können Sie also eine Reihe von Features für den Second Level Cache-Anbieter konfigurieren.
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.
Sobald Sie installieren NCache, so sieht es auf Ihrem System aus.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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