00:00
接下来给同学们介绍一道经典面试题啊,经常大厂问red集群的时候,这个时候我在做面试题总结的时候。抽出来的被问的非常多,为什么专子集群的曹速是16384个,当然你可以说啊,杨哥,这还用你解啊这。这儿验试官要问我就告诉他我看过官网,我确实看过官网吗?人家规定的就是16384个,呃,回答这么正确。当然正确,我不能说你错,那接下来我们的问题就来了,为什么是这个呢?答案,首先我说的也不算,不好意思啊,我们来看看我们的答案,Rabbit集群,它是用的是哈西槽,前面讲过了。16384,那么对这个校验以后就这个,可是问题是CRC16这个方法是可以产生,它其实是可以有16位的,那么这就要听好了,如果是16位是65536。OK,如果是14位,那是16384,它为什么用二的十四次方,没有用二的十六次方呢?
01:02
OK,也就是说16个一更大,他只用了14个一,那么这个是为什么呢?好,那么大家可以看一下人家为什么没有用这个。这些不再啰嗦,直入主题,那么这儿你可以放心跟着杨哥学,我呢从来就很多同学呢,就是比较喜欢去买一些这个的书啊,当然可以参考,但是相信杨格莱的基本上都是来自大厂面试题官网以及作者的原话,那么大厂的话,他基本上啊,那些开发呢也是很厉害,基本上get哈的话呢,你也要去找一下作者的博客,作者的他的这个个人的get哈的账号,看看他对本人对这个问题的看法,那么问题编号2576来,人家问的为什么re呢?要用16384的,我们用CSC16的话是可以获得二的十六次方,可以干到65535,为什么呢?那么这个案底雷兹呢给大家呢做了个解释,好,那么同学们我们来说明一下第一个。
02:01
先读翻译啊,这个呢,呃,如果你英语好的,你自己理解,如果英语一般的,那么请看杨哥给你的翻译,第一个正常的信号报道,Package能够携带完整的配置,OK configuration of a note,那就是一台red主机的一个完整配置,那杨哥你要是自自己去看,你可能看的不够深,那什么叫正常数据包来发这个,因为呢,我们到后面高级篇呢,会跟大家说一下底层的源码,因为都清楚是用C语言写的,那么这个时候type DeFine这个叫什么?C语言里面的是不叫结构体,大家请看这是不是叫class message,其中有两个,这有一个最重要的MYS。Cso,除以八,这个是发送节点负责的槽信息,哎,也就是说他这一句话,其实而言,底层源码是这一段,好,那么我们可以用幂等的方式干嘛?我们可以用幂等的方式。With the old in order to update old conflict,我们可以呢更新旧的配置啊,那么这个就意味着它们包含原始节点的插槽位置啊,该节点使用多少2K的空间和16KB的插槽,但是会却使用到8KB的空间,OK,待会我们下面会说换算啊,同时由于其其他设定的初衷,集群不大可能扩张到1000个以上的主节点的官网呢,是非常反对的,那么在这我们也已经说过理由,有种东西叫信息失真,那么同学们啊,我们都清楚啊,如果说在这儿我们是不是说过这个薪火相传,一挂二没事,二挂三没事,三后面挂着一直到1000,那么这个信息的衰减,网络上传递的数据的耗时是不是越来越长啊,所以呢,安雷斯呢,是非常非常反对大规模的red集群,1000个差不多了,因此16K是处于正确的范围以内,也不用大,那么以确保每个统计有足够的插槽,最多可以容纳1000个矩阵。
03:54
数量足够少,可以轻松的将插槽配置作为原始的位图传播,注意小型集群当中位图将难以压缩,就是我们在发送这个时候,它会有一个什么东东,位图的压缩算法,如果你这个太大,它也压不动做,或者网络传递的包也比较大,会慢好,所以说这个是他的一个考虑,那么你说杨哥我靠,你就念了一遍,发现我听不懂,很新颖,你有什么样的困惑我都明白,三步二才是重点来,还是这段,首先安迪雷斯的意思是我们这个节点不会超过1000,那么首先如果长位是65536。
04:35
发送心跳包的信息头就达到8K,发送心跳包过于庞大,那么为什么可以得8K呢?如果你的槽位是65536,除以八,再除以10248KBOK,如果你是16384,只需要发送多少2KB?因为每一秒钟red节点需要发送一定数量PIN报作为心跳报,如果你这是65536,这个PIN的消息头太大了,8KB,那么浪费带宽,这个懂了吧,为什么除以八?第二步干嘛呢?Red集群的主节点数量不可能超过1000,集群的节点越多,心跳包的消息体内携带的数据就越多,如果节点过1000会导致网络拥堵,那么所以作者不建议。那么对于节点在1000个以内的red集群的话,干嘛?16384个槽位绝对够了,没有必要扩张到65536 OK,好,最后一个槽位越小,节点越少的情况下,它压缩配比比较高,那么这个时候压缩的越小,传输的时候就越快。那么这样是。
05:35
底层保证高可用的一个压缩算法的一个考虑,OK,好,所以这就是安提雷斯告诉你为什么我们选择一句话适用小巧精干最好,那么最终我们呢,16384,我只需要取这么一个对应的摊位即可。好,那么这个就是给大家介绍一下这道面试题为什么是16384个。
我来说两句