我正在努力想出一种很好的方法来处理用PHP构建的当前web应用程序中的脱机/下线memcached服务器。
我刚刚找到了这个链接,它展示了如何做我想做的事情的方法,我想:http://web.archive.org/web/20090421075021/http://cmunezero.com/2008/08/11/consistent-memcache-hashing-and-failover-with-php/
无论如何,当我开始使用它并阅读有关使用memcache的故障转移的PHP文档时,它会让我感到困惑。为什么脱机memcache服务器与联机服务器一起添加到$realInstance服务器池中?
阅读memcache文档更让我感到困惑:http://www.php.net/manual/en/memcache.addserver.php
status
控件是否应将服务器标记为联机。将此参数设置为FALSE,将retry_interval设置为-1,允许将失败的服务器保存在池中,以免影响密钥分配算法。然后,对此服务器的请求将根据memcache.allow_failover设置立即故障转移或失败。默认为TRUE,意味着服务器应该联机。
谢谢,
发布于 2010-05-22 14:10:29
基本上,memcache分布式存储的工作方式就是告诉它它的所有服务器。然后,当您请求一个密钥(存储或获取)时,它会创建该密钥的散列。然后,该哈希将通过一个算法来确定它应该到哪个池中的服务器(这都是在客户端完成的)。如果将脱机服务器从池中删除,则哈希计算将有所不同,您的整个存储可能会受到破坏(数据仍然存在,但您可能无法访问)。
status标志允许您在一个相当大的应用程序中处理服务器故障(不只是一个刚刚发生的故障)。因此,您可以做的是为您的应用程序创建一个配置文件,其中列出所有服务器及其状态。然后,如果需要将其中一个服务器脱机几分钟(或几个小时),则可以将该服务器的状态标志设置为false。这样,php就不会试图寻找它(并点击一个超时),但是散列映射将保持不变(因此其他的一切仍然是可访问的)。
讲得通?
https://stackoverflow.com/questions/2887928
复制相似问题