Php Memcache故障切换和一致哈希

Php Memcache故障切换和一致哈希,php,memcached,Php,Memcached,我正在努力找到一种好方法,在当前使用PHP构建的web应用程序中处理脱机/关闭memcached服务器 我刚刚发现了这个链接,它展示了如何做我想做的事情的方法,我认为: 无论如何,当我开始使用它并阅读关于使用memcache进行故障切换的PHP文档时,我会感到困惑。为什么脱机memcache服务器与联机服务器一起添加到$realInstance服务器池中 阅读memcache文档让我更加困惑: 状态 控制是否应将服务器标记为联机。设置此 参数设置为FALSE并重试\u间隔 to-1允许对发生故

我正在努力找到一种好方法,在当前使用PHP构建的web应用程序中处理脱机/关闭memcached服务器

我刚刚发现了这个链接,它展示了如何做我想做的事情的方法,我认为:

无论如何,当我开始使用它并阅读关于使用memcache进行故障切换的PHP文档时,我会感到困惑。为什么脱机memcache服务器与联机服务器一起添加到
$realInstance
服务器池中

阅读memcache文档让我更加困惑:

状态

控制是否应将服务器标记为联机。设置此 参数设置为FALSE并重试\u间隔 to-1允许对发生故障的服务器进行恢复 放在游泳池里以免影响游泳 密钥分配算法。 然后将发送对此服务器的请求 故障转移或立即失败取决于 在memcache.allow\u故障转移 背景默认为TRUE,表示 服务器应该被认为是在线的


谢谢,

基本上,memcache分布式存储的工作方式就是告诉它所有的服务器。然后,当您请求一个密钥(存储或获取)时,它会创建该密钥的散列。该散列然后通过一个算法来确定它应该转到池中的哪个服务器(这都是在客户端完成的)。如果从池中删除脱机服务器,则散列计算将不同,并且您的整个存储可能会受到影响(数据仍然存在,但您可能无法访问它)

状态标志允许您处理大型应用程序中的服务器故障(并非刚刚发生的故障)。因此,您可以为应用程序创建一个配置文件,列出所有服务器及其状态。然后,如果需要使其中一台服务器脱机几分钟(或几个小时),可以将该服务器的状态标志设置为false。这样,php就不会试图寻找它(并超时),但哈希映射将保持不变(因此其他所有内容都可以访问)


有意义吗?

基本上,memcache分布式存储的工作方式是告诉它所有的服务器。然后,当您请求一个密钥(存储或获取)时,它会创建该密钥的散列。该散列然后通过一个算法来确定它应该转到池中的哪个服务器(这都是在客户端完成的)。如果从池中删除脱机服务器,则散列计算将不同,并且您的整个存储可能会受到影响(数据仍然存在,但您可能无法访问它)

状态标志允许您处理大型应用程序中的服务器故障(并非刚刚发生的故障)。因此,您可以为应用程序创建一个配置文件,列出所有服务器及其状态。然后,如果需要使其中一台服务器脱机几分钟(或几个小时),可以将该服务器的状态标志设置为false。这样,php就不会试图寻找它(并超时),但哈希映射将保持不变(因此其他所有内容都可以访问)


有意义吗?

嗨!非常感谢你的回答@ircmaxell所以,如果池中有两台服务器,其中一台脱机,那么仍然会向脱机服务器发出请求?没有其他方法可以从memcache中删除脱机服务器?@Sonesh:您需要将其从池中删除。但请注意,无论何时更改池,缓存哈希映射都会更改(基本上是缓存刷新)…@ircmaxell谢谢!我还有两个问题,如果你能回答这个问题,我将非常感激。你好非常感谢你的回答@ircmaxell所以,如果池中有两台服务器,其中一台脱机,那么仍然会向脱机服务器发出请求?没有其他方法可以从memcache中删除脱机服务器?@Sonesh:您需要将其从池中删除。但请注意,无论何时更改池,缓存哈希映射都会更改(基本上是缓存刷新)…@ircmaxell谢谢!我还有两个问题,如果你能回答这个问题,我将非常感激。