memcached 如何处理容错的?

Posted 咔啡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了memcached 如何处理容错的?相关的知识,希望对你有一定的参考价值。

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

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

案供您选择:

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

点失效带来的影响。

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

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

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

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

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

(hashing chaos)。

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

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

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

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

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

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

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

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

以上是关于memcached 如何处理容错的?的主要内容,如果未能解决你的问题,请参考以下文章

django 如何处理多个 memcached 服务器?

Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解

Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解

如何最佳地使用memcached?

Memcached源码分析之线程模型

您通常如何处理数据库事务日志?