00:00
好,还是这个到这块找这个分区的一个领导,那你想想看,找分区领导你必须要东西,你想想看最基本的一个参数是什么东西呢。首先你要起码连到卡不卡集群嘛,对吧,因为你肯定是要拿什么,每一个分区的原数据信息,那你要卡卡集群要有,那这个地方是不是要放一个什么list。String,然后把这个什么b box要有吧,啊,这是卡布卡集群,第二个你要找的这个leader,它是属于某一个topic,某一个分区底下的leader,对吧,所以说你像分区还有什么。还有topic是不是要传进来呀,对吧,还有什么呢?你这个地方只有的是主机名,是不是端口号。要传进来啊,因为你要知道端口号,其实你端口号我写在外面,你自己在里面写死9092也无所谓吧,因为它是固定的对吧?OK,然后我们分析的还有一个什么topic。
01:06
你找的一个分区的leader,那肯定是属于某一个topic里边的,然后接下来就是具体的你要找哪个几号分区吧。哎,解号分区的一个领导,所以说这是最基本的一个参数,如果我们在写代码过程当中,再遇到什么其他的参数,我们再回来添加吧,哎,就目前为止我们能考虑到的啊,这些东西你必须要给我有啊,必须要给我有啊,那这一块呢,需要告诉大家的是它需要一个什么。需要一个simple啊,Simple consumer,所以说这个地方我们得用一个。Symbol symbol啊symbol symbol我们用的这里边呢,都是。你看这块一个中间多了一个什么。Java API吧,哎,我们用的都是Java API,但是它其实虽然说是Java API,但是它其实是一个。是一个scale的一个代码,来看一下。
02:04
他虽然是他要host,首先进来看一下吧,呃,它是一个。LA一个代码。就类似于这样的,这是一个类,这类,这类后面还有一个括号这个。类后面一个括号,之前大家见到的类后面有可能有泛洗,但是不可能见到有这种括号的这种东西吧,哎,这个是scale代码,这个是它的一个构造方法。它的一个构造器就主构造器,主构造器呢,就写在跟在类后面啊,这是skyla写法,稍微看一下,稍微看一下OK,然后它它SKY里边呢,就没有类型了。它自动推断的所有的无论是int string啊,还是什么类型,全是VL。或者还有一个VR就是可变不可跟不可变啊,这两个区别啊,可变不可变的问题啊,那这块也不能就就看不了太多东西了,对吧,OK,那我们看一下它的参数就OK了,CTRLB对吧,首先它要一个host。
03:03
要一个host就是一个stream,那我们可以怎么做呢?Brooks点。For循环,这样是不是一个一个的什么。Host,哎,把这个波传进去,传进去那第二个参数。然后一个port,哎,有一个端口号,那我们有,然后一个时间延时,随便来一个好,然后还有一个BSBS。班的付给他的一个照还要什么?什么叫clean ID?就是说你得给他付一个ID,那这个我们就叫get leader。就是随便取个名字,就取个名字而已啊,取个名字,然后返回一下那个get啊get leader这个是。创建。获取这个leader应该叫获取分区。
04:02
Leader的。呃,消费者对象。消费者对象啊,这个代码就是偏底层的一个代码了啊,因为他直接这个类都是用SKY拉写的,对吧?啊,我们之前调的那个方法,他全部用Java进行的一个封装吧,啊就是偏底层的一个代码,因为你是要写低级API啊,其实那个高级API里边它也是这么做的,每一个不同的分区去获取数据啊,连到不同的分区去找领导啊等等他的过程都是有的啊现在只不过呢,我们现在要自己写啊,自己写OK,那接下来看一下啊。呃,我们要拿着这个消费者去获取什么,获取一个值对吧点。啊呃,来看一下,或者说这样。进来。来,呃,这个是整个的一个它的一个结构吧,这个类的一个结构,嗯,来看一看它里边的一个方法。看一下方法,OK,第一个fetch,第二个也是fech吧,只不过说是API和Java API的一个区别,对吧,它里面传的东西是不一样的,OK fetch什么意思啊?
05:09
抓取哎,它是抓取的意思,那这个这两个方法呀,是实际想想看他应该干什么事的。他这个是实际获取数据的方法。获取数据的方法,去抓取数据的OK,再下来我们看第三个send。Send,它里边参数要一个什么。Topic data request就是关于这个topic的什么原数据的一个请求,让它返回值呢?就是原数据的一个返回值吧,返回值OK,那这个你想想看是不是我们要的呀。我们是不是要拿这个什么主题的原数据信息啊,我们要找领导嘛,对吧,找那个leader是谁,然后还有什么副本等等这些情况,那所以说这个是我们核心药的方法,核心药的方法啊,然后它还有什么commit of set啊,Close啊等等set of set啊,就抓取of set,对吧,就上一次消费到哪了,然后说提交off,那都是这种一个一个方法来管理的吧,你如果用低级API来操作的话,你是不是调注这些方法呀。
06:23
哎,相应的调用这些方法,OK,那那看了之后我们就知道了,有两个核心的方法,一个是fetch,一个是send fetch,等会我们肯定也要用吧。还是同样的,我们用低级API去抓取嘛,连到leader之后获取数据是不是用fetch啊,对吧?哎,这个里边我们要用fetch,那当前这个地方我们用什么。Send对吧,Send发送一个请求,然后拿一下什么。它的一个原数据的一个response,你看它那个返回值。对吧,返回值拿一下它的一个response OK,它里边要一个什么。Request对吧,那我们先来。
07:05
创建一个什么。叫主题原数据。信息请求。啊,请求,然后由这个consumer来把这个请求发送过去,获得返回值,OK,那我们又一个。啊,就是像这种东西一般呢,我们都想到的是用一个吧,用一个什么那个叫。哎,把那个是。没达得到request,注意你要用那个Java API相等啊,Java API相等走。他李白要什么?最简单的这个。要一个topic的对象吧,就是它的一个list集合,也就是说这个地方啊,你通过这个simple consumer是不是可以一次性。获取到多个topic的原数据啊,那也就是说那之前我们想一下我们那个高级API。
08:07
高级API里面我们是不是可以传多个topic进去啊,那你想想看,多个topic又对应着多个leader,对对应的多个part,对吧?它有很多的一个leader,是不是你一次性发送一个请求,就要将这些什么的一个原数据信息全部拿到,然后再去找什么?找他的一个leader是谁啊啊,也就是说这个地方它可以传多个,传多个,那我们当前只有一个对不对啊啊,我们叫connection.s to list吧,啊,这个地方我们把那个topic,哎,给它扔进去,得到它的一个request啊拿着这个请求。哎,Send send之后呢,拿到我们的一个Meta data,一个response吧,那接下来我们是不是解析这个东西啊。我们需要看这个里边有什么东西了吧,哎,看这个里边有什么东西,OK,那这个这一步叫。
09:01
嗯,获取。主题。原数据。往回值往位置好,然后接下来其实就是解析那个什么。原数据返回值了吧,啊叫解析这个了,来我们解析同样的,我们看一看这个方法,就这个对象啊,它有什么方法对不对啊点。还有什么?Equals什么扣的,我们核心的,你看一下是不是应该掉这个缝。Topic的me data,因为这是一个respond,对吧,它不是关于具体的topic的一个什么。具体的元数据信息,所以我们用这个方法来注意看一下它的一个返回值。想一下为什么是一个集合呢,这个地方。是因为刚才提到过这个地方去发送一个请求的时候,这个请求里面是不是可以带着多个topic呀,对吧?哎,所以它这个返回指的是一个list,是一个集合,当然目前你如果用迭代器对它进行操作的时候,是不是只会迭代一次,因为我们只传了一个topic格,哎,只传了一个,OK,那我们就调用那个to比格斯雷达贝塔。
10:25
那就拿到了这个什么topic的一个没达data,接下来是不是要对这个进行便利,对吧,哎,便利。便利。主题原数据啊,变类主题原数据,OK topic make data.for循环。嗯。这个叫to,这个叫to s做一个区分,那当前这个东西是什么?
11:00
就是我们找到了一个一个的主题的什么真正原数据信息了吧,哎,真正的原数据信息了,你看经过了这么多步骤,哎,才才拿到我们想要的这个主题的一个元数据信息,元数据信息OK,那接下来我们看这个里边有什么方法吗?拿这个点。还有什么?它又有一个partitions的返回值呢,又是一个list。那为什么又是一个list?因为当前这个topic里边有什么。是不是会有多个分区啊?对吧,会有多个分区啊,是这样的,好,那整个的过程来看呢,它先发送了一个请求,这个请求里边是不是可以携带啊123。多个什么topic吧,啊,多个topic,那我们请求返回值其实是一个response对吧,我们得调用什么topic me data这个方法来将这个里边来具体的获取到它当前这个topic的一个原数据信息,啊,当我们真正想解析这个什么。
12:18
当前这个topic的原数据信息的时候,我们会发现诶。它里面其实又分成了一二,应该是012了啊,它分区是012开始的,从零开始的,对吧,哎,012又有三个。分区啊,假如说三个分区对吧,就有多个分区,多个分区OK。好,那这个地方我们先把一个分区原数据拿到吧,哎,分区的一个帕提斯me塔贝塔这个地方是获取。多个分区的元数据信息啊,获取多个语言数据信息,OK,接下来你是不是又要便利什么?
13:03
哪个分区吧,哎,便利分区OK。电力分区原数据啊,那就是partition me data点或循环啊或循环拿到一个一个的什么,它低声的一个me达贝塔。那到了这一步,是不是我们先看有没有什么leader对吧,看能不能这个leader跟我们返回来点。第一个就是leader这个地方才能找到我们的leader,但是你要注意啊,就是我们等会写那个second,它有三个分区吧,如果说你这个地方直接把leader返回。对吗?就是说这个地方,假如说我直接。Return啊,当然它现在是返回这个类型不对,对吧,我我直接这样return,它是返回了一的,对吧,但这样对吗。
14:01
我们要指定的,刚才说我们指定的是什么,我们想获取second这个topic的。零号分区的数据吧,你那你是不是要找零号分区的一个什么。Leader。那这个地方应该怎么做?是不是要判断呀,对吧,要判断,如果说这个什么。Partition等等于。这个partition Meta data.partan ID看见没?如果说这两个相等的话,我把这个值干什么?返回出去可不可以,当然现在这个返回报错是因为我们那个类型有问题了,哎,类型有问题。那这个如果如此,返回的是不是我们想要找的那个零号分区的一个什么。一。对吧,哎,这个才是我们真正要找的这个leader的一个对象,Li对象,OK,这个返回值类型是这个CTRLC。
15:06
啊,又是那个盖代码了是吧,我们拿一下他这个返回值类型。等一下包。导报这样就不报错了,不报错了,那最后如果说它这个整个的负循环都没有找到力,返回now。都可以吧,哎,就是说你把整个的什么。Brooks都遍历完了。都并列完了,同时你把它什么分区这些东西也都并列完了,还没有找到领导,那说明什么?三个分区都挂了,假如说三个分区,三个分区都挂了吧。想一想,三个分区都挂了,是不是领导就找不到呀,你正常的如果说三个分区三三类似于三个副本等等一个操作啊,所有的东西全部都是好好的话,他能够走到。浪漫。不会走到那的,哎,是不会走到那的,所以说只要在其中能找到这个leader,我都给他返回了,我都给他返回了,OK,然后这个地方还能获取到什么信息呢?Partition made data点。
16:10
这是什么case,这个是如果说你要想实现上我们所讲的什么功能啊,Find new need的那个功能的话,那你是不是这个地方你找到领导之后,你要把这个东西给它保存下来啊。它副本所在的地方,你看刚才我们那个返回值是不是不,哎,那point呀,就是leader的返回值,那它是什么一个集合,是不是可能,因为你要存在多个副本嘛,它是一个集合,你要把它副本全部保存下来,那下一次找领导的时候,你就不用对整个什么。不用对整个什么集群进行便利了。而是对它的一个。副本的那几台机器及便利就够了吧,因为它leader绝对在里边啊,绝对在里边,不可能跑到其他机器的,跑到其他机器的OK,然后我们把这个寻找A的一个过程再看一遍啊,再再理一遍,首先核心的大家要记得一个东西,就是simple这个东西。
17:11
SIM customer这个东西这个呢是核心的,它特别底层的一个方法啊,特别底层的一个类啊,你要拿着这个东西,你看这个SIM customer跟之前我们提到那个卡夫卡不一样在哪啊,它是连到具体的。某一台机器上是不是,而我们写的那个卡夫卡呢?你传一个什么不stop的杠,So,就是任何一个集群上任何一个节点就行了吧,因为他根据你那个节点能找到集群,然后同样的它也是做一个便利,也对你整个集群做便利的,是这样的。做便利的,那真正的其实去获取数据也好,获取原数据信息也好,都是用的这个simple的一个对象。这个对象是这样的,因为这个才实际的去跟某一台机器进行打交道的一个一个类啊,打交道的一个类,OK,然后在这个类里边,我们是不是就看了一下它具体的一些方法呀。
18:11
因为我们想着我们要获取信息的话,那肯定要调这个类里面什么方法吧,那我们就分析了一下这个fetch,它就是抓取的意思,抓取的意思,这个就是实际的去抓取数据所用的方法。然后看这个还有一个sin的方法对吧,哎,三的方法,那三的方法首先它传进去的是一个。主题原数据信息的一个请求,而且返回值也是什么?主题原数据信息的一个response的一个结果,一个结果,那这个是我们当前需要寻找这个leader要用的方法,因为每个分区的leader是属于每个分区的一个原数据信息。啊,原数据信息,那同样的它ddpi里边还有什么什么get offset before。
19:03
就我们之前所说的,上一次你读到哪了吧,这次要读的时候,哎,我从这个位置开始读,然后commit ofet fe of set啊等等,这个这次也是它的一个构造方法啊,就是它复构造方法,因为它S里面主构造方法在这呢,主构造方法在这呢。啊,是这样的啊。好,然后我们就拿着什么。这个S的方法。S的方法去准备发送请求,但是发送请求的时候我们发现。他要一个topic data的一个request对吧,所以说我们先创建了一个topic data的一个request request,那它里边要的一个参数是什么。就是多个主题是不是一个或多个主题,也就是说你这个请求当中啊,你可以携带多个主题信息进去,我一次抓取就是一次获取的时候,我可以直接把什么把多个主题的原数据信息全部获取到,全部获取到那后面就是我们来解析这个原数据信息。
20:04
解析这个元数据信息,那整个的过程呢?由于最开始这个request是可以传多个topic的,所以它的一个。Topic的一个是一个什么。集合,哎,所以它是一个集合,那同样的每一个topic里边又有存在多个分区,所以你调了一个什么分区的一个原数据信息的时候,它返回值照样是一个。同样是一个什么是一个集合,哎,同样是一个集合啊,那我们想的是要便利一个原数据信息啊,便利什么,每一个分区的原数据信息,你才能拿到领导吧,哎,才能够拿到领导这样的。啊,才能够拿到领导。啊,拿到领导的时候,我们想的是所有关于这个topic,所有的一个分区的领导,我们都要吗?不是的吧,但是如果你想想啊,那些高级API在写的时候,是不是所有分区他都获取啊,那这个地方是不是他将领导放在一个集格里边,然后你再去便历吧,便历的时候每一个不同的跟领导进行连接,然后去获取数据,还是同样的调用那个flash方法啊,去拉取数据的用的啊,拉取数据用的,那当前因为我们的需求是这样,我们只想获取零号分析的数据,对不对样啊,所以呢,我们这个地方做了一个判断,如果说当前我们编利到这这个分区的时候,它的一个什么AB跟我们传进来的这个partition啊,零是一样的,那我们才返回它这个力的,要不然我们就不要吧。
21:40
哎,我们就不要是这样的,这才是整个的获取leader的一个过程啊,获取leader的一个过程。
我来说两句