00:00
呃,那么刚才呢,咱给大家介绍关于我们现在呢,它的一个精准一致性啊,精准一致性就是我们现在呢,这个基准一致性目前指的是谁啊,就是我们从生产者到我们的卡法这一块啊,卡法接收消息的时候,他的一个精准一次性的保证,并不是精准一次消费啊,就是精准一次消费和咱们现在这块其实说的不是一回事啊,说的不是一回事是吧?然后接下来呢,那么这里啊,有一个所我现在呢,生产者发送的消息给我们这个卡不卡,那么卡不卡呢,它又有我们一个一个的分区,对一个的分区,那么每一个分区呢,它都有对应的我们这个副本啊,对应对应的副本,对吧?哎,比如说我把这个消息呢,发送给咱们现在这个分区对吧,那么他和谁打交道,是不是和我们当前这个分区里的leader来打交道呀,然后leader呢,是不是和我们现在它的一个further来进行一个消息的一个同步,对吧,那么在同步的过程中对吧,那么它是。
01:00
怎么样保证,诶我现在这些我们这个further能够正常的,对吧,然后把我的数据给拿过去,如果出问题的话,那么这个怎么样保证我们现在这个数据,它的一个质量,这些东西怎么样去保证。一说到数据质量,昨天想起一个学生出去对吧,面试的时候说你们现在呢,在做离线入仓的时候,对吧?是不是要这个,呃,这叫什么,就跨不同的维度啊对吧?比如说我从ods到咱们DW相关的层,对吧?那么这个时候对吧?那么你们在跨围的时候怎么去保证数据的质量?水的质量怎么保证?嗯。数据的质量啥意思是吧,其实这个数据质量就是说你这个数据怎么样,原来是这样的,后来你到这块这个数据都变了,对吧,或者说我现在数据丢了对吧?就是我现在拿过来可以用啊,这就是我数的质量对吧?那一般这会儿在保证的时候,其实这没有一个明确的答案,对吧?如果说我现在要说的话,其实你想保证的话,首先第一个做一些规范,做一些规定,比如说我现在呢,从我们这个啊买点拿到一些数据,数据的格式呢,是时间戳对吧,时间戳是个毫秒,但是后来我在统计分析的时候呢,他想要对吧,这个杠的形式对吧,2020杠幺零杠123,他要这种形式,那我在处理的时候,那你想一想,你要保证你的数据质量,你是不是在这里?
02:30
你直接处理的时候,你这个日期的格式,你就给我整成这样的呀,你别到时候你现在我是分析的时候202,你把时间数打过来了,我给你转换成2020,然后直接1023了,你到时候你是不是还得对他做处理啊,就说提前呢,你可以做一约定对吧,这里一个做一些规范,然后第二个呢,我其实啊,有些时候我在采集数据的时候,这个数据呢,可能并不是说像我直接从卡卡拿到,可能呢,他在获取数据的时候呢,它会经过很多步骤啊,第一个我先从哪拿,第二个我再从什么节点拿,第三个从什么节点拿,对吧,那么你可以对什么呢?在获取数据的时候,你对你的每个节点呢,做一个监控,对吧,比如说我现在可能从我们这个对这个MYSQL里面拿,我可能呢,从那ADMS拿,我可能从那卡不卡拿对吧,那每一个那你都应该做监控,对吧,然后呢,这个监控其实我们现在有专门这样的平台,对吧,哪一块有问题了,那么他们有预警机制,对吧,这样就行,对吧,一般这个东西没有说明确答案,你必须这么回答对吧。
03:31
然后接下来,那么咱们现在呢,来往下对来往下,那么这里有一个什么呢?就是故障处理的一个细节,这块其实说的是什么呢?说的是我们呀,这个文件对吧,这个数据啊发送到我们现在这个卡不卡之后,对吧,然后卡不卡的它怎么来处理,呃,那么这里呢,其实有两个也算比较重要的概念了,一个叫做HW,一个叫做Leo,对吧,那么这两个对,因为aw是不是叫什么高水位呀,对,然后这ruo是不是我们现在这个叫全称叫什么?对,就是我们当前的这个对,这个分区对吧,它里边的最后的一个我数据的偏移量啊,智慧数据的偏移量对吧?那么这块咱们现在主要有什么意思呢?对吧,就是我现在这里,我现在啊,这两个主要用来干什么的呢?对吧,就是我们在把这数据啊,发送到我们现在这个开发之后,对吧,那么如果说他是什么他。
04:31
这是我们的leader,然后呢,这块啊,是你现在给我发送过来的数据,比如说你看原来的都是12,结果呢,我现在又发送了这些数据,从13到咱们19啊,从13~19,那么假如说我现在呢,在同步的过程中,其中啊,那某一个foer它发生故障了。那某一方式发生故障,比如说咱们正在同步呢,这个方式它发生故障,那么如果发生故障的话,那么首先第一件事,那么这个方式呢,它会被踢出我们这个isr啊踢出SR意味着什么?意味着呀,就是说以后对在咱们这个leader故障的时候,也不会选你了,对吧?然后呢,我们投票的时候也不会等你这一票了,对吧?诶他会先把咱们这个for从我们S给他踢出来,然后接下来,那假如说诶我发现我这个for发生故障了,马上呢,我就把这故障呢给恢复了,那么故障恢复之后啊,那么这个时候,那我得知道我当前对吧,那我现在我要是干什么,我还是follow呢,那我是不是还要从我们的leader去来同步数据呀,对吧?哎,那我现在呢,会读取本地磁盘上上次记录的我们这个什么呀,Aw对吧,然后接下来让大家想一想,在咱们这里边对吧,那我肯定什么把我现在呢这aw读出来,然后发现啊,我上次对吧,那么。
05:51
在咱们这里我再去操作的时候,我们这水位到到哪了,到12了,到到12这个高水位是什么?是不是当前咱们现在这个Z方中,它最短的这个是不是咱们高深位啊对,就相当于我们现在这一个桶短,但是桶它其实能装多少,是不是取决你最短的这块板啊对吧?哎,那么咱现在呢,这个其实我们高水位对吧?那么它干什么呢?当你恢复之后,它就会把咱们这块呢给它揭掉,然后接下来从哪从咱们高水位这开始,然后呢,往我们现在啊这个给它同步对吧?从我们这高水位置开始,然后呢,向我们的leader对吧来开始进行同步,对吧,那我们现在呢,什么时候完事呢?对吧,所有的就是我们现在ER把这个leader所有数据都给他同步过来之后,那么这个时候呢,这个ER才会重新的去加入我们现在它的一个isr中,对吧,这是我们的一个further故障啊,这台photo故障,那么如果说我现在later发生故障的话。
06:51
那么这个时候呢,大家注意,首先呢,那么它会从我们的isr里边来选一个我们leader啊,比如说在咱们这里,我现在这个leader这个挂了,那么如果leader挂的话,那么他呢,会从我们现在这个IR里边,对吧?来选一个新的leader对吧?选一个新的leader,那么如果选新的leader之后呢,那么为了保证咱们登录副本之间呢,它的一个数据一次性对吧?那么其余的我们这个follower会先将各自的我们这个log文件高于我们这个aw部分给它截掉,然后从哪呢?从新的leader来同步数据,什么意思?假如说同学们他挂了是吧,他挂了,他挂了之后呢,那我现在是不是从他里边选一个新的leader啊,不小心他被选中了。
07:37
对吧,他们选中了,那你想想他被选中的话,然后咱们意味着什么,意味着是不是他从这里同步数据啊,明显它比它多呀,对不对,那你如果从这同步数据是不不太合理啊,怎么办呢?对吧,先把自己对高于我们现在高水位的这个数据给干掉,然后进下来再干什么,对吧?再来同步数据对吧,再来同步数据对吧?这是什么呢?这个是关于我们现在啊,就是我们这个高水位,还有我们这个Luo,对吧?它这个作用希望什么呢?希望大家能够把给你描述出来,说我现在有一些呃,再去做一些我们这个leader和follow同步的时候,如果follow挂掉,那么咱们这个数据它是怎么处理的,对吧,你要能给描述我现在啊,如果follow挂掉了,那么咱们对这个aw和luu他俩会怎么样,如果leader挂掉了,那么这个时候呢会怎么样,对吧。
08:33
你要能描述清楚啊,你要能描述清楚好了,这是关于什么呢?关于我们现在关于故障处理这一块,然后接下来再往下呢,就是我们现在这个消费者这块了,那么消费者这块像消费方式,咱们刚才说了采用拉的方式,从我们brokeer来拉取数据,然后接下来呢,那么分区分配策略呢,那两种对这两种其实一个是我们这个轮询,那么另外一个呢,是range对吧,那如果轮询的话,就是我现在这个分区对吧,有这么三个消费者,他每人对来来一个一个对吧,什么意思对吧?看在这里第一个对吧,给第一个消费者,第二个对第二个消费者,第三个第三个消费者再来对吧,他那个第一个消费者再来第二消费者,对吧,就轮询比较和谐对吧,然后还有一种方式呢,叫什么叫range,这个range的就是说我现在一共有多少个分区,然后呢,这个消费者每人呢,处理我们现在哪几个分区的数据,比如说零号这个消费者,他处理的呢是这三个。
09:33
一号消费者呢,处理这两个,然后呢,咱们二号消费者处理这两个对吧,这个呢是我们这个range对吧,知道咱现在这一个策略,其实这块呢,大家知道这个理论描述来对吧,就是在咱们这个写代码的时候呀,或者说我们在操作的时候对我没有什么影响啊,这个其实我们看不到,说说老师这个东西怎么怎么样,其实这个东西对咱没有影响是吧。然后接下来啊,那么这里呢,还有一个就是我们的一个outside,对吧,它的一个偏量的维护,那偏量维护呢,那么大家知道这个就可以了,在我0.9之前在咱们这个主keepper里边维护的,然后从0.9之后呢,它放在我们这个主题中,对吧,叫consumer outside放在咱们这里边来对他进行维护,对吧?然后接下来这块呢,在面试的时候比较容易问卡夫卡,它之所以能够高效读写数据,主要原因在哪?
10:25
就你们能够想到一个吗?一个就行啊,数据顺序引入,然后还有什么零拷贝对吧,很多超出我的预期的是吧,能说出两来你们对吧,很厉害是不是对吧?注意啊,咱现在呢,在这里第一个什么呀,顺序解磁盘对吧,顺序磁盘其实呢,那我在这个我也看到一些文章说,其实呢,说之所以高效写入的话,如果让他们排序,其实领跑贝呢,那应该是做的第一个对吧,其实和我们的顺序写字盘呢,好像其实这个并不是特别大对吧,这样的一个关系,也就是我现在这里他虽然说的啊,说我顺序写怎么怎样对吧,随机写怎么怎样对吧,但是这个呢,其实对吧并没有特别大关系,其实主要是什么样零拷贝的基术对吧,那么领拷贝是怎么回事呢?对吧,那么领拷贝,那其实就是我现在这样说,当我现在啊,要去把一个数据打过来,然后我发送给咱们这网络端口的话,那么这个时候如果要没有使用零拷贝的话,首先是得从文件里读数据,然后进下来,这个是不是应该是到我这个操作系统它的一个我们的配缓存里边去啊。
11:25
啊,然后接下来再到他用户的缓存空间里面去,然后进下来再到我们操作系统这一个搜的网络的缓存空间里去,然后进下来再去发送,对吧?那如果使用零拷位的技术的话,那么像这块对吧,这块是没有了,是不是直接从我这个配开始来获取数据了呀,对吧,就相当于数据是要拷贝的几份嘛,对吧,这块呢,是关于我们现在这一个零拷贝,对,记住那么除了我们这个顺序读写,还有我们这个对吧,这个领拷贝之外,还有一个什么呢?因为我们这个它catch对吧,就相当于它有缓存了,对,他在写的时候呢,那么有缓存对吧?诶主要是这几个,对主要这几个,然后接下来就keepper在咱卡卡里面的作用,对吧,那么什么呢?首先对吧,他把咱们其中的一个brokeer,对,其实他们维护我们当前我们这个对吧,这个信息的大家可以看一看啊呃,来到他走keep里边c model,然后接下来走keeper,然后接下来B下面应该有一个CKCLA吧,加SH,然后接下来LS谁呢卡卡这个下边。
12:25
对吧,那么它有什么呢?他有我们的brokes对吧?然后进来在咱S这个ids对吧?那么它会把咱当前呢这个节点都给维护进来,当前我现在这卡卡集群里面都有哪些节点,它可以维护对吧?它可以维护对吧?然后接下来我现在这里边呢,都有哪些我们的topic对吧?这里呢,它也可以给维护进来,对吧?那么其实除了这个之外呢,那么咱们呀,对吧,他会管理我们的broke节点上线对吧?有的时候大家啊,注意你们可能会碰到一个问题,就是什么呢?就是我现在这次再去关咱们的卡不卡的时候是吧,然后卡卡没关完,然后走keep本我先结束了,等你下次呢,你再启动的时候,那始终呢,咱们这个卡发启不起来,他说诶什么已经启动,已经启动了,那么有可能什么呀,有可能就是你当前在咱们这个啊,我们这个ID的下面,在这里边呢,有些节点还有对吧,这个东西按理来说我关掉的话,它这个节点就应该退出的啊,这点该退出的对吧?呃,然后接下来除了管理我之外呢,那还。
13:25
还有我们所有的topic的分区,然后副本以及leader的选举工作,对吧?那么这个呢,其实都是在我们这个啊keep这块来完成的,对吧?这是关于我们现在啊这个卡不卡带着大家呢,把这个东西大概走一遍,对吧?那么大家呢,如果下去的时间来得及的话,其实呢,你今天是吧,可以把卡管大概溜一遍。对吧,这个一个是把这个讲义看一下,那么另外一个呢,结合着你们这个面试宝典,对吧,之前你把钱收上来了是不是对吧,我看着收钱了是不是对,然后接下来那你们可以看一看对吧,你们可以看一看对吧,然后呢,关于我们的卡,卡一些把面题大概走一遍对吧,那行了,关于我们这个卡不卡,它的一个回顾的大就这一块,大概就到这块啊。
我来说两句