温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
各位同学大家好,我们继续,那么对于刚才我们所说啊,现在已经明白了。假设三台或者更多台单机实力报成团形成的集群,那么我们写入的数据到底落在哪一台机器上面,这个呢是有讲究的对吧?那么这个算法也就是我们的slot槽位映射落坑的这个算法,那么是怎么怎么来的呢?那么一般业界有三种解决方法,那么对应着分别就是我们的小场,中场和大场。当然啊,强烈推荐大家直接上哈西槽分区,理由,诶,好去直接用哈西草跟我们这套一块走,好我们来唠唠首先啊。哈希槽取余分区,这个是最简单的好啥意思呢?来同学们假如说啊,注意啊,我这就是个哈希啊,你就把它当做一个T,然后一个哈希,我这可没有写CRC16,什么MODE16384啊,假如说我们自己嗨的时候,我们做一个干嘛,最简单的OK,那比如说啊,现在我们呢,三台ready,我们在互联网的话呢,做那种分布式存储,假设两一条记录。
01:12
OK,我们单机是不可能存2亿条的,那必须啊,分布式啊,大家匀远,那么假设每个机器7000万,那么假设有三台机器构成一个集群,那么每次读写操作的都是根据公式,是不是就是我们这哈希,OK。取一个N个机器台数,计算出哈希值,用告诉他你这个K通过我们这个最简单的落到哪个机器上,对吧?哈希取嘛,最经典的好,那么它的优点。简单粗暴,直接有效对不对?那么你这个T哈希了以后,取到一个值012 012,有点像我们spring cloud里面讲过的负载均衡,那么你只需要规划好节点,比如三台,八台还是十台,就能保证一段时间内的数据支撑了啊,因为这是小厂用的最简单的哈希,取这样的一种分区,那么使用哈希算法上固定的一部分请求落在同一台机器上,那么这样每台服务器固定处理一部分请求,那么起到了负载均衡和分而治之的这么一个作用,那么下面我们的问题是。
02:17
他。简单,那么缺点是什么呢?同学们请思考一下,同学们请露眼,现在我们这个是一个非常简单的能。处理问题,因为原来规划好是几台,分母写死了,你只有三台,那么你进行扩容或者缩容就比较麻烦喽,不管是扩容和缩容,每次数据变动就会导致节点有变化,意思就是说,比如说啊,我们还是第一次用SK1为一,通过这个算法我应该落在零号基啊,但是现在呢,分母。变成四了,好,我可能又多了一台机器,那么这个时候我再用这个算法算的K1。
03:01
位一想去改,那么这个时候对不起,你不管是读和写的话,就可能没有再落在原来的机器上面,那这个数据是不是就乱了,也就是说这个映射关系需要重新进行计算,那么在服务器个数固定不变的时候,假如说你说杨哥,我们公司呢,百分之百三台够了啊,1万年不会扩容啊,那我闭嘴,你用这个就够了,但是如果需要弹性扩容或者故障停机,那么假设你不扩容好这台机器。电线被老鼠给咬了,那么实际只有两台,你明面上写着是三,但是实际的分母只有二,那么这个时候干嘛?原来的取模公式就会发生变化,比如说从三变成这个问号具体是多少?那么此时地址经过取域运算的结果将发生很大的变化,OK,路径依赖就没有了,那么根据公式获取服务器,你将变得什么不可控,某个red宕机了,由于台数量变化会导致哈希奇的全部数据重新洗牌,数据混乱,等着你OK,那么这个时候是绝对要小心的,所以我们呢可以用,但是这种方法俗称哈希取分区的这个方法稍微有很大的缺点。
我来说两句