memcached 如何处理容错的?

不处理! 在 memcached 节点失效的情况下,集群没有必要做任何容错处理。如

果发生了节点失效,应对的措施完全取决于用户。节点失效时,下面列出几种方

案供您选择:

忽略它! 在失效节点被恢复或替换之前,还有很多其他节点可以应对节

点失效带来的影响。

把失效的节点从节点列表中移除。做这个操作千万要小心!在默认情况下

(余数式哈希算法),客户端添加或移除节点,会导致所有的缓存数据不可用!

因为哈希参照的节点列表变化了,大部分 key 会因为哈希值的改变而被映射到

(与原来)不同的节点上。

启动热备节点,接管失效节点所占用的 IP。这样可以防止哈希紊乱

(hashing chaos)。

如果希望添加和移除节点,而不影响原先的哈希结果,可以使用一致性哈

希算法(consistent hashing)。您可以百度一下一致性哈希算法。支持一致性

哈希的客户端已经很成熟,而且被广泛使用。去尝试一下吧!

两次哈希(reshing)。当客户端存取数据时,如果发现一个节点 down

了,就再做一次哈希(哈希算法与前一次不同),重新选择另一个节点(需要注

意的时,客户端并没有把 down 的节点从节点列表中移除,下次还是有可能先

哈希到它)。如果某个节点时好时坏,两次哈希的方法就有风险了,好的节点和

坏的节点上都可能存在脏数据(stale data)。

相关推荐