副本数量可以按真实服务器的数量调节,真实服务器多则副本数量可以设置小一点,真实服务器少则副本数量需要设置多一点。在虚拟节点数量很大的时候,出于性能考虑所以不能使用循环的方法查找key对应的虚拟节点,可以使用二分法快速查找。redis一致性哈希算法一个优化的算法是不论副本数量设置为10,100,还是10000的时候,对查找所需要的时间基本是没有影响的。
故障转移
使用一次性哈希实现Redis分布式部署了,还需要考虑系统的可用性和稳定性。需要做到,在某一台或者多台server故障的时候,程序能够自动检测到故障,并将数据重新定位到其它server。
我们可以考虑,根据key查找到的虚拟节点所对应的真实服务器故障的时候,我们在一次性哈希圆环上沿顺时针方向顺移一步,找到下一点虚拟节点对应的真实服务器,将所要存储的数据存放上去。但也很有可能下一个虚拟节点所对应的真实服务器与前一个虚拟节点相同,还是那台故障的服务器,而每次尝试连接故障的redis服务是一个很大的性能开销。所以在第一次检测到故障服务器的时候就需要记录下来,然后在顺移到下一个虚拟节点的时候先判断是不是之前那一台故障的服务器,如果是那就不要再尝试进行连接,直接查找下一个虚拟节点,直到找到可用的服务器将数据存储上去。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-28756-2.html
我等着周一抢票呢哈哈~
我才看到因为我还没有每天刷微博的习惯
中国岛礁现在可以军事化了