libmemcached故障转移群集的节点

时间:2012-04-05 13:22:18

标签: c++ c memcached libmemcached

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

2 个答案:

答案 0 :(得分:1)

我认为您必须使用:http://docs.libmemcached.org/memcached_behavior.html#MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS

如果您不允许libmemcached删除失败的服务器,它们会卡在列表中,因此密钥不会重新分发。

请注意,在MEMCACHED_BEHAVIOR_DEAD_TIMEOUT(请参阅12)秒后,将再次测试死服务器。因此,如果它再次出现,它将被带回完整的服务器列表。

答案 1 :(得分:0)

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

如果我们使用MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA,它将确保缓存未命中最小,因为密钥是分布式的,并且不需要完全重新散列。

解决方案: 您可以跨多个节点复制密钥,这有助于您在服务器发生故障时检索(密钥,值)对。但请注意,它不是一个强烈一致的解决方案。存在陈旧数据的可能性。

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

相关问题