【问题标题】:Stacking caching engines堆叠缓存引擎
【发布时间】:2013-07-27 14:53:58
【问题描述】:
我试图更好地理解缓存引擎的不同之处,以及哪些可以与另一个堆叠。现在我们有两个网络服务器和一个单独的数据库服务器。我们将通过 TCP 使用 Redis,以便两个 Web 服务器共享相同的缓存。我对 Varnish 或 eAccelerator 感兴趣——据我所知,eAccelerator 是一个 php 缓存引擎,而 Redis,类似于 Memcached 是一个数据库缓存——所以这两个应该堆叠吗?那么清漆呢?据我了解,Memcached 和 Redis 是互斥的。
【问题讨论】:
标签:
caching
redis
memcached
varnish
eaccelerator
【解决方案1】:
据我了解,Memcached 和 Redis 是互斥的。
在大多数情况下,是的。但是,如果您的数据集超出了通常可以放入 RAM(单节点)的容量,则 memcached 的扩展性比 Redis 更好,因为大多数 memcached 客户端库支持将数据分布在一组 memcached 节点之间的一致性哈希,因此来自所有节点的总 RAM节点成为您的总数据集容量;只需添加更多的 memcached 节点来增加容量。
您可以使用 Redis 进行分片(水平扩展)以支持更大的数据集,但这样做的选择有限。 Twitter 开发了twemproxy 来对一组 redis 节点的 redis 键进行分片;虽然 Redis Cluster 仍在进行中,但 twemproxy 是扩展 redis 的推荐方法。
所以使用其中一个;你不需要两者,但在任何一种情况下,web/app 服务器通常是 memcached/redis 的客户端。
我对 Varnish 或 eAccelerator 感兴趣 - 据我了解
eAccelerator 是一个 php 缓存引擎。
Varnish 是一个反向缓存代理,位于您的应用/网络服务器之前。它缓存整个渲染页面并大大减少应用服务器上的负载。它通常是典型 Web 堆栈中的入口点(不包括负载均衡器)。
我没有使用 eAccelerator 的经验,但根据快速研究,它与 Varnish 并不相互排斥。一个典型的堆栈可能包括与 PHP/eAccelerator 或APC 的 varnish 对话(也可以查看)。此外,您可能需要考虑将 nginx 添加到组合中,请参阅 this。
希望有帮助