Memcache(d) vs. Varnish 用于加速 3 层 Web 架构

Posted

技术标签:

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

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

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

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

什么是更好的选择?

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

【问题讨论】:

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

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

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

【讨论】:

这个:“(也许通过投票我的答案)”让我投票给你的答案 因此不建议像 *** 这样的网站(或像 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 在缓存匿名用户方面效果更好......

以上是关于Memcache(d) vs. Varnish 用于加速 3 层 Web 架构的主要内容,如果未能解决你的问题,请参考以下文章

linux自学笔记--memcache和varnish缓存服务器

php memcache啥时候使用

win10系统下memcache的安装配置教程

windows下网站怎么开启memcache

怎么合理的使用memcache缓存?如果缓存数据量过大怎么部署?

如何查看 memcache 中的数据