日归档:2014/04/17

一致性hash算法 – consistent hashing

因redis有文件存储,挂了不会像mc那样完全都没有了,全站的memcache都换成了用redis。但是mc add多台server采用一致性hash算法,可以减少某台机器挂了造成大量key找错机器找不到值的影响。换成了redis也想用保留这个算法。 详细说明: http://blog.csdn.net/sparkliang/article/details/5279393 “3.5.1 移除 cache 考虑假设 cache B 挂掉了,根据上面讲到的映射方法,这时受影响的将仅是那些沿 cache B 逆时针遍历直到下一个 cache ( cache C )之间的对象,也即是本来映射到 cache B 上的那些对象。”  应该为 cache A php版实现方式: http://zwzweb.googlecode.com/files/Consistent%20Hashing.php 线上采用的是 C语言版本的实现打成so扩展了。mc类在new对象时通过调用其中的方法addTagerts 添加redis机器节点代号,lookup获取分配到的机器节点。实现尽可能的key值均匀分布。 consistent hashing 是一种 hash 算法,简单的说,在移除 / 添加一个 cache 时,它能够尽可能小的改变已存在 key 映射关系。

发表在 Php | 标签为 , | 留下评论