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源码分析之线程模型

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