00:00
好,各位同学啊,那接下来呢,我们再把这个have跟这个Atlas去做一个最后的集成啊,只剩下这个have了啊,这个have的集成是至关重要的啊,为什么是至关重要的?那想一想啊,我现在是不是需要使用ila去呃管理have的原数据啊,对吧?那你想一想,那是不是LA必须得能够拿到have的原数据对吧?前面我们提到过啊,这个原数据是怎么到atla的,是经卡夫卡发送到这个atla的,对不对?那have它自己,你比如说你执行一条circle会去创建一张表,他他完事后他会自己把这个原数据的变动信息发的,卡不卡吗?他肯定是不会的,你要想让他发,那我们就得利用have当中给我们暴露的一个接口。Have里边呢,是实际上是一个hook接口的h ho啊hook啊,这是一个接口,那完了之后我们have在执行每一条语句的时候,不管是DDL还是DML语句啊,它都会去,哎触发这个hook逻辑,那当然这个默认情况下,这个hook是没有任何实现的啊,那我们可以怎么做呢?我们可以自己去实现这个后接口,然后呢,去把里边的一些方法呢给它实现,实现完之后呢,你把这个类或者是账包给它加入到have的class pass下边,那这样一来,我们后续每次执行一条词汇语句的时候都会怎么样,是不是都会触发你自己实验的逻辑啊,对吧?那当然这个逻辑我们没有实现,谁实现了呀?
01:21
是不是Atlas实现了呀,对吧?那Atlas这边怎么实现的?其实很简单,哎,它的实间逻辑是这样的啊,我们不管执行哪条S后L语句,它都会将这个语句发送哪呢?是不是发送到这个卡卡当中啊,对吧?那卡卡拿到这个信息之后,是不是我的这个atla就能拿到信息,拿到信息之后是不是能够解析这个原数据的一些变动啊等等这些东西啊,对吧?那完之后是不是就能够去,哎,相当于是完善我们这个S所管理的原数据信息了,就是这样的啊OK,那这就是我们这个呃,去配置这个呃,Have hook的一个这个说明啊,这个一定要注意啊,这是所谓的have hook,就是一个钩子程序啊啊,那这个完之后呢,我们继续往下进行,那怎么去配置这个haveook,呢,那我们这儿有相关的几个步骤,咱们逐个来啊,我们先看第一个啊,来那第一个我们首先需要先拿到这个所谓的have hook的安装包,这个安装包在哪呢?我们找一下,应该在OPT software对吧,那完之后呢,进到这个,呃,啊这里边这就是我们那个have hook的安装包啊,那咱现在。
02:21
再首先给它解压一下,那注意啊,我们给它解压到哪儿了,你看减压到哪,是不是就解压到当前路径了,对不对啊,这个解压其实咱们解压它的主要目的就是干啥,其实主要就是为了拿到它这里边的一些炸包,对吧,主要是拿这些东西啊好,那现在已经检验完毕了,检验完毕之后我们需要干啥啊,再来看一下。在这执行了一个什么操作,是不是执行了一个CP-R,杠R是什么意思。杠杆是不是整个这个,呃,这个路径啊,对吧?啊,因为你拷贝一个路径里边所有东西是不是得加一个杠杆,对吧?好,弄完之后往下走,这是不是把我们刚刚解压完的这个have hook里边的所有内容都给它拷贝到了Atlas的这个op model Atlas里边,对不对,那咱们先给它拷过去啊,来CTRLC。
03:06
拷贝过去啊,那现在是不是已经这里边问咱们是否覆盖,那其实为什么会问这个问题啊,那是不是说明我们这个路径下面已经有这些账班了,对吧?那完事是否覆盖,你就输Y就行了啊,有Y回车,然后Y,然后Y啊这个Y啊,然后Y啊这个还有点多啊,那一个来吧啊那输Y就行了,好,那来对直接杠外也也就可以了啊嗯,来吧,那就一个来吧,我先这么多,哎,行,一经完事了啊,那咱们是不是已经把这里边所有的包都给它放到了I less这个路径下边了,对不对,那也就是我们现在啊,先明确一点啊,咱们have hook的炸包都在这这个下边是是个道理吧,OK啊,那其实咱们可以去看一下,看在哪,我们进到这个o BT mole ATS。进来进来之后呢,诶,这是不是有一个hope对不对,我们可以进到hope里边看一下啊hope hope里边是不是有这个不同组件的hope呀,对吧?我们其实刚才拷贝的是哪个,其实have后,那这里边会有各种各样的这个包啊,是这样的啊行,那放在这儿之后我们继续往下进行,接下来咱们需要干啥?接下来呢,我们需要去修改一个have当中的配置文件,哪个文件是不是have in对不对,那现在我们就找到have in v c do pd model have,那完了之后呢,找到那个have in have in呢,它其实之前的名叫什么。
04:23
如果你没改过的话,是不是后边会有一个点template呀,对吧,但是如果之前没改过,需要先改名,那由于咱们这之前改过一个参数,所以说名字已经改过了啊,那改过之后直接用就行了,打开这个HAVE5-Inv.SH打开之后我们来最底下啊,最底下的观察这块有一个参数。这这个词叫啥?呃,Have AU pass AU,这指的是啥意思啊,是一些额外的辅助的,那你看是不是extra libraries对吧?啊,是些额外的扎包哈,那也就是一些额外的依赖啊,OK,那现在咱们想一想啊,我的刚才不是咱们大概说了一下我这个have hope的原理嘛,Have后原理是啥呀?是不是have它会给我们报了一个接口啊对吧?一个hope接口当然默认是没有实现的,我们是不是可以实现对吧?实现完之后你是不是需要去借它的接口写代码,写完代码之后要打包啊,对吧?那打完包之后需要干啥?是不是需要将我们自己的炸包放到have的class pass下面怎么放啊?
05:19
怎么放啊,很简单,那咱这是不是可以改一个参数,我把这个参数,这是不是就是一些额外的炸包路径对不对,我给它指向哪指向我们那个have hoook的炸包,那是不是have在启动的时候就能够加载到我们这个实现的这个逻辑来啊,对吧?哎,这个大家理解一下啊好,那现在呢,我们把它改一下,把它放开,放开之后呢,把谁拿过来,是不是把这个路径拿过来就行了,来CTRLC我们给它放在这个位置,好,这个应该是没啥问题的吧,应该是能看懂啊好,那现在have是不是就能够拿到这个hopeook的啊,这个实现了呀,对吧?啊,那完之后我们继续往下走,那此处呢,我们还得再改一个have的配置文件啊,哪个文件呢?就是have set,我们需要在这个site里边加上一个这样的参数,看是不是have eec post host对吧?那这儿是不是需要把那个类名写一下,对不对,给它指明一下CTRLC拿过来,拿过来之后呢,我们需要打开这个HAVE5杠。
06:13
来打开,打开之后呢,我们需要在这里边呢,加上一个相应的参数,来大家看一下,呃,这个参数咱是不是就已经加上了,没没错吧,啊OK,加上了,加上之后我们shift zz给它保存一下,诶没保存啊,Shift的这个ZZ。呃,这个输入法的问题啊,行,那现在我们就已经给它保存完毕了,保存完之后我们再继续,还没完呢啊,还没完呢,快完呢啊来我们还得再去返回去修改一个谁的文件,Atlas的配置文件,对吧,还是这个文件啊来那我们去修改一下。来找到这个文件啊,CD的OPT module I下我们打开application,然后这个点文件在这呢,我们需要去修改哪些参数,看一下文档,首先我们需要修改一下这个参数,来咱们CTRLC看一下有没有这个参数啊,来搜一下。
07:02
来搜索有这个参数吗?没有啊,没有,没有的话,那这几个参数呢,需是需要我们怎么做的呀?哎,需要添加的这个要注意一下啊,来那CTRLC咱们搜一下,那在这儿我随便找个地方啊,比如说我们就来到这个最底下,把shift j来已经是最底下了,对吧?啊,那现在呢,我们把这个相关的参数给它插入进来,那现在呢,我们一共加上了几个参数,是不是四个呀?对吧?这四个参数分别是啥?在这儿呢?我需要给大家去说明一下,首先我们先看第一个。Atlas h have synchronized什么意思?什么意思?什么意思,是不是这个这个应该知道啥意思吧,这是同步的意思对不对。能能能理解吧,那也就是说我们这儿呢,呃,Have的hook是否采用同步的方式,我们是不是设为false了?这是啥意思啊?给大家举个例子啊,你说have h在咱们这儿的作用是啥呀?是不是就是我们每执行一条circle,把我的这个circle的信息发到哪。是发发送到卡不卡是是这个道理吧,那你想一想啊,我们往卡不卡发送的时候呢,我我我们是不是有同步或者是异步的方式啊,对吧,什么叫同步,同步就这个意思,我circle我是不是提交上来了,我得先把这个消息发到卡夫卡,发到卡夫卡之后,回来之后我们才能干啥,是不是继续去执行这个circle对不对啊,那什么叫异步呢。
08:19
啊,什么叫异步,OK,那我这个消息serve拿过来,拿过来之后是不是直接往弹啊一发,那不管有没有发过去,我不管我接着执行就行了,对吧?啊这就是同步和异步的一个呃区别,那大家说我们这用同步还是异步比较合适,显然是异步比较合适,为啥啊,假如说我们用同步,用同步你这个S写完写完之后他是不得去网卡不卡吗?那假如说我这个网卡不卡没发成功,我比如说网络这个阻塞了,或者是没这个网络出问题了,对吧,那我这是不是就得一直等着我这个serve还跑不好,是不是不跑了,对吧?那所以这个会影响咱们serve的执行,所以此处呢,诶我们使用诶这个异步方式使用false,那当然呢,这个官网上也推荐我们使用false啊,好,那接着往下走下一个,这个其实一看就知道啥意思啥意思,是不是重试的次数啊,对吧,那由于还往这个卡夫卡里边发消息的时候,那其实相当于就是一个卡夫卡的什么呀,是不是生产者呀,生产者我发送的时候是可能会有失败的情况,失败是不是可以重试就不重试几次,可以重试三次啊,就这个意思啊,好接着往下走,下一个。
09:16
这啥是不是q size是一个什么东西,是一个队列的长度对不对,这个队列指的是什么队列啊,啊指的是我们这个have hope的这个,呃,是一个那个呃,这个thread pool,什么叫thol线程池对不对,是一个线程池,哎,当中使用的一个参数就是这个队列的长度,啥意思呢?再想想啊,那假如我这儿呢,有一个线程池,线程池流时会有很多很多的线程对不对,那我线程诶在这摆着,那OK,我现在比如说来了一个,呃这个任务啊,什么任务呢?比如说就是往卡卡里边发送咱们这个原数据变动的这样一个任务啊,OK,那这里边儿我是不是需要拿一个线程去发送对不对,那OK,过了过了一会儿又来一个,我是不是又要拿一个线程对不对?那假如说我现在这个呃比较频繁啊,或者说我这个任务比较集中,那我这个线程池里边的线程是不是可能被呃都拿到了呀,对吧,那里边是不是就没有空余线程了,没有空余线程,那我再来新的任务得怎么办?
10:10
是不是得排队?能能理解吧,OK,那现在咱们这儿配置这个参数就是啊,就是你排队的这个队列的长度啊,这个咱们理解一下啊,OK啊,那此处呢,我们设为1万了,其实啊,这个默认值就是1万,也就是你这个参数不配也没事啊好,接着往下走,下一个这是不是起了一个cor name,也就是一个集群的名称啊,对吧?啊,这个随便写,这个不写也没事,其实啊,OK,也是我们这里边的核心参数,其实就是这个,还有这个啊好,那这个完之后shift z行,那到现在呢,咱们这个配置文件就算配完了,配完之后还得对,还得有最后一步干啥,我们需要将刚刚修改的这个Atlas的配置文件给它放到哪儿,放到have的com复目录下边,OK,但是说为什么要放到have的康复目录下呀?因为我们have,现在这个class part里边是不是有itla的这个一个勾的程序,对不对,这个程序是不是需要读到Atlas的一些这个相关参数啊,对吧,需要我所以说需要我们给它拷贝过去啊,CP过去就可以了,OK,行,那到现在呢,我们这个have hook就算是集成完毕了啊,OK,那当然呢,我们isd是不是也支持其他的一些存储系统对不对?那比如说我现在要想去获取h base的语原数据,那h base当中是不是也得做类似的这种集成工作呀,对吧,这会儿理解一下啊,好,那我把视频停一下。
我来说两句