温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
好,那么各位同学我们继续,下面终于轮到了我们的哈希槽分区,那么想想啊,怎么倒它的一致性哈希算法这个圈圈挺好的,二的32次方,那它缺点主要就是什么?节点比较少的时候,一致性哈希算法的数据倾斜问题,那么自然而然哈西草来给你解决来,首先它是什么?OK,这个呢,走一它为什么会出现啊,这样的话呢,这样我给它粘粘一下啊。一致性哈希算法它有数据倾斜问题,哈西草种算法实际上就是一个数组二的十四次方,那么形成了我们的哈希槽的空间,二的十四次方刚好就是16384,明白那么好,那么各位亲,那么大家请看啊,二的十四次方是不是16384没问题吧,好。那么接下来它能干什么呢?啊,它能够均匀的分配解决。公平的问题,它在数据和节点之间。
01:03
加了一层,我们把这层就称为哈希槽,用于管理数据和节点之间,尤其是落键的这个问题,那么现在就相当于节点上放的是草里面,草里面放的是数据,就说我现在呢,我不管red了,我现在先去找槽,哎,你就当这个数据就是外卖小哥张三同学你好,你住A小区哪栋楼啊,那么三号楼OK,我呢调到这。找我们的第三台主机,因为这个时候呢,大家应该听说过一句话,没有什么是加一层解决不了的,就说你来找他的时候,问题很难解决,干脆。董事长,前面就安排一个部门秘书,我来给你接这个活,最后我来分轻重缓急。给领导提交报告对应数据,那么草它解决的是什么力的问题?相当于把力度变大,那么这样便于数据的移动。哈希解决的是什么问题?映射问题,OK,使用K的哈希值来计算所在的槽,便于数据的分配三。
02:09
有多少个哈希槽呢?那么一个集群只能有16384来兄弟们。OK,好,那么编号是零到16383,那么这些槽会分配给集群中的所有主节点。那么假设刚才按照之前我们给大家介绍过的三个ready是不是分成三段,平均大概5400多个,那么集群它会记录节点和槽点的对应关系,解决了节点和槽的这个关系以后,那么接下来就要对K来求哈希值,然后对16384。取模余速就是是集就落印到对应的槽里面,那么这个算法官网上待会我们会详细说,以槽为单位来移动数据,那么一句话,假设零到5461号,那就在一号楼,那么这个时候这个槽上的门牌号是多少,我就找谁,那么槽的数目是固定的,你随便变,你下面我就把你屏蔽了,前面说过没有什么是加一层解决不了的,就是好,你找我就行了,我们做个映射,你下面随便变,反正一句话我这可以找到你,那么处理起来就比较容易,这样数据移动的问题就可以给大家呢解决好,那么哈希头的计算这呢蝼。
03:19
Red集群中1634啊,那么它会根据节点的数量大致均等的将哈希槽映射到不同的节点,这张图我相信大家没问题吧,总量16384好,当需要在集群中放置一个KVE的时候,Red先对key使用CRC16算法算出一个结果,然后用结果对16384,这是刚才那个公式啊,那么不多废话,那同学们可以看这个呢,呃,后面我们会说啊这个呃,引入到那个red跟Java整合,因为现在我们还没讲到,那所以说呢,在这块我就告诉你引入这个包。Sort哈西槽get sort假设这个K是A,他就告诉你6373,那么弟兄们请告诉我6373的意思是不是哥哥我这个K就放到我们的第二个ready实例上面,那么你取的时候怎么着也是不是也可以从6373这个槽位对应的槽位范围获得我们对应的key和value啊OK,好,那么这个就是我们的哈希槽分区,那么接下来这个就是一道重量级的经典面试,绝对高频。
我来说两句