博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hash一致性
阅读量:5131 次
发布时间:2019-06-13

本文共 891 字,大约阅读时间需要 2 分钟。

HASH取余算法问题

节点数量越多时,迁移数据造成的未命中越高;

   

hash一致性

  • 介绍:

    数学模型,经过代码的应用转化成的一种常见常用的计算算法;

    数学模型,是基于散列算法完成(key不变,散列结果的整数不变);1997年美国麻省理工;大二学生研发的数学模型;

       

    散列算法,将任意的内存对象数据转化成整数;整数区间0-2^32次方(43亿,无符号的int);称这个区间为hash环;利用这个hash环,能够实现,数据的切分处理逻辑计算;

       

  • 基本原理

    key值和节点node的对应关系可以通过hash环计算获取

   

node节点信息,作为字符串数据,进行散列计算映射到环中的某个整数位置;

key值作为字符串数据,散列计算映射到环中某个位置;

key值的整数,顺时针寻找最近的节点整数,对应处理存储;

上图内容:

node1:key3,4,5,6

node2:key2

node3:key1

   

  • 扩容时

    能够解决扩容是,迁移量的问题?

    节点扩容时,数据被切分成若干个弧线整数对应关系;节点数量越多,弧线越小,需要迁移的数据量越少;

       

  • 数据平衡性

    直接对应真是节点整数,会非常有可能造成某个节点数据倾斜严重;

    hash一致性中,引入了虚拟节点,解决数据平衡性,每个真实节点有默认的若干个虚拟节点(jedis中虚拟节点个数160*weight权重值,权重默认是1)

   

真实节点信息

node1:10.9.39.13:6379

node2:10.9.39.13:6380

虚拟节点:

node1-1:10.9.39.13:6379#01

node1-2:10.9.39.13:6379#02

node1-3:10.9.39.13:6379#03

node2-1:

node2-2:

node2-3:

key值依然完成散列计算,实现对应环上某个整数,依然顺时针寻找最近节点整数,如果对应的真实节点整数,直接处理,如果对应到了虚拟节点,根据虚拟节点绑定的真实节点对应;

   

结论:虚拟节点越多,数据越均衡;

   

   

转载于:https://www.cnblogs.com/shuzhiwei/p/11204778.html

你可能感兴趣的文章
http和https的区别
查看>>
Hbuild在线云ios打包失败,提示BuildConfigure Failed 31013 App Store 图标 未找到 解决方法...
查看>>
找到树中指定id的所有父节点
查看>>
今天新开通了博客
查看>>
AS3优化性能笔记二
查看>>
ElasticSearch(站内搜索)
查看>>
4----COM:a Generative Model for group recommendation(组推荐的一种生成模型)
查看>>
UVA 11137 - Ingenuous Cubrency
查看>>
js阻止事件冒泡的两种方法
查看>>
Java异常抛出
查看>>
[SQL Server 系] T-SQL数据库的创建与修改
查看>>
74HC164应用
查看>>
变量声明和定义的关系
查看>>
Wpf 之Canvas介绍
查看>>
linux history
查看>>
jQuery on(),live(),trigger()
查看>>
Python2.7 urlparse
查看>>
sencha touch在华为emotion ui 2.0自带浏览器中圆角溢出的bug
查看>>
【架构】Linux的架构(architecture)
查看>>
ASM 图解
查看>>