首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我使用3台web服务器时,如何管理存储在web服务器上的缓存?

当我使用3台web服务器时,如何管理存储在web服务器上的缓存?
EN

Stack Overflow用户
提问于 2010-07-23 11:55:53
回答 2查看 360关注 0票数 0

我们正在开发一个跨3台负载平衡的web服务器的web应用程序。我们通过NHibernate提取的许多数据都存储在System.Web.Caching.Cache中。

System.Web.Caching.Cache为提高应用程序的响应能力做了很多工作,但是有几个问题我们不知道如何解决,例如

  1. 当用户请求server1上的数据时,数据被缓存在server1上,但是对于下一个请求,负载均衡器可能会将数据引导到server2。他们在server1上请求的数据不再可用,server2将不得不再次从数据库中请求数据。
  2. 如果用户在server1上做了一些事情来使缓存数据失效,那么缓存就会在server1上刷新。但是,原始缓存在server2 & server3上仍然可用,因此当用户提交后续请求并将其定向到其他服务器之一时,它们将显示无效数据。
  3. 我们有定期更新数据(如性能数据)的应用程序。在更新性能数据时,我们希望从缓存中将其刷新,因此当用户再次请求数据时,会向用户显示最新的数据。我们如何让这些应用程序在3台web服务器上刷新缓存?

解决这些问题的最佳方法是什么?

我们是否应该将缓存存储在单独的服务器上,就像我们可以用HttpContext.Session服务器存储SessionState服务器一样?

是否有一种方法可以在其他两个服务器上设置缓存依赖项?

我们可以在实际的数据库表或行上实现缓存依赖吗?当这些更改发生时,缓存会被刷新?--或者我们可以设置一个数据库触发器来以某种方式刷新缓存吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-23 12:21:44

你有几个选择:

1)使用分布式缓存(如远程缓存、速度或ncache)

2)使用所有web服务器都使用的共享缓存实例(例如memcached )。

NHibernate为所有这些提供程序提供了二级缓存,可以找到这里

票数 0
EN

Stack Overflow用户

发布于 2010-07-23 12:05:54

是的,多服务器环境暴露了ASP.NET缓存的弱点,因为它仅限于单服务器。您可能需要考虑使用像AppFabric这样的分布式缓存,这将为您提供一个逻辑缓存,作为所有三个web服务器的基础。

AppFabric可以与NHibernate一起作为二级缓存使用-参见http://sourceforge.net/projects/nhcontrib/files/NHibernate.Caches/ (尽管这个问题建议当前的实现可能与AppFabric v1发布版不同步)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3317867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档