Php Memcache故障切换和一致哈希
我正在努力找到一种好方法,在当前使用PHP构建的web应用程序中处理脱机/关闭memcached服务器 我刚刚发现了这个链接,它展示了如何做我想做的事情的方法,我认为: 无论如何,当我开始使用它并阅读关于使用memcache进行故障切换的PHP文档时,我会感到困惑。为什么脱机memcache服务器与联机服务器一起添加到Php Memcache故障切换和一致哈希,php,memcached,Php,Memcached,我正在努力找到一种好方法,在当前使用PHP构建的web应用程序中处理脱机/关闭memcached服务器 我刚刚发现了这个链接,它展示了如何做我想做的事情的方法,我认为: 无论如何,当我开始使用它并阅读关于使用memcache进行故障切换的PHP文档时,我会感到困惑。为什么脱机memcache服务器与联机服务器一起添加到$realInstance服务器池中 阅读memcache文档让我更加困惑: 状态 控制是否应将服务器标记为联机。设置此 参数设置为FALSE并重试\u间隔 to-1允许对发生故
$realInstance
服务器池中
阅读memcache文档让我更加困惑:
状态
控制是否应将服务器标记为联机。设置此
参数设置为FALSE并重试\u间隔
to-1允许对发生故障的服务器进行恢复
放在游泳池里以免影响游泳
密钥分配算法。
然后将发送对此服务器的请求
故障转移或立即失败取决于
在memcache.allow\u故障转移
背景默认为TRUE,表示
服务器应该被认为是在线的
谢谢,基本上,memcache分布式存储的工作方式就是告诉它所有的服务器。然后,当您请求一个密钥(存储或获取)时,它会创建该密钥的散列。该散列然后通过一个算法来确定它应该转到池中的哪个服务器(这都是在客户端完成的)。如果从池中删除脱机服务器,则散列计算将不同,并且您的整个存储可能会受到影响(数据仍然存在,但您可能无法访问它) 状态标志允许您处理大型应用程序中的服务器故障(并非刚刚发生的故障)。因此,您可以为应用程序创建一个配置文件,列出所有服务器及其状态。然后,如果需要使其中一台服务器脱机几分钟(或几个小时),可以将该服务器的状态标志设置为false。这样,php就不会试图寻找它(并超时),但哈希映射将保持不变(因此其他所有内容都可以访问)
有意义吗?基本上,memcache分布式存储的工作方式是告诉它所有的服务器。然后,当您请求一个密钥(存储或获取)时,它会创建该密钥的散列。该散列然后通过一个算法来确定它应该转到池中的哪个服务器(这都是在客户端完成的)。如果从池中删除脱机服务器,则散列计算将不同,并且您的整个存储可能会受到影响(数据仍然存在,但您可能无法访问它) 状态标志允许您处理大型应用程序中的服务器故障(并非刚刚发生的故障)。因此,您可以为应用程序创建一个配置文件,列出所有服务器及其状态。然后,如果需要使其中一台服务器脱机几分钟(或几个小时),可以将该服务器的状态标志设置为false。这样,php就不会试图寻找它(并超时),但哈希映射将保持不变(因此其他所有内容都可以访问)
有意义吗?嗨!非常感谢你的回答@ircmaxell所以,如果池中有两台服务器,其中一台脱机,那么仍然会向脱机服务器发出请求?没有其他方法可以从memcache中删除脱机服务器?@Sonesh:您需要将其从池中删除。但请注意,无论何时更改池,缓存哈希映射都会更改(基本上是缓存刷新)…@ircmaxell谢谢!我还有两个问题,如果你能回答这个问题,我将非常感激。你好非常感谢你的回答@ircmaxell所以,如果池中有两台服务器,其中一台脱机,那么仍然会向脱机服务器发出请求?没有其他方法可以从memcache中删除脱机服务器?@Sonesh:您需要将其从池中删除。但请注意,无论何时更改池,缓存哈希映射都会更改(基本上是缓存刷新)…@ircmaxell谢谢!我还有两个问题,如果你能回答这个问题,我将非常感激。