Memcache(d)与Varnish加速三层Web架构

我试图加快我的基准testing(三层Web架构),并且我有一些与Memcache(d)和Varnish相关的一般问题。

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

  • 我可以同时使用吗? 在前台Web服务器和Memcached中清理数据库caching?

  • 什么是更好的select?

    (情景1 – 主要是写,
    情景2 – 主要阅读,
    scheme3 – 读写相似)

  • 清漆在networking服务器前面; 它用作caching的反向HTTP代理。
  • 你可以使用两者。
  • 大多数写 – 清漆将需要清除受影响的页面。 这将导致修改页面的开销和收益不大。
  • 大部分阅读 – 清漆可能会覆盖大部分。
  • 类似的阅读和写作 – Varnish将为您提供大量的页面,Memcache将为混合了已知数据和新数据的页面提供信息,使您可以更快地生成页面。

一个可以应用于stackoverflow.com的例子:添加这个评论使页面caching失效,所以这个页面将不得不从清漆(也是我的个人资料页面,这可能是不值得高速caching开始。受影响的页面可能有点问题)。 所有的评论,但是,仍然在Memcache,所以数据库只需要写这个评论。 数据库不需要做任何事情来生成页面。 所有的评论都是由Memcache提取的,并且页面被回收,直到有人再次影响它(也许通过投票我的答案)。 再次,数据库写入投票,所有其他数据从Memcache中提取,并且生命快。

Memcache保存你的数据库做大量的读取工作,Varnish通过让你不频繁地生成页面(如果不是Memcache,也减轻了数据库的负载),使你的dynamicWeb服务器免受CPU负载的影响。

我的经验来自与Drupal使用光油。 尽可能简单的条款,这是我的答案:

一般来说,Varnish的作用是通过cookie进行未经身份validation的stream量,memcached将caching已authentication的stream量。

所以使用两个。