我对Memcached集群的世界很陌生
如果我有一个正在使用memcache的php web应用程序 – 它是如何做它的散列,并决定检查特定值的节点,以避免检查所有的。
奖金:如何轻松添加节点,避免重build所有散列。
Memcache客户端通过散列键值来知道要检查哪个节点。 默认情况下,它使用密钥的crc32值。 在旧的风格,你会做类似的事情
serverId = crc32(key) % servers.size
这意味着当你添加一个新的服务器节点时,大部分的事情都会重新映射到不同的节点。
对于你的奖金,使用新的风格,其中每个节点覆盖由随机select的服务器数量而不是每N个值确定的crc值的线性范围。 这被称为一致哈希。