【问题标题】:Anyone using Memcached with ASP.NET on a distributed farm?有人在分布式场中使用 Memcached 和 ASP.NET 吗?
【发布时间】:2009-02-20 21:41:07
【问题描述】:

我们有 22 台 HTTP 服务器,每台服务器都运行各自的 ASP.NET 缓存。他们从只读数据库中读取数据,该数据库仅在非高峰时段更新。

我们使用文件依赖项来使缓存无效,提示服务器“新建”他们的缓存...如果在高峰时段意外这样做,则可能会因打开的连接突然泛滥而导致我们的数据库集群崩溃.

有没有人以这种分布式形式将 memcached 与 ASP.NET 一起使用?在我看来,这将提供一个巨大的优势,即只需构建一个缓存(并且减少 21 次访问 DB),而 memcached 会处理将其分布在每个盒子上。

如果有,是把它和 HTTP 盒子放在同一个盒子上,还是运行一个单独的缓存层?它的扩展性如何,我们可以期望它需要强大的服务器吗?我们的工作数据集并不大(我们可以将其放入每个 HTTP 框的 4 gigs 内存中)。

你如何处理失效?

寻找经验和战争故事。

编辑:Win2k3、IIS6、64 位服务器...每盒 4 个演出(我相信,当我们更改为 64 位服务器时,我们可能已将其提高到 16 个演出)。

【问题讨论】:

    标签: asp.net memcached


    【解决方案1】:

    “memcached 会处理在每个盒子上分发它”

    memcached 不会将缓存分发或复制到 memcached 场中的每个盒子。 memcached 客户端基本上对密钥进行散列,并根据该散列选择缓存服务器。当其中一个 memcached 服务器发生故障时,您将丢失该服务器上存在的所有缓存项,但是,客户端将识别故障并开始将值写入另一台服务器。在这种情况下,您的代码需要考虑缓存中丢失的项目并在必要时重置它们。

    本文更详细地讨论了 memcached 架构:How memcached works

    【讨论】:

    • 谢谢,我刚刚花了一个小时阅读了该网站上的所有内容。
    【解决方案2】:

    最佳实践(根据 memcached 站点)是在与您的 Web 服务器应用程序相同的机器上运行 memcached,否则您将进行 http 调用(这还不错,但也不是最佳的)。如果您正在运行 64 位应用程序服务器(如果您要运行 memcached,您可能应该这样做),那么您可以为每个服务器加载大量内存,并且它可用于 memcached。 memcached 使用 CPU 资源的方式并不多,因此如果您当前的应用服务器不是很费电,它将保持这种状态。

    【讨论】:

      【解决方案3】:

      没有一起使用它们,但我已经在不同的项目中使用了它们。

      最后我看到文档明确说与网络服务器共享是可以的。

      Memcache 真的只需要 RAM,如果您将您的 asp.net 缓存排除在等式之外,那么您的 Web 服务器实际使用了多少 RAM?应该不多吧。它不会与您的 Web 服务器竞争 CPU,而且它根本不需要磁盘。您可以考虑从传入的 Web 请求中分割出网络流量(如果您还没有的话)。

      效果很好,速度很快,我没有任何问题。

      哦,失效在我使用它的项目上是明确的。不知道还有什么其他模式。

      【讨论】:

        【解决方案4】:

        如果您想在您的 memcached 服务器上进行复制,那么可能值得一看 repcached。这是处理复制部分的 memcached 补丁。

        【讨论】:

          【解决方案5】:

          值得一试Velocity,这是微软提供的分布式缓存。我不能给你一个与 memcached 的逐点比较,但 Velocity 与 ASP.NET 集成,并将继续得到更多的开发和集成。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-07-03
            • 1970-01-01
            • 2011-02-21
            • 2014-05-01
            • 2010-09-29
            • 2010-09-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多