00:00
好,我们看一下这个第三个大的模块消费模块,消费模卡不卡呢,他说提供了两套API,一个高级的,一个低级的,那大家用哪个用高级的是吧,其实公司当中的低级的用的多。那这是低级的是吧?啊,但是低级API呢,其实我们这块Java当中会讲啊,但是我们在Java的时候,就是当前我们肯定用Java来操作嘛,啊用Java讲的时候呢,我们更重要的是以他的一个逻辑。而而不是特别注重他在公司当中如何用Java来做,因为你们出去了之后,更多的是由呢SC来操作的,所以说到Spark的时候会专门这个东西还会再讲就是scale。用SKY的代码哎,怎么写这个D节API,那到那个时候老师就可能不会带着就过逻辑了,就可能咔咔就直接开始写代码了啊,所以说Java这块呢,我们把逻辑理清楚到那块啊,学会怎么用啊,具体的一个用法,这样两块分开分开,因为它这个D接P挺复杂的啊,整个过程挺复杂的啊,来看一下啊,先看一下它这个对比。
01:06
高级API的优缺点对吧?啊优缺点,那这样高级API写起来简单就爽,写起来就很爽,什么都不用你管,你写一个消费者,然后就消费就行了,就直接消费者点货,然后传一个那个延时,就是说你想多长时间去获取一次值,写这个东西就够了,你就能拉拉起到出去了,什么找leader呀,找那个你的分区找leader就不用你管啊,人家底层的给你实现好了,实现好了是这样的,那它这个缺点。那它的缺点就很明显了吧,刚才说了,这东西不用你管,系统给你管了,那你就不能够自己去控制了吧,啊,就不能够自己去控制,所以说这是它的一个缺点啊,这是它的一个缺点,第二个就是说你用高级消费者消费的时候,你用同一个消费者消费数据,它不是保存了offet吗?你消费完数据之后。
02:00
你是没有办法再从头再来一遍的。就是说里面有100条数据,你第一次消费到50条,你把你消费者贴掉了,贴掉了再来消费的时候,他一定是从51条开始消费。你没有办法做到,哎,我再重重新消费一遍。因为不是你自己管系统管你系统把你上一次50已经存在那了,已经存在那了,是这样的。那是那是控制台的一个消费者啊,控制台一个消费者他用的是低级API,低级API呢是可以控制的啊,低级API可以控制的啊,那因为控制台正常在公司开发的时候用的是一个高级消费者,高级消费者这块呢,你没有办法做这个事的,如果说你要想用高级消费者,还想用什么呢?从头开始消费,换一个消费者组,换一个消费者组。啊,换一个消费者组也可以,你不是同一个组你就可以从头消费了吧,因为你这个组对于他来说是一个新的嘛,哎,就从头消费这样的也是可以的,肯定可以的,OK,那它这个缺点呢,就是这样啊,不能够自行控制这个off。
03:01
啊,就是说我想重新消费的话还不行,那第一节API来看一下它的一个优缺点,就是反的吧。啊,其实它的一个优优点就是刚才所说的高级API的缺点,那它的缺点就是高级API的一个什么优点了啊,因为他们俩是反的,它的优点就是说你可自己控制奥赛的。你想读哪个地方就读哪个地方,而且你可以盯着,我就想读first零号分区里边从那个15开始读,可以,你可以做这个事啊,你或者说我不想读零号分区,我想读一号分区,这也可以,就是你完全的自己来管理这个分区,这个奥赛的啊,这是低级API理解不但是呢。它的缺点也很明显。太过复杂,到时候大家写的时候就能发现啊,你们可以直接看一下,呃,整个djpi在这块啊,整个代码。对吧,还挺多的,还挺多的啊。可以提前感受一下啊,感受一下就是低DAAPI,那高级APIDDAPI呢,在现在的课程当中,我都给大家讲了,都需要给大家讲了啊,如果说你们看的应该是之前的视频,可能那个djpi没讲吧,啊,DJ是没讲的,但现在提前呢给大家讲一讲啊,那到后面SKY那时候用的时候能舒服一点啊,提前理逻辑啊,知道他干什么事,可能好很多好很多这样的,这是从理分析了一下高级API低级API,那这块一个东西呢,肯定要到。
04:28
明天才能讲到吧,因为明天才是这个真正的API的一个练习,API的一个练习,然后我们接下来看这个消费者组。消费者组这个问题是吧。这个东西我们就要测一个什么东西呢,就是说。同一个消费者。之前我们测了一个,我们是不是启动一个控制台,消费者来消费first这个topic,当时我们first topic表它是两个分区吧,就说明什么,我们一个消费者可以消费多个分区,这没有问题吧,这已经证明了对吧?OK,接下来我们要证明的一个问题是什么呢?同一个消费者组里边的不同的消费者不能够。
05:11
消费同一个分区数据。不能够消费同一个分区数据来看一下来。啊,这个消费方式我们都说过了,说过了OK,然后我们看这个案例啊。嗯,我们先给他一个组。啊,把这个关掉,这个是生产者对吧。V一下这个config里边有一个cons对不对啊,然后找到你看这边有一个什么。组ID啊,其实说你不改你直接起也可以吧,因为三个东西都一样的嘛。这个地方是不是,呃,给那个公司打个广告是吧,一个爱特硅谷,让他是一个爱硅谷的一个组啊,然后我们把这个104上也来一个吧,104上也来一个,好,然后VI一个consumer,然后什么consumer。
06:04
嗯,Shift,哎,这个地方在哪。Group ID在这吧,是不是A?然后我们把这个也改成爱归国。往上再出,往前出,OK,好,接下来呢,我们先开一个。生产者可以吧,开一个生产者B卡不卡。在这个颠波卡不卡并。卡也是控制台的嘛,对吧,然后杠杠不对吧,不。102括号9092,然后杠杠,那是谁啊,FIRST2S first。
07:04
好,嗯,当前我们这个first是几个分区。一个分区三个副本对吧?啊,一个分区三个副本,那来看一下我们呢,那一个分区我们要起两个消费者。对吧,看一下他什么情况来卡,然后是那个cons杠杠,呃或者说都可以吧。多宝1022号2181,然后杠杠。他这个。好,这个还是同样的那个警告吧,之前我们都看到过了,来把这个粘一下到这来。启动一下,启动一下,OK,两个消费者起了吧,啊这样把这个东西变成这种形式,这是生产者是吧。哦,这两个呢,这两个不是一个组,因为我们没用到。
08:03
把这个干掉。呃,我们要他一个组对吧,我们得用一下那个配置文件,因为刚才我们改了配置文件,现在没用对吧?啊用一下走。那这样的话,我们的组ID就指定了吧,要不然的话还是没有一个指定一个组ID,它还是随机分配的两个不一样啊,然后把这个也请一下。IG consumer。好,那当前我们启动了,来再来。生产者在这边吧。嗯,我们这个写的有问题吗。等会啊,看一下当前这两个还是不是一个组啊。我们这个配置文件写的有问题吗。我看了一下,看一下,看了一下。
09:01
Con里边有一个。Group ID的硅谷,然后这个呢。看了一下con,然后。也是爱特硅谷这里边,我后面多加了一个空格吗?我去看一下。啊。要用的。什么103104。两到104,这个是生产者。这个生产着没关系啊,我看一下这个后面有没有加空格啊,VI一下这个。Con consumer。是不是A没有空格是吧。
10:00
没有空格,然后这个地方有没有空格,V一下con。就目前的情况来看,他两个人都能同时获取到数据,就是这个总没生效是吧,总没生效,这个东西也没有空格,也没有空格,不用重启啊,不用重启,看一下这个东西应该是少了一个什么参数。啊,他要指定这个杠杠cons.conig指定一下这个参数,指定一下带进去,要不然其实刚才就这个conig没没生效吧,啊就没生效,嗯,指定一下参数cons.con。还是同样的这个东西啊,就不能够单独的直接写,跟启动那个服务不一样,对吧。杠杠Co me。点con。然后把这个拿一下。把这个也拿下。
11:00
在这边也加一下,让他这个配置文件生效,哎,空格懂。然后注意启动的时候看一下它直接就。有一个警告了对吧,他说什么。没有一个的消费。你说他为什么有这个警告?就因为我们只有一个part,能不能理解只有一个part,你看你针对于这个topic只有一个part topic来干什么,启动消费者的时候,他就有问题了啊,或者说我们来输一个数据。Hello。只有这一边打印出来了吧,或者说它的硅谷。在这边,因为当前这个什么消费者被他占用了这个partition。
12:00
被他绑定了,那我们把这个什么。CTRLC干掉,你看他能不能消费到数据。他就能消费到数据了吧,哎,刚才是在一个组里边,所以他消费不了数据啊,他消费不了数据,而且我们用的是只有这个topic,只有一个分区对吧,是不是启动的时候就直接有有警告了呀,他说没有一个broke partitions可用吧。啊,因为你是只有一个分区,但是你启动两个消费者来消费,他被一个东西绑定了之后,另外一个就绑定不上去了,他只能有一个人来消费,只能有一个人来消费,是这样的啊,这是消费者组啊,消费者组只能有一个。因为像消费者组这个东西,呃,在那个API当中,它也是相应的有一个配置的啊,就是group.id啊,直接配一下,直接配一下。好,呃,这是消费者组的一个案例,消费模块的一个案例。
13:03
C给他干掉吧。啊,这块的一个东西OK。
我来说两句