Memcached 分布

Memcached 分布

我对节点间 memcached 分布有疑问。我们有 20 个 memcached 节点,每个节点有 200GB memcached。我们的应用是 PHP 应用。

$memcache->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);

如果发生以下情况,将会产生什么结果:

  1. 节点 2 发生故障
  2. 节点 2 上的密钥“XXX”正在请求设置

    => 我假设密钥将被写在另一个节点上,也许是节点 5

  3. 节点 2 恢复运行
  4. 尝试获取密钥“XXX”。

memcached 将从哪个节点获取密钥:节点 5 还是节点 2?

答案1

节点的选择基于哈希算法,该算法决定如何在可用主机之间分发密钥。您可以阅读 PHP 客户端库提供的两种分发类型:搜索 Memcached::DISTRIBUTION_MODULAMemcached::DISTRIBUTION_CONSISTENT分发算法。

随着节点的添加或移除,可能会导致对任何特定键的获取/存储落在相同或不同的节点中,但最终这并不重要。您仍会在新节点中缓存未命中时填充键,而其他节点中相同键的任何旧值将不会被访问并过期并消失。

从存储方面来说,Memcache 更像是一张床垫而不是银行。

相关内容