00:00
好,各位同学,那么上面我们已经明白了它的缺点就是什么。你呢是跟机器台数分母是三台就是三,四就是四,五就是五,那么这样是不是容易变动啊,容易变动那么就会导致故障,所以我们现在就要来一下第二种算法一致性哈希算法注意什么性一致上面是个什么,是不是不一致啊,因为你上面可能是分母是三台机器,四台机器,五台机器,六台机器,下面我就告诉你能不能把分母固定呢?好来吧。第一个,什么叫一致性哈希算法?它是什么呢?九七年是由麻省理工提出的,它的设计目标是为了解决分布式缓存、数据变动和映射的问题。OK,如果你的分母。是机器台速某个机器宕机了,你分母的数量改变了,我们自然你值不OKOK上面那么所以说这个时候我们呢,就想提出一致性哈希的解决方案。
01:01
我们的目的是当服务器的个数发生变动的时候,尽量的减少。影响客户端到服务器的映射关系,哎,就是你下面分母动和最好不要动,即便要动了,你也别影响我上面我的这个数据要重新起牌,那不可以,OK,可以这么说,有点类似于给一个奔跑中的汽车换轮胎,OK,好,那么它的步骤三步,第一个算法构建一致性哈希环第二个服务器IP节点映射,第三个K落到服务器的落建规则,OK,说白了就是一致性哈希环第二个节点映射,第三个落箭规则。弟兄们,这块是重点,请集中精神,打起精神听好来。什么叫一致性哈希环呢?现在看这么一个圈,然后咱们再说文字,这是不是绕了一圈,那这是零,这是多少?二的32次方减一啥情况?有没有点像我们的一个时钟,OK,好,那假设这是什么?零点或者12点对吧?然后一点,两点,三点,你就先记着这是个圆盘来吧,这么干的,现在呢,一致性哈希算法必然有个哈希函数,并按照算法产生哈希值,那么假设啊,我们这个在加法程序,我们说过最简单的每个对象是有东西叫哈希扣的,OK,那么这个算法有可能。
02:19
哈希值会构成一个什么东东?全量集,这个集合可以成为一个哈希空间,零到二的32次方减一,这是一个线性空间,但是在算法中我们通过适当的逻辑控制,将它什么都到,首尾相连,零就等于二的32次方,那么这样在逻辑上它就形成一个环形空间。好,这是算法的导论上面的一个对这个事情的一个解释啊,模批的同学请看杨哥给你一句话讲清楚。就说以前。你的这个分母啊,是什么机器真实台数,我不管你扩不扩容,假设现在好端端的是三台,那不好意思啊,如果有一天它宕机了,对吧,只有两台了,那么这个时候说是你的分母是机机器的真实台速,它容易数据重新洗牌啊,那么接下来我们用一致性,什么叫一致啊,就是我这个分母不变,那是干嘛呢?我们现在发现哈希算法它的值啊是零到多少?二的30 32次方减一明白,假如说啊,它的值二就像是一个刻度一样,以前呢,这个呢就叫零,那么二的32次方呢,就比如说65535对不对,好下面呢,不好意思啊,我们呢。
03:42
让你呢?分母就这个,永远落在这个全量的数据集上面,只不过现在把这个直线一卷卷成了个圈二。明白,相当于说这两这两边一合,拿起来这抓头去尾一折,让它折成一个圈,那么这个时候导致什么,就说你这个分母反正按照哈希算法就会落到这个环里面,那么这个时候我们在这儿是不是会有一个所有可能的哈希就会构成一个什么什么通道全量级,说人话就是你这个K1定会落到我这个圈圈,这那么这个时候变相的这个分母是不是给你固定了,那再大的丙是不是大不过烙它的锅,总之一句话,我的全量级就是个圈圈,那么所以说请同学们看。
04:31
它呢,也是按照取模这样的一种方法,前面的啊,上一个就是哈希取模的话,它是节点取模算法,对节点的什么服务器的数量进行取模,而一致性哈的算法是对什么二三十二次方取模,简单来说就是一致性哈希算法将整个哈希值的空间组成一个虚拟的圆环,那么假设某个哈希值,它呢只会在零到二的32次方,那么整个哈希值的环形就如这那么整个空间按顺时针走一圈,那么零和二的三式二次方是不是就汇合,那么0123456789是我管你你的哈希值,你这个槽位映射射到多少,也就是说这个时候我们是不是永远会映射到零到二的32次方,次零点中方向重合,换句话说,我们把这个由二的30万次的节点圆环就称为一个什么动呢?哈西环。
05:19
OK,好了,这是我们的第一步,算法构建出一致性。哈希环一句话,现在。就这个圈,这是我的全值,问题是你落到哪呢?怎么落呢?那么这个就有我们后面的节点映射和落建规则。
我来说两句