一致性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 映射关系。

关于 Administrator

爱拼才会赢!
此条目发表在 Php 分类目录,贴了 , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>