MemCacheStore如何真正与多个服务器配合使用?

时间:2011-04-20 17:03:26

标签: ruby-on-rails ruby-on-rails-3 caching memcached session-state

我无法在任何地方找到有关ActiveSupport :: Cache :: MemCacheStore行为的文档,我希望这里有人可以解释一下。 The rdoc says

群集和负载平衡。可以指定多个memcached服务器,MemCacheStore将在所有可用服务器之间进行负载平衡。如果服务器出现故障,MemCacheStore将忽略它直到它重新启动。

确定。我想要最后一个功能,所以如果内存缓存服务器发生故障,整个堆栈都不会失败。但我需要了解负载均衡功能。我认为它不仅仅是循环请求,因为这似乎会导致不必要的缓存未命中。此外,我正在使用memcache进行会话,所以我不希望有人登录突然没有会话,因为memcache客户端“负载均衡”请求没有该会话的服务器......

有人可以帮我理解“负载平衡”功能的工作原理吗?

1 个答案:

答案 0 :(得分:3)

据我所知,它使用散列机制来确定向哪个内存缓存服务器发送请求。散列机制使用密钥,如果存储密钥值对,那么当密钥请求值时,相同的散列方法将告诉正确的内存缓存服务器从中获取数据。

这意味着如果内存缓存服务器出现故障,您将会丢失缓存在其上的数据比例(例如,如果1台服务器出现故障,则会丢失33%的缓存中的3服务器配置)

编辑:请参阅http://www.ruby-forum.com/topic/100104以获得更好的解释,比我刚才给出的更好。