libketama consistent hash (一致性hash) memcache 客户端

来源:互联网 发布:win7在端口23连接失败 编辑:程序博客网 时间:2024/06/02 01:00

libketama       

一致性hash有什么用呢?
我们最常用的hash方法是这样的:
server = serverlist[hash(key) % serverlist的个数]
这样明显有一个缺点:当服务器的个数变化时,所有的hash都将无效,全部得重来一次。

一致性hash就是解决这个问题的。
大楖的算法:
比如:现在有3台服务器:
10.0.10.1:1232, 10.0.10.2:1232, 10.0.10.3:1232
定义一个数组比如有1000个元素,每一个元素都指向一台服务器,保留算到的hash值.
我们的key,也做一下hash, value和这些元素的hash value比较,当遇到比value大的元素的hahs value时就选这台服务器.
当有一台新机器来的时候,可能元素个数变成了1100个:但是只有少量的hash value变了。大部分的还是可以用的。 详细的算法看代码吧,挺有趣的。

他还有负载均衡的做用呀(1000个元素的20%指向server1, 30%指向server2....) 。这在某些应用中是非常有用的。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为手机太卡怎么办呢 华为手机5x太卡!怎么办 华为手机玩游戏时太卡了怎么办? 买到华为翻新机怎么办 华为畅享8声音小怎么办 华为5a安全模式怎么办 手机跳屏怎么办金立 苹果手机触控不灵敏怎么办 华为mate8手机声音小怎么办 华为mate9相机无法对焦怎么办 新疆外地电信卡信号差怎么办 华为手机搜索不到wifi怎么办 华为浏览器恢复只有一个页面怎么办 华为手机触摸屏没反应怎么办 快递不给送上楼怎么办 华为荣耀手机声音小怎么办 华为手机来电铃声小怎么办 s弯出来时老压线怎么办 苹果7p手机弯了怎么办 小米手机摔弯了怎么办 华为畅享5没声音怎么办 掌阅语音闪退怎么办 华为mate开屏成排线怎么办 华为mate8电池坏了怎么办 8plus拍照不清晰怎么办 荣耀手环3丢了怎么办 华为mate9手机声音小怎么办 华为麦芒6丢了怎么办 华为麦芒4无法访问移动网络怎么办 自拍时屏幕是白的怎么办 华为麦芒5手机音量小怎么办 小米5x玩王者卡怎么办 小米5x打王者卡怎么办 华为荣耀10卡顿怎么办 麦芒6记不得密码怎么办 华为麦芒4镜头碎了怎么办 三星s5出像网的信号怎么办 华为手机进海水资料怎么办 华为手机进海水了怎么办 苹果手机玩王者荣耀卡怎么办 玩王者荣耀闪屏怎么办