asp.net-mvc - 从单个 Web 服务器迁移到多个 Web 服务器负载平衡环境时的 Nhibernate 二级缓存问题

标签 asp.net-mvc nhibernate fluent-nhibernate load-balancing second-level-cache

我之前的设置是一个 Web 服务器和一个数据库服务器。我使用 nhibernate 二级缓存来缓存内容,以避免大量调用数据库。这非常有效,因为我正在使用这个组件

nhibernate.caches.syscache

并添加此代码以打开二级缓存(使用常规 syscache 提供程序):

       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();

我现在已经迁移到一个拥有多个网络服务器的新环境,我正在尝试理解它的含义(我仍然有一个数据库服务器)。

由于缓存之前存储在网络服务器上,现在看起来我在每个网络服务器上都有 2 个并行缓存,它们本身可能不同步,并可能导致更新过时等。

什么是最佳解决方案,既能获得我之前拥有的缓存优势,又能利用此新设置提供的 Web 服务器负载平衡的弹性?

最佳答案

艾延德 blogged关于 NHibernate 中二级缓存的使用。您将需要在网络场场景中使用分布式缓存。例如 SysCache2(它依赖于 ASP.NET 缓存,可以配置为使用分布式提供程序)或 MemCache。这是an article说明如何配置 memcached。

关于asp.net-mvc - 从单个 Web 服务器迁移到多个 Web 服务器负载平衡环境时的 Nhibernate 二级缓存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6587457/

相关文章:

asp.net-mvc - Asp.Net MVC2 RenderAction 更改页面 mime 类型?

nhibernate - Fluent NHibernate 单向一对一映射

c# - NHibernate 是否会覆盖映射的 setter?

nhibernate - NHibernate QueryOver如何在未声明的关系上加入

NHibernate 为所有列生成更新语句

asp.net - 发布到 Azure 网站后无法加载文件或程序集 System.Web.Http.WebHost

asp.net - 在 ASP.NET MVC 中提供 favicon.ico

asp.net-mvc - ASP.NET MVC - 301 重定向 - SEO 问题

sqlite - 在 SQLite 单元测试中处理 "schema"

vb.net - 使用 Fluent NHibernate 时,vb.net 开发人员可以使用哪些选项?