Meine vorherige Konfiguration war ein einzelner Webserver und ein einzelner Datenbankserver. Ich benutzte Nhibernate 2nd Level Caching, um Dinge zu cachen, um zu vermeiden, dass viele Anrufe in die Datenbank gehen. Das hat gut funktioniert, als ich diese Versammlung benutzt habe
%Vor%und diesen Code hinzugefügt, um das Zwischenspeichern auf der zweiten Ebene (unter Verwendung des regulären Syscache-Providers) zu aktivieren:
%Vor%Ich habe jetzt zu einer neuen Umgebung migriert, die mehrere Webserver hat, und ich versuche die Implikationen zu verstehen (ich habe immer noch einen einzelnen Datenbankserver).
Da der Cache zuvor auf dem Webserver gespeichert wurde, scheint es jetzt so zu sein, dass ich auf jedem Webserver 2 parallele Caches habe, die möglicherweise nicht synchron sind und möglicherweise veraltete Updates usw. verursachen.
Was ist die beste Lösung, um die Vorteile der Zwischenspeicherung zu nutzen, die ich zuvor hatte, aber auch die Ausfallsicherheit des Webserver-Lastenausgleichs zu nutzen, der mit dieser neuen Einrichtung bereitgestellt wird?
Ayende bloggte über die Nutzung des Second-Level-Caches in NHibernate. In einem Webfarmszenario müssen Sie einen verteilten Cache verwenden. Zum Beispiel SysCache2 (das auf ASP.NET-Cache angewiesen ist und für die Verwendung eines verteilten Providers konfiguriert werden kann) oder MemCache. Hier ist ein Artikel , der veranschaulicht, wie Sie memcached konfigurieren können.
Nun, ich habe Memcached verwendet und es funktioniert wie ein Zauber. Sie müssen möglicherweise die Größe des Caches anpassen, aber ansonsten ist es stressfrei. Richten Sie einen memached Knoten auf jedem Webserver-Knoten ein und verwalten Sie diese Konfiguration beim Hinzufügen von Knoten
Tags und Links asp.net-mvc second-level-cache nhibernate fluent-nhibernate load-balancing