00:00
呃,那么我现在呢,要想往咱们这个卡不卡里边来写的话,对吧,那么这个时候呢,那我希望什么呢?我希望咱们当前的日志啊做一个分流,因为什么呢?因为我现在生成的入日志呢,它其实包含两部内容,大家其实这里可以看看得到啊,在咱们这里边是不是有一些我们这个对吧,这个事件是吧,或者行为,然后还有一些什么启动日志啊,对吧?哎,你们当时是怎么区分他他他现在是启动日志还是什么的,这个这个事件日志啊。怎么区分的,你们里边有一个什么,有一个什么字段,对你你看咱们像像像这个东西,对它它是启动呢,还是我们这个行为呀,你看这里是不是有start呀,对吧?哎,那我现在那你想一想,那么它有咱们这start了,我是不是其实可以根据咱们当前的字段来判断一下,你生成这日志到底是启动日志还是我们这个行为日志啊,对吧?那么如果是行为志的话,我到时候放到咱们这卡夫卡的行为主题里面去,如果是启动日志的话,我放到卡夫卡的一个启动日志里去。
01:06
对吧,放在卡卡启动这主题里面去,所以我现在希望做一个分流,把数据接收到之后,我做一个判断,对判断之后呢,那我这个时候对吧,然后呢,我根据你不同的日志类型,然后发送到卡卡的不同主题。这个东西应该怎么来做?哎,得先解析它杰son对不对,来啊,那既然他说这个东西说的是杰son,那么咱们现在呢,就来来解析一下杰son在线解析解析杰森嘛,对吧?来那咱现在呢,在咱们这里对吧?来来看哎,这里有Jason,那么如果启动日志有common,然后有start对吧?那么咱们现在首先是不是得把这东西转换成一个兼对象了,对吧,你看你你你给我答这东西这是什么?我接触的是一条一条的一个个字符串嘛,对吧?所以说我到是不是应该把它转成这个这个接对象了,对吧?好了,那么接下来咱看一看具体应该怎么来做,呃,首先上面那个呢,是我们的落盘啊,落盘完事之后呢,那接下来我要啊,根据我们这那个日志,它的一个类型,然后发送到我们这个卡夫卡它的一个不同主题中去,对吧,那么如果说你要做介词解析的话。
02:26
那么这个时候你们以前做进行解析吗?同学们做过是吧?你们自己写的代码还利用第三方工具做的,第三方工具用的什么?Fast Jason除了fast杰son还知道别的吗?Goson还有别的吗?除了fast杰son对吧?这样的解析工具有很多,比如说对吧,什么杰森内贝啊,比如说咱们杰克逊呢,比如说咱们fast杰son呢,比如格son呢等等对吧?那么咱们现在这里用的是fast Jason,那么如果fast Jason,那你想一想,在这里咱们是是要fast Jason给我引进来啊,对,Dependenceson fast Jason,那我用咱们这个版本了,对吧?哎,我现在把这个fast杰son呢给我答过来,然后接下来,那么咱们这里怎么去判断呢?你是不是可以把这个东西先给它转换成一个接对象啊的,首先第一件事,将我们接收到的字符串的这个数据来转换为我们这个Jason对象,怎么转换,应该有一个Jason吧,大写。
03:32
应该有个Jason,它里面有一个叫pass object,对吧,然后把字串传过去对吧,把咱们字串传过去,然后呢,它返回的是一个我们这个JA森对象啊,返回J对象,然后接下来,那么你现在是不是从J对象里边来取谁呢?是不是得取一个叫star的这样的一个我们这属性啊,对吧?那么大家想一想,你看stand这个属性是什么类型的,它和TS不一样。对吧,大看咱们现在这里,如果说我要是提想获取TS的话,我是不是可以直接通过咱们当前这个阶段下啊,通过咱当前这个阶下点get什么呢?咱们string或者什么get咱们long,我是不是就可以获取啊对吧?但是呢,你现在呢,要是start的话,它的这这个数据类型是不是还是一个J对吧?所以说呢,那么你要想获取的话,那么你得通过Json object.get什么呢?J object啊get j object,也就是说本身咱们start的属性,它的一个值还是一个接对象是吧?那么咱们在这里拿到了一个start是吧,拿1START是吧,然后点VR这个呢,是我们这个start Jason对吧,然后你拿到之后呢,是不是可以这着做一个判断了呀,怎么判断呢?如果说咱们这个start Jason,它要是我们这个等于等于空对吧,那么如果说哎,这这是随便啊,不等于空等于空,这无所谓,对,那么如果不等于空说明什么呢?说明它是我们这个。
04:57
启动日志呗,那么否则的话,对否则的话,那么说明什么呢?这个是我们的一个事件日志,对这个呢,是我们的事件对吧。
05:12
日志对吧,这个呢,是我们这个事件日志对吧,那么咱们现在如果要是这个启动日志的话,我是不是得把它发送到咱们这个卡卡的启动日志主题里面去啊,对吧,怎么发送。往卡卡里发送数据怎么做?又一个卡卡,然后呢,Producer,然后接下来这里string string,然后接来点这里边有个send对吧,然后send你是不是可以往这里来来来去发送了呀,这里需要传一什么对象呢?是不是得用一个producer record,然到这里是不是又得去传咱们参数了,哪个主题topic你得告诉我,哪个分区是不是你得告诉我对吧?然后传发发动数据你得告诉我呀,太麻烦了。对吧,太麻烦了,咱们用的是spring BOO对吧?Spring BOO它提供对卡不卡的支持对吧?怎么支持的呢?来在这里对吧?那么在咱们这里边呢,有一个我现在又要给大家进行新的注解了,对吧,那我现在呢,在咱们这里有一个叫做我们这个卡夫卡templt啊有叫卡普卡tempt这个类对吧?哎,那么大家想一想啊,这个卡卡tablet这是谁呢?这个是我们这个spring提供的对于我们这个卡夫卡它的一个支持对吧,就是你现在如果用卡卡他们的话,注意看同学们来在这里说这个东西有什么好的呀,卡夫卡接下来send对吧,你看这里边这这里边参数,第一个参数什么topic,第二个date,你说可以直接把这个数据给我打发发过去就可以了,对吧?那么咱们现在这个topic,那你可以给我指定一个topic,那么第二个这个数据,这个数据其实是不是就咱们现在这个,你接触到这个JS对象,这个JS数据你是不是可以给我传过去。
07:00
对对吧,哎,那么咱们现在如果说我现在呢,要试验制的话,那么这里你可以直接把这实验给我发,对吧,那么这块呢,我把这名字拿过来啊,把这名字拿过来。来,那么这个呢,是我start的日志,把这个改一改,这个是我0523对,然后接下来这个呢,是我们这个事件啊,这个是我们这个实践,然后呢,发送到我们这个主题中,0523做0523是吧,大家想想这样的话,就你们觉得就这个东西,你要这么写的话,还有哪些需要咱们再去写的地方。啊,你们也不要太高估supreme,是不是他就再厉害,你没告诉他往哪发,他怎么知道卡卡的地址是什么,对不对,他只能说提供一个咱们现在的封装,但是你知道咱们卡卡地址是什么吗?你是不是得做一个配置呀,那么另外一个咱们说spring呢,它有个容器叫做IOC,可以帮助咱们呀,来创建对象,但是同学们这个东西,那么你创建对象之后,你你这里也没有创建对象,你最起码也得告诉我吧,对吧,那么你现在创对象之后,你是不是得给我当前这个类注入进来呀,对,结果现在这里边本身我谁要谁要用这这个对象是我当前这CTRL要用啊对吧?那么所以说呢,在这里你要加一个注解,这个注体叫做凹wear啊,这个注解叫凹wear的对吧,它的作用叫什么叫注入啊,它的作用叫注入,将谁呢,将我们那个卡卡对吧,他然后呢,复制给什么?呃,复制其实将注入更合适一点。
08:39
啊,注入到我们这个CTRL中,那么如果说我现在注入CTRL里边,那么CTR呢,那么它就可以直接来使用我们这个把对象,那那么咱们这个对象谁创建的这个s spring容器来帮他创建对吧?然后呢,你通过咱们owa呢,把创建对象注入到我的CTR,那么你就可以在这下面直接使了,对吧?那但是我现在呢,我不知道卡卡的地址在什么地方,对吧?那么咱们是不是得配什么topic这些东西啊对吧?那么在哪配呢?Spring配置文件在哪,是不是就叫application practice呀,这是spring配置文件对吧?那么在哪配置文件中找我们这个spring点我们现在呢卡夫卡相关的对吧?你看这里边对吧,卡夫卡相关的东西这里不serve,你是要配一下呀,对吧?然后接下来在咱们这里边对吧,那其实有很多对吧,包括什么咱们这个size的这些东西对吧,我能直接把它拿过来,注意啊,在咱们这里边把它的配置。
09:39
直接拿过来。好,那么咱们现在呢,在这里我配这么三个内容,一个什么呢?一个是我们这个boostrap server,这个你应该知道什么意思,是不是咱们现在block地址了,对吧?那么这两个是不是就是我们的K和V它的一个解码方编解码方式了,对吧?那么咱们现在把这个做完之后,同学们,那我这个程序呢,就完事了,就是往卡卡发消息,这个程序就完事了,来大家看一看这个程序代码难吗?
10:21
看一看这个程绩代码难吗?你们觉得应该还好吧,对吧?来,那咱们现在呢,再来想一想,我们讲了几个注解了,同学们啊,讲了几个主解了,首先第一个咱们在类上加一个主解,叫什么rest controltler干什么用的?其实就是做一个标记表示把我当前这个类对象创建,交给我们容器去管理,对吧,这是第一个,第二个咱们是不是得接受我们的请求,交给方法去处理啊,那出理叫什么request mapping对吧?Request mapping对吧?那么咱们现在其实request mapping呢,它还可以替换,用谁呢?用get mapping来替换对吧,就是get mapping直接接出去get请求对吧,那么咱们现就request mapping对吧,这个就这就知道就行对吧,然后接下来还有吗?有一个叫request body,对吧,它是干什么的?是不是告诉我们现在呢,要从请求题里边来获取数。
11:22
对呀,对吧,就大家想一想,如果说啊,如果说要是没有spring的话,要没有的话,那么这个时候你要想去接触其余的数据,你得自己去调用request get perter的这样的方法去获取,但是现在呢,他直接在加注解,他也可以直接去请求题里边来把这数据给拿到,对吧?然后再往下还有别的吗?SL for接对吧,SL for号接对吧,对吧,那么这块呢,其实就是我们这log book的一个主解对吧?它呢,其实就是帮咱们生成了一个我们一个log属性啊,帮生成log属性,然后再往下又来了一个outwa outwa的啊outwa的,那么它作用干什么的,对吧?将我们的一个属性啊,加载属性,然后注入到当前类中啊,注入到当前类里面就这么几个注解,把这几个注解它的一个意义搞明白之后,那么接下来咱们现在呢,在这里我们呢,对我们的数据进行处理。
12:22
怎么处理的?首先呢,接触的数据,到目前为止,接触数据这个事儿你应该可以知道,然后接下来这句话是不是咱们用我们log个back来做盘,并且的打印输出这块也能理解吧,然后接下来本身我现在的发送数据的时候,这个数据以什么形式给我发送过来的,是不是以接的形式给我发送过来的,所以说呢,我把接S格字串给转换成接对象,对吧?那我现在想判断一下你当前的日志啊,是启动日志还是我们的事件日志怎么判断,那么我们通过我们这个解析啊,我们发现如果是启动日的话,这里有一道大的属性。呃,有叫四大的属性,那么咱们现在呢,可以判断一下,那么从我现在的新对项里边,能不能够拿到咱们这个四大的属性,如果不等于空说明拿到了,那么咱们说明是启动日志,把我现在的这个日志发送到我卡夫卡的这个主题,那么如果说事件值的话,我把这个日志发送到卡夫卡的这个主题。
13:21
对吧,那到这对吧,这会儿其实你给他返回这个东西呢,其实没必要是我们这个你可以直接返回success,表示你给发成功了,对吧,你没必要把这这给你发过来,你再发过去没啥意思,对吧,告诉你发成功了就行,对吧,好了同学们看一看这个代码有没有什么疑问啊。没有疑问的,我就往下走。可以了是吧,那咱们现在就往下走呗,那往下走的话,大家想一想,咱们现在那应该去做什么事呢?其中长对那来呗。
14:09
把你看拿钱吧。假如说同学们,我现在呢,想把这个卡卡的主题啊来发送消息,那如果说这个主题不存在的话,它会不会自动创建,会是吧?那默认创建的咱们这个这个主题的分区数是多少一是吧,可以改吗?啊可以改是吧?在哪改?再配个件改哪个地方改过吗?那么我现在呢,那你们一般一开始在创建主题的时候,都是自己杠杠可创建的,然后指定多少个主题,多少都指定多少个分区,那多累手啊是吧?那么咱们现在呢,其实我可以让它默认创建,但是默认创建呢,我现在这个分区数了,又不想是一对吧,那么这个时候呢,咱们可以啊去修改是吧,可以修改,呃,在哪呢是吧,来到这里是吧,CD,我们这个o VT model,然后卡夫卡这个里边,那么我现在呢,Vm Co,它里面有个serve practice,那在咱们这里边呢,去找就它是吧,叫number part。
15:27
啊叫number partitions默认值是一对,默认值一对吧,那我现在呢,在这里我呢给它改成四对,就是说我现在呢,默认创建我这卡不卡的主题是我们这个四个分区对吧,那这样的话,它其实如果四个分区的话,它到时候处理的时候并行度数比一个要好了,对吧?分区的目的不就提高并行度嘛,对吧,好了,那我现在呢,把这个这个提起来把吧,203204呢,我也提起来,我看提起来了没有。
16:02
2047来了,那咱们现在先启动CK吧,对吧,CK当然。然后接下来咱们的KF,然后呢,到了。那么我现在呢,启动完之后,我要看一看咱们是不是启动成功了啊,是不是启动成功了,现在我的总基本卡牌是不是启动成功了,对吧?那我现在呢,启动成功之后,我想看一看当前的卡卡里边啊对这个有没有这个我这个主题,我的卡卡主题里边的主题有点新啊,我卡卡主题有点新。来,郭德星,我想查看我当前卡卡主题都有哪些命令。啊,你们回答声音一定要回答问题的时候,虽然说不用站起来,但声音一定要大一点,因为我这录屏一旦不小心到网上去等你,到时候你特别厉害的一天,发现当时我回答问题怎么这样的,是不是来目录下每个卡不卡,然后什么topic,然后接下来拼写拼。
17:41
你别,你们这么这么大年纪,别,别随便这么说,来,再尝试一下。啊,那咱现在呢,这里应该是我们那个202是吧,账号多少9092是吧,我记得我第一天在上课的时候,就让你们把这个东西先记住,我说以后我还会找你们的,对吧,我以会还要找一个人对吧?然后呢,咱现在呢,在这里我要想看一看的话,是不是应该可以通过杠刚list来看一看我当年这个卡卡都有哪些引我的主题啊对吧,一个test,还有一个是consumer outside,这是什么?
18:34
诶,这主题是我创建的吗?自动的干啥呢?这是存放咱们的消费者的偏移量对吧,主要消费便量,然后接下来,然后现在呢,那我得去开一个什么呀,我得开一个咱们的消费者对吧?因为你要往我这里边来发送了,那你是不是得开一个消费者来消费一下呀,对吧,这个消费对吧,那么应该怎么来写。
19:03
田旭航。卡,然后呃,消费者。咱们to的名字别写错了,咱们这里有两个,我就消费咱们那个启动日志就可以,因为咱们第一个需求不是对吧,热活吗?热活是不是从咱启动日里获取数据啊,对吧,那我现在呢,这个然后呢。确定吗?你真确定,年轻人你得听劝啊,我不是一直都那样的,对,是吧?我让你好好再想一想啊,注意啊,咱们那个brookli什么时候用brookli,就是咱们生产者的时候啊,生产者生产的时候,那么咱们呢,是broke list啊,为什么呢?因为咱们现在生产者生产的时候,我是不是要把我现在生产数据给我的卡卡的broke了,对吧?哎,所以说呢,这块咱们把这个拿过来,这个应该还是我们这个water,然杠我们这个serve豆202端口号9092是吧,拿它来进行消费对吧?那么现在呢,他给大家警告,这个警告呢,咱也能理解,人家没也报错就不错了,因为你现在是没有这个主题了呀,对吧?那么接下来咱们现在开始测试,首先第一步是不是得把这个程序呢先提起来,对吧?所以说呢,来到我们这个spring BOO里边啊完,我现在我们处理短接收我们这个日志这个script的程序,给它提起来啊,给它提起来。
21:00
那么启完之后呢,那么启完之后是吧,那么相当于我现在呢,这个启动这几个处理这个日志的程序启下来了,那么接下来咱们是不是得把这个日志给生成一下呀,来那么来到这我再克隆一个session,刻一个session在我们这个OT model,然后这个里边呢,有一个rtp log,然后当会杠架J帽,然后呢,咱们把这个生成一下,注意看同学们。那么他应该返回什么?这里面是不是有反size了呀,对吧,因为咱们现在返回size对吧,然后接下来你看这个我现在这个成绩是不是正常的呀,对吧,就是我现在我可以生成生产数据了,然后呢,可以把数据发送到咱们现在的对吧,这个logo logo ctrl里边来对我这个数据呢进行处理,然后处理完之后它怎么处理呢?一方面对吧,要这个论盘对吧,一方面呢,打一个控制台,还有一个是不是得把卡卡里写呀,所以说你看现在卡不卡对吧,这个主题中是不是可以有数据了对吧,而且注意啊同学们,咱们现在呢,把这停一下来看成C,那么提完之后呢,咱们这里应该不出意外的话,是不是应该全是我的启动日志对吧?你看这里是不是应该doing star,因为咱们现在监控的不就是我们这个启动日志对吧,它这个主题吧,对吧,然后CTRLC对吧,把这个停止,停止到之后呢,咱们现在带来例子的看一看,那当前我们现在这里边应该多了两个主题,一个呢是放我们这个体重值的,一个呢是放我们这个事件值的。
22:28
是吧,好了,那这样的话呢,咱们关于我们现在啊,这个这个日志处理呢,这套流程对吧,就差不多了,给大家稍微总结一下对吧,给大稍微总结一下对吧?呃,那么咱们现在呢,在这里啊,首先对吧,你有一个Mo,这个Mo是干什么的,说模拟生成数据的呀,对吧?那么你把这个数据收这个生成完之后,那么你是不是要发送到一个地址上,它并没有给他罗盘,它能发送到一个我们这个URL,发送到某一个地址上了,对吧?然后接下来,那么咱们既然把地址发送,那我这里要干什么呢?我是不是通过咱们这个spring BOO对吧,通过咱们这个springb对吧,来干什么呢?来写一个程序去接收你给我发过的数据,并且呢,这个做一个处理,那咱们处理怎么处理的呢?那第一个我们现在呢,先打开控制台,第二个呢,我们论盘,第三个咱们现在是不是把这数据给写到我们这卡夫卡上来了呀,对吧,写到我们这个卡夫卡上来了,对吧?那么这个呢,就是我们现在大概的一个流程。
23:28
这个流程大家能明白吗?能跟上吗?其实整体这个思路,整整个这种东西我觉得不难,大家困惑在哪呢?就那几个朱几是不是对吧?就没见过咱们没见过spring的,从来没见没见过spring的对吧?那我告诉你们对吧,你们已经精通spring boot对吧,不光是咱们spring boot还有什么,还有咱们spring对吧,还有spring VC对吧?其实我们这几个的是spring bc的主体啊,其实我刚才看的这是spring bc的主体,对吧?啊那么咱们把这个完事之后啊,同学们,那么再往下呢,其实如果大家要是明天要时间充足的话,时间充的话,你们可以再往下做,再往下做的思路是什么样的呢?我现在我把这个程序写在哪呢?是不是写在我的一个这个idea是不是在Windows上面,对吧?但是我程序的运行的时候,你肯定不能说,哎,我现在啊,要对你的数据进行处理,怎么处理呢?我还得再打打开idea对吧,然后呢,我再运行我程序,这肯定不行,你是不是应该把你的程序写完之后打一个包,然后打一个包之后发布到或者放到咱们现在这个Li上去啊。
24:33
对吧,所以说再往下我们就应该把这东西打包,然后放到我利上去,然后把它运行起来,对吧,这一步,然后还有一个呢,咱们到时候再讲了,就是说我现在日是太大了,对,我现在热量特别多,你现在啊,你这111个根本搞不定,你这里我现在是不是相当于有一个内线摊不开的呀,一个内线摊不开的根本搞不定,那怎么办呢?那我现在在得考虑对吧,摊不行,那咱们现在是不是可以考虑使用我们的机群分布式啊,对吧,这些东西对吧?那么如果说假如说我现在这一天摊不开的不行了,我又来了一台不开的对吧?那当我日志过来之后,我应该把这个日志处理,这个请求给谁呢?是给第一个不开的,给第二个不开的呢,对吧?那么这个时候呢,会用到一个N这个什的东西是吧,会用一个N这个东西来做负载均衡啊来做负载均衡好了,呃,其。
我来说两句