2012-04-05 129 views
2

我在“c”中使用libmemcached来写入数据白色MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA用法。所有密钥都沿着所有群集节点均匀分布,但是当我关闭其中一个时,密钥不会迁移。在google上搜索并不清楚如何设置libmemcached来自动执行。任何人都有这方面的经验?集群节点的libmemcached故障切换

+0

当你说迁移你的意思是任何新的'集'在密钥失败? – keety 2012-04-05 13:47:23

+0

是的,关机节点上的新密钥集未能在新服务器上设置。 – 2012-04-05 14:03:25

回答

0

在memcached服务器发生故障的情况下,Libmemcached不会在内部处理密钥迁移。在这种情况下,当libmemcached尝试检索存储在失败的服务器中的密钥时,会发生缓存未命中。

如果我们使用MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA,它只会确保缓存缺失是最小的,因为密钥是分布式的,并且不需要完成重新哈希。

解决方案: 您可以在多个节点上复制密钥,以帮助您在服务器故障时检索(密钥,值)对。但请注意,这不是一个非常一致的解决方案。有可能陈旧的数据。

EVICT失败的服务器,以便将密钥散列到新位置并将其从集群中删除。