【问题标题】:Memcache(d) vs. Varnish for speeding up 3 tier web architectureMemcache(d) vs. Varnish 用于加速 3 层 Web 架构
【发布时间】:2011-05-28 06:28:42
【问题描述】:

我正在尝试加快我的基准测试(3 层网络架构),但我有一些与 Memcache(d) 和 Varnish 相关的一般性问题。

  • 有什么区别?
    在我看来,Varnish 在 Web 服务器后面,缓存网页,不需要更改代码,只需要配置。
    另一方面,Memcached 是通用缓存系统,主要用于缓存来自数据库的结果,并且确实需要更改 get 方法(第一次缓存查找)。

  • 我可以同时使用吗?前端 Web 服务器中的 Varnish 和用于数据库缓存的 Memcached?

  • 什么是更好的选择?

    (场景 1 - 主要是写作,
    场景 2 - 主要是阅读,
    场景3——读写类似)

【问题讨论】:

    标签: memcached varnish


    【解决方案1】:
    • Varnish 在网络服务器前面;它用作缓存的反向 http 代理。
    • 您可以同时使用。
    • 主要是写入 -- Varnish 需要清除受影响的页面。这将导致开销很大,并且对修改后的页面几乎没有好处。
    • 阅读最多 -- Varnish 可能会涵盖大部分内容。
    • 类似的读写——Varnish 将为您提供大量页面,Memcache 将为包含已知数据和新数据的页面提供信息,让您更快地生成页面。

    可能适用于 stackoverflow.com 的示例:添加此评论会使页面缓存无效,因此必须从 Varnish 中清除此页面(以及我的个人资料页面,这可能不值得一开始缓存。记住使所有受影响的页面无效可能有点问题)。然而,所有的 cmets 仍然在 Memcache 中,所以数据库只需要写这个注释。数据库不需要做任何其他事情来生成页面。所有的 cmets 都由 Memcache 拉取,并且页面被重新缓存,直到有人再次影响它(也许通过投票我的答案)。再次,数据库写入投票,所有其他数据都从 Memcache 中提取,并且生活很快。

    Memcache 使您的数据库免于执行大量读取工作,Varnish 通过减少生成页面的频率来使您的动态 Web 服务器免于 CPU 负载(如果不使用 Memcache,也可以减轻数据库负载)。

    【讨论】:

    • 这个:“(也许通过投票我的答案)”让我投票给你的答案
    • 因此不建议像 stackoverflow 这样的网站(或像 facebook 这样的带有活动提要页面的网站)使用 varnish。是吗?
    • @jbferland 我在你的例子中的问题是,这个页面的顶部有一张我的照片,上面有我收到的分数,我们如何用 Varnish 缓存但显示该区域的动态?跨度>
    • @Hossj 使用 ESI 标签。
    • Varnish 可能在 Web 服务器前面,但也可能在 Web 服务器后面。它也可以同时在同一个 Web 服务器的前面和后面;-) 例如 Varnish 不支持 SSL,因此在 Varnish 前面有一个 Web 服务器来处理 HTTPS 的情况并不少见。然后流量被代理到 Varnish,后者随后与应用程序 Web 服务器进行通信——这可能与处理 HTTPS 流量的服务器是同一台服务器。
    【解决方案2】:

    我的经验来自于在 Drupal 中使用 Varnish。用尽可能简单的术语,这是我的回答:

    通常,Varnish 适用于未经身份验证(通过 cookie)的流量,而 memcached 将缓存经过身份验证的流量。

    所以两者都用。

    【讨论】:

    • 你成功了,顺便说一句,我认为 Varnish 在缓存匿名用户方面效果更好......
    猜你喜欢
    • 2012-05-03
    • 2015-08-22
    • 2011-07-30
    • 2011-09-30
    • 2010-12-09
    • 2012-02-06
    • 2020-12-24
    • 2010-12-22
    • 1970-01-01
    相关资源
    最近更新 更多