ASP.NET负载均衡系统的缓存解决方案

5
我们正在开发一个基于负载均衡系统的ASP.NET Web应用程序。现在,我们面临当前缓存系统的几个问题:
  1. 它在网站服务器间不是同步的。有一些解决方案,如SQL Cache Dependency或实现一个分离的Cache服务:
    • SQL Cache Dependency:对我们的应用程序来说效率稳定但相当慢
    • 分离的Cache服务:速度更快但不稳定,因为我们将面临瓶颈问题。你有没有任何解决这个问题的方案?
  2. 当我们升级数据库系统到集群服务器时,什么是缓存系统的稳定解决方案?
感谢。

1
Windows Server AppFabric - Andrei Drynov
3个回答

3

我看过了NCache,它是免费的(Express版本免费。 专业版和企业版只有开发者机器是免费的),并且与asp.net兼容。

NCache是一种极快且可扩展的内存分布式缓存,可以缓存应用程序数据。 NCache还在Web农场中存储ASP.NET会话状态会话。 它与负载均衡器一起使用非常好,并且配置简单。


2
我们使用memcached,一直没有出现问题。非常可靠且实现起来相当简单。你说的第三方缓存解决方案会有瓶颈问题是什么意思?我们已经使用它大约一年左右了,并且使用体验非常好。
编辑: 我们的环境在3个Web服务器和2个SQL服务器之间进行负载均衡。
我更喜欢第三方缓存的另一个原因是可以将任何东西缓存在其中,包括对象、数据等。
设置:http://syntaxhelp.com/ASP.NET/Cache/memcache 参考:http://code.google.com/p/memcached/wiki/NewStart

1
感谢您的分享,Robert。您是否在所有3个Web服务器上实现了memcache?有没有办法在它们之间同步memcache? - Hoa Tran
1
当数据记录被更新(来自1个Web服务器)时,我如何通知另外2个服务器? - Hoa Tran
不,它并没有在所有三个服务器上运行。我认为我们已经将其运行在另一台服务器上(我没有参与实施),所以当记录更新时,并没有将缓存的内容更新到其他服务器上。 - Robert

0

Memcache适用于大多数情况,但如果您有许多服务器(每个服务器都持有总memcache池的一个分片),那么这将导致显着的网络流量,因为数据必须从其所在的服务器传输到使用它的地方。

在某些高读取/低写入的情况下,最好让每个服务器都持有所有最常用数据的本地副本,然后有一个单独的服务负责可靠地更新所有副本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接