私の以前の設定は、単一のWebサーバーと単一のデータベースサーバーでした。私はデータベースに行く呼び出しをたくさん避けるためにキャッシュのものにnhibernate第2レベルのキャッシュを使用していた。これは私がこれを使用していたとして、このアセンブリは単一のWebサーバーから複数のWebサーバーへの負荷分散環境への移行時の第2レベルのキャッシングに関する問題や質問をNhibernate
nhibernate.caches.syscache
を素晴らしい仕事をして(通常のsyscacheプロバイダを使用して)は、第2のレベルのキャッシュをオンにするには、このコードを追加しました:
return configuration
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<ApplicationMap>().Conventions.Add(typeof(Conventions)))
.ExposeConfiguration(
c => {
c.SetProperty("proxyfactory.factory_class", proxyFactory);
c.SetProperty("cache.provider_class", "NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache");
c.SetProperty("cache.use_second_level_cache", "true");
c.SetProperty("cache.use_query_cache", "true");
c.SetProperty("expiration", "86400");
})
.BuildSessionFactory();
私が今まで以上に移行しています複数のWebサーバを持つ新しい環境です。私はこれに意味を理解しようとしています(私はまだ1台のDBサーバを持っています)。
キャッシュは前にWebサーバ上に格納されていたので、私自身が同期していなくてもよいと日付の更新のうち、発生することがあり、各Webサーバ上の2つの並列のキャッシュを持っているように、今、それが思われる、など
何これまでに持っていたキャッシングの利点を得るための最良のソリューションですが、この新しい設定で提供されるWebサーバーのロードバランシングの弾力性も活用していますか?
リンクに感謝します。私はまだいくつか質問があります。 1.このキャッシュをどこで実行するか(Webサーバーのいずれかで、このキャッシュには別のサーバーが必要です)。それが別のマシンでなければならない場合は、キャッシュに到達するためにネットワークホップが必要なので、これは遅くなることはありませんか? – leora
@ooo、それは理想的には、たくさんのメモリを持つ別のマシンであるべきです。 Webサーバーを使用することもできますが、一般的には推奨されません。 –
キャッシュを取得するために余分なネットワークホップがある点についてはどうでしょうか(同じマシン上にあるのと比べて)。また、その新しいマシンをキャッシュマシンに専念させるべきでしょうか。 – leora