00:00
好,那接下来我们看一下这个卡夫卡的一个生产者,因为刚才我们聊的主要是他这个存储这块内容,对吧?啊存储也就是把中间的那一块存储这块的搞定了,主要的两个东西,一个index,一个点log啊,这两个文件大家要知道一下它这两个文件分别是干什么事情的就OK了,具体的原理呢,现在问的比较少啊,刚才也说了,现在问的比较少,你要想了解的话,你可以去了解一下,不想了解的话,你就知道刚才所说的那个点。他通过二分查找法找到这个是哪个index,然后从index里边找到你要访问的那张消息的那条数据,然后根据这条数据的内容去log里边把这个数据给它定位出来。啊,就做在这个事,然后呢,你回去看一下那个C的方法,你们之前IDFS啊,它可以直接定位到数据的位置啊,可以直接定位到数据位置啊,这个比较方便一点,好,那接下来是我们所说的这个生产者分为三块,我们就看前面啊生产者,当然我们所说的生产者里边是不是有一个分区策略问题啊。
01:01
还有印象吗?当时我们带着大家回顾那个整个架构的时候,提出来了,它里边这个东西到底是。你有多个分区,我生产的,我在生产,生产的时候我到底发往哪个分区的问题,对吧?啊到底发往哪个分区的问题,OK,那第一个分区策略分区的原因,我们已经聊了很多次了。两大好处吧,第一个就是说方便集成当中扩展,也就提高它的一个什么。负载能力啊,负载能力第二个呢,提高。并发读写吧,啊,可以以partition为单位进行读写啊,可以以part为单位进行一个读写,这个意思啊好,这个呢是我们分析原因,那接下来我们看一下生产者这边的一个分区原则,这个呢是我们从那个代码里边截的一张图,下午呢,我们就会写这个代码啊,写这个代码来看一下它里边的一个API调用的方法啊,调用的方法这里边呢,是生产者producer调用一个send的方法,里边传的一个参数。
02:02
叫producer record record什么意思?记录记录一行对吧,啊行记录刚才这个意思,那你看一下它调用的方法,首先前面这个内容。大家都一样,而且呢,它不能为空。对吧,它是一个什么。他就是我们所写的生产者那个窗口测试一样的,你是不是一定要连一个什么。逃吧啊,你要告诉我你这条消息发到哪个逃好,那接下来我们从下或者从上往下看吧。主题这个东西我们就不聊了,因为大家都要啊,大家都要好,接下来第二个参数,你看它是什么。分区,分区是in的类型的,是分区号。也就是说通过前四个。重载的方法所调用的。是由你生产的时候,你指定分区的,我可以写零写一,那你写零这条消息进到零号分区,你写一进到一号分区,能懂这意思。
03:09
就是说你可以在生产数据的时候来写明它具体的分区号。啊,你可以指定一下这个东西,将来我想让他进到美国分区可以啊,前四个都是这个内容,那后面呢,还有一些什么时间戳,要不要自己传不传的话,他可以默认值啊,类似于这种内容。好,接下来还有什么图信息对吧?啊,可以为空等等内容,那接下来看第五个重载的方法。他有什么东西啊,他没有指定分区,但是它有KV。对吧,他一个消息呢,也是KV形式的。也是KV形式的,那如果说你写的是这个内容,它是按照K的哈希值来。他按照K的哈希值,然后再模拟你当前这个主题的什么分区的个数。
04:05
模拟得到不是012吗?不是你的分区号吗?是这样来的,跟我们MR当中那个哈希分区的那个规则是一样的。你MR当中哈希分区的规则是不是按照K的哈希值reduce的个数?对吧,默认的不是这样吗?啊,它这里呢,就不是模拟什么的个数,而是模拟。当前这个主题的什么分区数啊,能理解这个事,好最后一个你既没有指定要发到哪个分区对吧,没有指定这个内容,也没有指定K,也就是K是一个空的。那么不能按照K的含义值,因为那有什么含义值吗?没有啊,没有一值,OK,注意啊,我说的闹没有一值,不是说闹这个字符串啊。是那。空对吧,这两个东西不一样啊。对吧,这是指的是nu的一个什么字符传字符传里边四个字母nu这个是指代表这个对象是空的,对吧?啊对,是空的是这意思啊好,那如果两个都没有指定的时候,简单轮询。
05:12
一人一条,但是第一条给谁?这就不清楚了,随机分配一个能听懂啊,他随机生成一个数字,然后拿这个数字模拟一个分级数,第一条给谁,然后接下来假如零二或者说021这种给啊,就是按照一定的一个顺序来轮询的给啊,假如说他第一次轮行的给他一个二啊,接下来给了一个一,给了一个零,他就按照什么。一直按照这个顺序来了,能听懂啊,一直按照这个顺序轮询的一个方式啊,到时候呢,我们能看到啊,我们能看到,因为我们也去消费多个分区里边的一个。数据啊,就是说你既没有指定分区,也没有指定P的时候,按照轮询啊,所以呢,它里边有三个规则,第一个。你可以指定分区。啊,在生产者代码里边指定分区,那就很简单,直接发到指定分区。
06:04
直接发到指定分区,那第二个没有指定分区,但是指定了什么。K啊,你有K值,那这个东西呢,就按照K的哈希值进行。模拟分区数的值。啊,如果说前两个你都没有指定,那我就只能按照什么轮red Robin,而且这个告诉你啊,第一次调用的时候。随机生成一个转账,也就是说第一次发送数据,我也不知道他到底进到零号,他不一定是012这个顺序,那听懂对吧,第一次我也不知道进到哪个分区啊,进到哪个分区里边之后,如果第一次就021或者012这个顺序确定了,后面都一样了啊,这后面顺序就确定了,但第一次都不知道它随机生成一个整数啊,然后按照这个整数来的,这意思啊,这是我们所说的它里面那个什么。生产者这边的一个分区策略啊,生产者的分区策略,那我们把它。
我来说两句