码迷,mamicode.com
首页 > 其他好文 > 详细

hash一致性

时间:2018-11-10 15:03:45      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:对比   大学   对象   计算机   算法   虚拟   关系   技术   ping   

 介绍:
    1997年麻省理工大学学生研究的数据模型,被计算机实现到代码中了--hash一致性;本质来讲是一种散列算法;
    将计算机中的数据,投影(mapping)计算到一个0-43亿正整数的区间(hash环)
    
    key值和node节点的信息,都会做散列计算
  node节点的信息,是一个字符串对象"10.9.9.9:6379",这个对象完成hash一致性的散列计算,获取一个整数值

技术分享图片

key值与节点的对应关系,可以通过hash环上的映射整数结果来计算;
key值的映射整数,顺时针寻找最近的节点的整数值,增删改查,都到这个节点来完成;
node1对应key:key6,key5
node2对应key:key2,key3,key4
node3对应:key1

对比一下hash取余算法
缺点:节点数量变化(扩容),数据的未命中概率增高(缓存雪崩容易出现);集群节点数量越多;
   未命中概率越高,造成缓存击穿

技术分享图片

hash一致性的增加扩容节点

技术分享图片

 

 当node4添加进来之后,依然做散列计算,映射到环中某个整数;
只有绿色弧线对应的key值在查询获取时未命中,
集群节点数量越多的时候,被切分开的弧线的长度越小(未命中的key越少)

数据的平衡性保证

技术分享图片

绿色弧线的key值都被对应存储到node2,导致node2的数据管理严重倾斜(不平衡);
代码中(jedis)引入了虚拟节点的概念;


hash一致性

标签:对比   大学   对象   计算机   算法   虚拟   关系   技术   ping   

原文地址:https://www.cnblogs.com/nanlinghan/p/9939103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!