00:00
那么具体怎么实现呢?咱们就按照我们这个一个一个的功能点对来做,那么在做之前呢,咱们需要先做一些前期准备工作,对吧?准备什么呢?那大家想一想,那么你要想实现咱们这个功能,那么你在这里你需要操作的东西卡不卡,你是在操作,你是不操作red,你是不是也得操作呀,对吧?所以说呢,那么咱们现在呢,先对吧,来去把一些环境给准备一下,把该导的包导进来,对,然后呢,我操作卡不卡,那我希望呢,封装操作卡法的工具类啊,我去操作我red,我希望从装专门操作ready工具类,我操作来search,这工具类呢,目前已经有了,但里边其实并没有太合适的方法,对吧?哎,那我现在呢,还可能有些配置文件,我可能需要去读取到配置文件,对吧,那读取配置文件呢,那我也去封装工具类,所以说呢,那么在这里啊,我先去把环境搭建好。
01:01
然后准备一些我们的工具类,对吧,那来看一看具体的过程是什么样的,首先呢,在这对吧,我们就把这个代码呢,编写到我们这个real time的这个模块里边,这个呢,咱们已经创建好了,对吧,把这个关掉。咱们现在real time呢,这个模块已经有了,对吧?那么除了我现在这个real time之外呢,那接下来我要在resource里边去创建一个配置文件,这个配置文件注意啊,它不属于任何框架,这是咱们自己的这个名字呢,你可以随便取对,因为你想你要想连接咱们卡卡的话,卡卡broke地址你是在指定,我想连接的话,那么这个red咱们这个地址什么,你是在指定对吧?说老师,那我这个东西我不要配置文件,我把它放在咱们这个Java里边行不行,行啊,但注意这叫硬编码,同学们说你看我现在这个东西,说老师你这不是硬编码,你不也写死了吗?我如果说放在Java里边,我这后缀名是点Java,我如果放在配置文件里边,我的后缀名是点practice,它还有什么不一样的地方吗?同学们,如果你要放在Java里边,一旦你要发生变化的话,你这个插管你是不是得重新编译,你是不是得重新设置自文件呀,对吧?那是不是这个性能就下降了,但如果说我现在放在这里边的话,那你说它需要重新编译吗?直接一替换是不是就OK了?
02:16
对吧,哎,所以说呢,一般呢,咱们会把这个配置单独给拿出来,来在这里首先呢,我去创建一个我们把这个配置文件,这个配置文件叫什么呢?叫con practice名字啊随意对吧,但是建议大家对吧,诶这个东西呢,对吧,这个这前面随意吧,对吧,后边这个东西不能再随意对吧,因为一看proper一般咱们是不是配置文件呀,对吧,而且大家注意,如果是proper配置文件的话,让你去读取,一般咱们通过哪个类去读取。通过咱们这property这个类是不是夺取啊,Property它里边在存放咱们配置的时候是以什么形式存放的,是不是KV建对形式啊,那么既然是KV,它和map有没有关系,有什么关系?
03:01
就咱practice和我这个外部集合扎的外部集合有没有关系,对吧,是实现类是吧,你可以理解他是他的孙子,是孙子关系吗?对吧,因为什么对吧,在咱们这个map下面是不是有一个实现类叫哈table哈,Table下面是不是有子类,是不是叫practice呀,对吧?好了,那我现在呢,在这里都配什么呢?来把这个东西改成C,这个我就不写了,同学们来,包括咱们这块东西你也可以随便写。比如说我现在不叫red啊,Host我就叫一个行不行行啊,你写代码的时候,你一致一下就可以了呗,对吧,但一般没人怎么干对吧,那我现在呢,在这里啊,首先卡夫卡的配置有了,我现在呢要连接卡夫卡,卡夫卡地址呢啊三个202对吧,203204,根据你们自己的机器啊来进行调整,我的是二对吧,你们的是不是幺比较多呀,对吧?然后呢,咱们这reddi对端口号默认6379,这个时候red咱们是不是讲主从,咱们是不是讲集群的,这个时候你就用单击就行啊。
04:08
你就用单击就行对吧,然后接下来那么咱们现在呢,在这里把这配置文件指定好了,那配置文件指定好之后呢,那么接着再往下走对吧,那我在这里呢,再添加一个log for.pro对吧,这是关于我们现在啊这个日志对吧?它的配置文件在这呢,我去新创建一个我们这个文件啊建一个文件叫什么呢?叫log for.proper对吧?然后接下来咱们把这个呢给拿过来,说老师你这怎么不用我们这个log back的呀,对吧,大家注意啊,咱们log back我是在哪个工程里面用的,我是在的下面用的呀,对吧,是因为spring的他底层用了咱们这个log bag,其实他俩的一一回事对吧,都是记录日志的对吧,就是相当于咱们这个这个同一个人,我一开始写的个产品对吧,叫log fo新,后来呢,我对我的产品呢,做了一个升级,对吧,叫log back对吧,咱们现在spring呢,它支持的什么log back,但是log fo新呢,其实也没问题,对吧,如果你要试的话,你会发。
05:08
对,就是我们原来说通过什么log bag来完成我们这记录,其实log房心也行啊,Lo盘对也可以,对吧,那么咱们这里呢,就我们log房心啊log佛经,那么log佛街的话,那大家看啊这块这个东西呢,Log佛街a panda这块呢,是不是相当于什么,是不是相当于你现在它的一个输出模式啊,对吧,那这往哪输出呢?那一看这个是不是应该是我们的can啊,对吧?然后接下来那么咱们什么级别的日志使用你这个pencil呢?那使用咱们这个输出模式呢?Error,那只有咱们报错的时候,那么这个时候呢,我才使用这种输出模式来进行输出啊,来使用这种模式进行输出好了,这样的话,咱们现在的这个log方切practice,还有它都要准备好了,那么接下来导入相关依赖,那么咱们导依赖啊,目前咱们已经有一些了,有一些什么呢?比如说那我们现在在咱们这里边对吧,这个elect search的这也有了,对吧,什么这。
06:08
能有了对吧,但是我们刚才说了,这里边除了我们要操作来search,要使用je之外,是不是还要去操作red,是不是还要去操作卡不卡操作卡法谁去操作,是不是咱们通过SPA triing了,对吧?所以说呢,那在咱们这里,我呢直接把这依赖都拿过来了,同学们从这开始对吧?那么由practice practice什么意思呢?就在这里你可以定一些属性啊,就相当于定一些变量,然后接下来我现在这比如说我定一个Spark version这样的一个变量,那表示Spark版本,然后接着你在使用我们的Spark啊,它的一个依赖的时候,这块是不是有个worship版本号了,你没有必要啊,都去写什么3.0.0,定写什么3.0.0,你直接通过它当成大括号的形式去引用这个变量就可以了,这样做的好处什么呢?这样做的好处就是一旦我们现在版本发生变化呢,你是不是就改咱们现在这个属性就行,对吧,你没有必要一个个去改了,对吧?哎,那么这块呢,要注意一下,我呢把这个东西直接改成C,然。
07:08
往下走啊,把这依赖呢,来CR感C复制一下,然后来到这里啊,我们把原来的这个我就替换一下了啊,这个呢,我就替换一下啊。来咱们看一看,把这依赖呢,大概瞅一啊大概瞅一眼,那么到底都找了哪些东西,那么像这些呢,是我们一些属性的定义对吧,包括SPA的版本,SC的版本,卡不卡的版本对吧?然后呢,这里还有一些什么这个编码方式对吧?然后呢,以及我们这个Java的版本,然后再往下找,这个我是fast j依赖,因为有可能呢,我需要把咱们中串或者接对象之间来进行转换,所以说我使用的是阿里巴巴的fast杰son对吧,把它的依赖给打进赖,然后这块呢,是我们Spark它的一个核心依赖Spark com,然后这块呢是Spark streaming它的依赖,这个呢是我们这个卡卡它客户端的依赖,然后接下来这个是我们这个Spark,是不是Spark streaming对卡发知识依赖啊,对吧?那么咱们这里,你除了知道零杠幺零之外,还有什么?
08:16
是不是还有零杠八呀,他们两个区别在什么地方?在咱们零杠八里边,那么如果要读取我们的卡卡数据,创建两种方式,对吧,一个呢是receive方式,另外一个是direct方式,对吧?当咱们零杠幺零的时候,是不是把那个receive方式给干掉了呀,对吧?那么这两种方式怎么回事呢?原来如果receive方式的话,那么咱们现在呢,要做卡卡分区读数据,它呢会有一个专门的对吧,这个线程是不是对这个数据做接收啊,然后接下来把这个数据呢,交给咱们的exq进行处理,那么所以说我现在是不是所有性能点都都平定在这儿了,对吧,和它有很大的关系对吧,现在呢直接对吧,就是我们现在这个和谁呢?和我们现在这个线制数啊对接,所是一般情况下,咱们这里呢,有一个设置对吧,什么呢,就是目前呢,咱们对吧。
09:16
在前两天请卡不卡的时候,我我我告诉大家我说啊,默认情况下,如果卡不卡它的一个对这个这个分区数对你没有设置,或者卡不卡主题不存在的话,它会自动帮你创建主题,对吧?比如说我现在我想消费某一个主题,但这主题呢,它不存在对吧?或者往某一个主题去发送数据,但是你这个主题呢不存在,那它会默认,默认帮你创建一个,那默认创建主题它的分级数是多少,默认是不是一啊对吧?然后呢,你可以修改对吧?在哪修改呢?在那配置文件里边是不是叫number parts这样的一个属性也可以指定,那我现在呢,我改了,我把它指定改成几了,改成四了对吧?我把它改成四了,对吧?那么如果说你当前卡夫卡它的一个我们这个分区数是四个的话,那么咱们现在呢,一般情况下,我在咱们这个设的时候,我的SPA streaming它的一个限制数,那么咱们怎么来设置,一般也是四个,一般咱们和我分居数呢,一样啊,一般的和分居是一样,对,相当于我到时候会有四个来对的数据呢。
10:16
来进行处理,对,一般是这样的啊,一般这样的好了,然后接下来这个呢,是我们这个red对它的一个客户端J,它的一个要依赖,然后再往下,这个呢,是关于我们这个呃,Je它依赖的东西对吧?一个是我们现在red客户端,一个呢是我们来的客户端,一个叫je,一个叫just对吧?然后再往下呢,这个是刚才咱们加的日志时候报错了,然后咱们后来到网一搜,把这东西加进来,反正就不报错了,对吧?然后接着再往下,这个是不是我们的get它的依赖了,然后再往下,这个是我们这个来search,然后再往下呢,这里边啊同学们,那么有一些什么呢?有一些插件plug in,那么一般我加插件呢,一个是这个什么呢?有的时候呀,那在咱们这个里边呢,我需要对我们这个呃工程进行一些我们的com贝编译,对吧,那么如果编译的话呢,那一般我们现在呢,诶使用的是我们这个插件,其实这个可以不加啊编。
11:16
不加对吧,如果说你要能毕业通过的话,这也可以不加,还有一个什么呢?还有一个打包插件对吧?还有打包插件,其实我们现在你想一想,原来咱们在去啊,我们写程序的时候,我没有加格打包插件,好像也能打包对吧?但是注意啊,如果说我现在自己创业没有程序的话,你没有加打包插件的话,那一般的就会打成成一个加包对吧,那我现在想把这个依赖呢,也一块加进去对吧,那这个时候他可能做不到,对我看咱们这里面有没有,看咱组织部的里面有没有,呃打开对吧,在咱们这里对吧,大概这里是不是就一个夹包对吧,这一个夹包L里边呢,来CTRLC对吧,CTRLC对吧,然后呢,CTRLV拿过来,我现打开方式,打开方式用什么呢?用我压缩的格式打开,那么打开之后大家看我当前在咱们这里边对吧,那么有什么org spring more,这是什么,这是我现在spring本身啊,它自己的一些东西对吧?然后接下来再往上走,这里有什么boot,这里有什么咱classes,然后接下来这里有什么咱们这个这个相关的夹包。
12:16
对吧?哎,那你说我现在呢,在咱们这里,他帮他把价包打过来,但如果说你要没有项目的话,注意他只会打包找资讲文件价包依赖他不会打包,那如果说我现在如果不会打包的话,我有可能把我现在东西打完包之后,到你那一运行说没有我的环境啊,对吧,所以说有的时候呢,我需要把这架包也一起打包,对吧?那么这个时候呢,就需要你使用一些打包插件了啊,就需要你使些打包插件对吧,比如说呢,咱们现在在这里,我们的把这打包插件给它加上啊,这是我们现在它的一个对吧,这个。环境的准备对吧?环境准备,那么接下来我要干什么呢?我要去读取我们的配置文件了,对吧?那么我现在呢,这里有一个我们刚才啊有一个叫coffee proper,那么这里呢,是配置了我当前这个项目它的一些配置信息,有一些配置项目,那我现在要去读取对吧?要从这配文件里读取内容,对吧?那我需要提供一个工具类对吧?这个工具类呢,专门到我们现在配置文件里边来读取信息,那目前工具类没有,对吧?那么怎么来提供呢?对,那暂稍微休息一会儿,下节课咱继续是吧,休息一下。
我来说两句