我们有22个HTTP服务器,每个服务器都运行各自的ASP.NET缓存。他们从只读高速缓存中读取只在高峰时段更新的数据库。
我们使用文件依赖关系来使缓存无效,提示服务器“新建”他们的缓存...如果在高峰时段意外地执行此操作,则由于突然大量打开连接而导致数据库群集崩溃的风险
有人在这个分布式表单中使用过memcached和ASP.NET吗?在我看来,它将提供一个巨大的优势,即只需要构建一个缓存(并将数据库减少21倍),而memcached将处理在每个盒子上分发它。
如果有,是将它放在与HTTP框相同的框中,还是运行单独的缓存层?它的扩展程度如何?我们可以期望它需要功能强大的服务器吗?我们的工作数据集不是很大(我们在每个HTTP框上都适合4 gig的内存)。
你如何处理失效?
寻找经验和战争故事。
编辑:Win2k3,IIS6,64位服务器...每盒4演出(我相信,当我们改为64位服务器时,我们可能已经将它提升到16演出。)答案 0 :(得分:5)
“memcached将处理在每个盒子上分发它”
memcached不会将缓存分发或复制到memcached服务器场中的每个框。 memcached客户端基本上散列密钥,并根据该散列选择缓存服务器。当其中一个memcached服务器发生故障时,您将丢失该服务器上存在的任何缓存项,但是,客户端将识别该故障并开始将值写入其他服务器。在这种情况下,您的代码需要考虑缓存中缺少的项目,并在必要时重置它们。
本文更详细地讨论了memcached架构:How memcached works。
答案 1 :(得分:2)
最佳实践(根据memcached网站)是在与您的网络服务器应用程序相同的框上运行memcached,否则您正在进行http调用(这并不是那么糟糕,但它不是最佳的)。如果您正在运行64位应用服务器(如果您将要运行memcached,则可能应该这样做),那么您可以使用大量内存加载每个服务器,并且它可用于memcached。 memcached使用的CPU资源并不多,所以如果您当前的应用服务器不是很累,那么它将保持这种状态。
答案 2 :(得分:1)
没有一起使用它们,但我已经在不同的项目中使用过它们。
最后我看到文档明确表示与网络服务器共享是可以的。
Memcache真的只需要内存,如果你把你的asp.net缓存从等式中拿出来,你的Web服务器实际使用了多少内存?可能不多。它不会与您的Web服务器竞争CPU,它根本不需要磁盘。您可以考虑从传入的Web请求中分割掉网络流量(如果您还没有)。
效果很好而且速度很快我没有遇到任何问题。
哦,我使用它的项目是无效的。不确定有什么其他模式。
答案 3 :(得分:1)
如果要在memcached服务器上进行复制,那么可能需要查看repcached。它是用于处理复制部分的memcached的补丁。
答案 4 :(得分:0)
值得一试Velocity,这是Microsoft提供的分布式缓存。我不能给你一个与memcached的逐点比较,但Velocity与ASP.NET集成,并将继续得到更多的开发和集成。