00:00
呃,那么刚才呢,咱们说在使用我们这开头之前呢,需要在MYS里边做一些准备工作对吧?其实除了这些准备工作之外呢,那就是除了配置文件之外啊,其实还有一个设置对吧?这个设置呢?呃,以前当家设没设置过这个东西,应该有些同学设置过对吧?如果说你要设置过,你在执行的时候呢,如果报错的话,这会其实你可以不设置啊,这个目的干什么呢?就是说它本身对咱密码是不是有要求啊对吧?长度啊或什么限制对吧?这种其实你可以自己来指定的对吧?那么如果设置这块的话,那你得登录到我们买搜狗客户端来进行设置,买搜狗客户端怎么去登录啊,买搜狗杠U是吧,然后进来杠P对吧?然后咱们现在呢,在这里可以把这两个东西啊给设置一下啊。然后这个呢,我给你说一下,然后咱们这个呢,这个操作其实就相当于创建一个用户对吧,就咱们现在呢,要想去监控的话,那这里呢,我创建一个专门的用户,这个呢叫can对吧,然后密码呢也是kind,然后去监控我们现在一些操作啊,这个其实就相当于让他等于这个用户来帮助我们去把这个同步数据的,把这个呢也拿过来TCTRLC啊,然后接下来咱们呢去执行一下啊。
01:31
我鼠标中间那个滚轮好像它就不起作用。呃,然后接下来呢,咱把这个绍完之后呢,那就来看一看我们这个canon的具体的一个架构,对吧?具体的架构,呃,那么咱们啊,注意同学们这个cano呢,它本身对吧?它这个作用是什么?这边呢,应该是我们的买circlele啊,这边是买circle,然后这块呢,那应该是我们这个can啊,这边应该是can,然后这块下边跟的什么,跟的是我们的卡不卡啊,或者说啊,咱们有可能red,因为它是不是还有一个更新缓存的一个操作呀,对吧,其实red这块呢,其实就是我们的这个一个客户端了,对,你可以通过咱们Java代码来对这数据呢来进行处理,那么咱们主要呢啊看的是这块啊,就从MYSQL里面拿的数据,然后接下来把这数据呢,给它同步到我们这卡卡里面去,对吧,那么如果想做这个事呢,那咱们得对我们的canon呢,它整体的架构有一个了解,对吧,那么canon那它本身有一个核心配置文件,这个配置文件呢,在这个位置啊,就我现在。
02:38
啊,这里有一个核心配置文件叫canal proper啊,叫kind practice,那么在这里它主要配什么呢?配置我当前kindal它的一个高可用端口,一些基础信息,那么以及什么呢?以及我这can啊,它不要把数据同步到卡卡吗?对吧,这个卡不卡对吧?它的一个地址是什么啊,你可以在咱们这个kind practice就整体总配置文件里边来进行配置,那么还有一种情况什么呢?这有可能啊,我当前我再去同步数据的时候,我这个数据来源呢,我不是一个数据库。
03:12
对吧,我不是一个,咱们现在是不是这个数据在202上,我有可能除了202之外,我还有什么呢?我还有102对吧?这个呢,也有一些表,我希望呢,把这数据给采集过来,那如果这样的话呢,那么在我的canle中,对吧?它呢是帮你创建不同的线程来处理咱们不同库的数据呢,对吧?那么如果要想这个创建多个不同的线程的话,那每一个线程呢,它叫一个实例对吧,就说相当于我在这里开多个实例来帮你去处理每一个不同数据库的一个我们这个数据,对吧?那么这个实例的配置呢,那么在我们的exam下面有一个叫expense practice,那么这块呢,就针对于我们当前你要到底处理哪一个数据库,这个数据库的用户名密码是什么?然后另外一个你要把数据发送到卡夫卡,刚才咱们走的里面,是不是只是配置卡夫卡的地址啊,但是卡卡里有多个主题呀,你要往哪个主题里发送对吧?那么它呢,可以配置我们那卡夫卡的主题对吧?哎,那么咱们整体这个架构呢,注意同学们在这里对吧。
04:13
就相当于我现在呢,这是一个开头服务,它可以处理多个MY搜狗不同的一个数据,然后把数据呢放到咱们卡卡里面来,或者说我们现在呢,把这个数据对吧,发送到我们这个客户端,这个客户端呢,相当于对就是呃,提供另外一种处理方式吧,就你可以自己编写代码,你怎么来做,比如说我要想去更新缓存,那就可以把自己编写账va代码端来做这个事儿,那我们直接用这种方式就行,对吧?那么如果用这种方式的话,那么咱们现在呢,需要把我们这canon呢给安装一下,对吧?那么这个canon呢,因为本身是我们家里的,你可以到GI ho上面去下载我们相关的一些版本,对吧?那我们在这里呢,给大家提供好了我们现在的版本,对吧,你可以直接去拿啊,直接去拿,注意啊同学们这块有一个问题对吧,这个有个问题,我们现在呢,这个这个这这个压缩包啊,我已经对这个给大家这个拿过来了啊,我给你推出一下在哪呢?在我op pd software。
05:13
这个下边呢,那有一个我们的K啊,有一个kon这样的一个压缩包,那接下来拿拿这个压缩包之后,咱们是不是想到这东西应该把它解压呀,对吧?因为阿里一般说咱们国内的开源一般就是Java对吧,直接解压就能用对吧?但是呢,这块有一个比较恶心的地方,你们下去要注意一下什么呢?就他解压完了之后呢,他直接就把咱们当前这个压缩报销的所有文件对吧,都给分散解压开了。对吧,就没有解压到某一个咱们这个开头目录下面去,对吧?所以说呢,那么你在执行的时候,我这里特意用这个东西给大家标记了一下,解压后是散的对吧?那这个东西散能不能用的也能用,是不是就是有点乱呀,对吧?那我需要把它的指定解压到我这cat上面去,所以说呢,那咱们在这里我呢需要先创建一个can这样的一个目录对吧,在这里make.r然后呢,OT,我们的Mo的下面啊,创建一个我这K对吧,然后接下来我呢再去执行我们这个T-CXVF,然后咱们现在要解压的是K,对,然后杠大C指定解压到o BT model,注意啊,Can屏幕下面去,对吧,这个。
06:27
注意一下对吧,基本上我每次说完之后,每个班呢,都会有个别的同学再去这么解压一下对吧?诶你们要注意一下,那么咱们现在来到哪呢?来到点点杠model是吧,这个开头下边,那么来看到当前这里边内容对吧?那这里面有什么呢?B目录是吧?到B目录下边一看啊,这里边有一些呃命令干什么的,是不是就启动或者停止我的服务的呀,对吧?然后接下来再往上看谁呢?是不是有Co呀,这Co呢,主要就会配置文件,那么其中有一个配置文件这个东西大家应该认识,Kind of practice,这个kind of practice是谁,是不是咱们刚才说的这个总配置文件呀,对吧?那么这里主要配置端口高可用信息以及呢,卡卡的一个地址啊,没有什么主题啊,这是地址,然后除了这个之外呢,那咱们说我在处理的时候,那处理每一个不同数据库,我是不是有不同的实例啊,这个实例在哪呢?这个实例在我们的example下边。
07:23
注意你看这个和别的不太一样了,别的一看example好像是样例对不对,这个不是这个其实实例的意思对吧?那么在我们的example下面呢,这里只有一个配置文件,这个配置文件叫什么?叫instant pro是谁呢?是不是咱们说的对吧?在这里是不是有instant pro配置文件呀?在咱这里边主要配置是你现在处理的是哪个买所库数据库对吧?用户名密码是什么,然后你现在把这数据拿到之后,你要发送到卡卡的哪个主题中去啊,那所以说咱们其实主要是对这两个配置文件来进行一个我们的修改,对吧?来看一看,那这里呢,我们这个类啊和我这logs呢,那这个就不看了,一个是第三方依赖架包,一个呢是我们这个记录日志的对吧?这样的一个目录对吧?那么咱们现在先来看谁呢?先在到我们这Co中,然后我们vim can.pro对吧?先来看一看它的一个总的配置文件对吧?那么在总配置文件里边咱们都改些什么东西呢?来往下走对吧。
08:19
首先呢,在咱们这里对吧?呃,端口号呢,这个是五个幺,这个一般咱默认就行啊,端口号一般咱们这默认就行,不需要改,那需要改第一个地方修改can它的一个输出模式,我们说canon啊,那其实在处理的时候呢,两种方式,一个呢是到卡不卡,另外一个呢,到客户端,这个客户端你需要自己编写代码,咱们呢直接就是不卡,但是默认的它是我们这到客户端就是TCP的对吧,那我需要把它改成什么呢?改成卡不卡对吧?那么其实除了这个之外,还有一些其他的一些我们这个啊消息中源件,比如说rocket MQ也可以对吧,那咱们这里改成我们这个卡不卡就可以,对吧?找一下啊,在咱们这里对吧,找一找它的一个我们的一个是吧。
09:10
在这呗,对吧,咱们现在呢,在咱们这里啊,主要有三个选择,TCP,然后卡夫卡,还有一个rocket MQ,咱们现在把它呢,改成我的卡看对吧,这第一个这是第一个对吧,像上面那些什么这个端口啊,这个默认就行,对吧,像这个什么端口这个东西默认就行,然后接下来那么咱们再去操作的时候呢,它其实也有一个默认的一个我用户,咱们是不是创建一个Kindle密码的kind用户啊对吧,那这块呢,就默认就可以对吧,然后这个ZK呢,又是咱们可以高高可用的时候呀,咱们再说对吧,现在咱们先来配一个单机版啊,先配单机版对吧,然后接下来那么咱们现在把这个东西改完之后呢,那么再往下走看一看还需要配什么,那么既然你现在呢,要输到卡夫卡,那你得告诉我卡夫卡集群的一个地址是什么啊,卡夫卡集群地址什么,那么在哪呢?在咱们MQ这一块有一个咱们MQ server对吧,然后指定我们现在的卡夫卡集群的一个地址。
10:10
对吧?那么往下走找到我们这个MQ对吧?找到我们这个MQ对吧,它的一个我们配置啊,找到我们这MQ的配置对吧?在这里,那默认的到这啊,那么咱们现在呢,把它改一改啊,把它改一改,那我当前卡卡地址应该是喊DO202啊,端口号9092是吧,9092,然后进来喊豆203对,然后断号9092,然后喊豆204对,然后端口号几个卷对吧?那么这块呢,要配一下啊,这个配一下,然后接下来,那么咱们现在呢,在这里边啊,那其实还有一个东西说老师,那我现在呢在这里,我如果想配置咱们这个这个监听多个数据库的话,那你是不是需要配多个实例呀,对吧?那每一个实例是不是都有自己的一个in instance呀,但是我们刚才发现了就一个instance,在example面是不是默认啊,咱们Kindle它只有一个实例,这个实例在哪呢?在下面这个实例的名。
11:10
称你可以理解成叫Excel下面,那么如果说我现在呢,想配置多个的话,那怎么办?在上边啊,在上边啊,这个呢,表示的是你先要监控数据库是谁,默认这里只有一个X example,如果说你现在还有别的话,那你可以再来,比如说我再来一个实例叫EXAMPLE1啊,再来一个实例叫X example2,对吧,然后接下来,那么如果你要这么配的话,同学们,那么你在咱们的目录下面,那你要创建EXAMPLE1和EXAMPLE2目录,然后同时呢在咱cel和example下面,对吧,你要创建配置文件,那个配置文件呢,叫instance proper,对吧,咱们现在就一个就行啊,咱们现在呢就一个就行,对吧?那来咱们现在呢,把这个东西给它保存一下,保存之后咱们现在往上走,然后看一看这里边在配置文件中是不是有一个example,这个example是不是咱刚才在这里配的呀,如果说你要有多个的话,第一个在咱们这个kind.practice里配多个,然后接下来在这里你创建多个目录,每一个。
12:10
目录下面呢,也都加了一个instant配置文件,咱们现在呢,到我这里边来,然后接下来这里有叫instance practice,那我来修改它对吧?来我现在呢来把这个配置文件呢改一改,那么这个配置文件里面主要改什么呢?主要改的是你要监听的是哪一个我的买S服务,对吧?然后接下来你要把它发送到卡卡的哪一个主题里面去,来那咱现在来看一看我要配的内容。对吧,首先第一个配置my circleql服务器的地址对吧?那么这里呢,在我们的position in inform对吧,就是我MYQL地址信息里面来配置,那么这里你主要把咱们这个my sol地址啊给它改一下对吧,然后现在下边呢,在咱们这里配置MYSQL,它的用户名和密码,咱们前面是不是已经配为can用户啊,密码也是我们这on对吧,那咱们现在来配一下,那在这里canal instance master address对吧,那么这块呢,咱不应该是本地了对吧,那这块呢,咱们应该把它对吧喊SO202对吧,这个呢是我现在坚定的买S对吧,它的一个服务器的地址,然后再往下呢,往下走咱们是得找我们用户名和密码呀,对吧,在这呢,User,然后password,那么这块默认对吧,用户名kind,密码呢说Kindle,所以这呢咱就不需要改了。
13:29
啊吧,这块是我关于我现在使用哪个用户对吧?去同步我们现在这个数据对吧,去同数据,像这些东西你也不用去管它对吧?因为你看咱们这里是不是都是注释掉的呀,对吧?哎,注释掉的,然后接着把这个呢配完之后,那我要配什么呢?我要去配置一下我们呢卡不卡它的一个主题,以及啊我们的一个分区数啊我需要配置一下卡卡的主题呢,以及我分区数对吧?那么如果你现在呢,要配我的卡卡主题分区数的话,那么在哪呢?在这里有一个MQ con,因为你本身你是不是要这个发送到我们现在卡卡卡卡本身是不是消息队列啊对吧,所以说咱们现在来到我们这个MQ con FA里边,对吧?来看一看它的一个配置,往下走找到我们这个MQ con conic对吧,然后接下来第一个这个Kindle MQ topic,那这块呢,说你来指定一下呀,那吧,指定我们现在呢,这个要发送到我们这个卡不卡的哪一个主题,比如说我现在呢叫季梦零五。
14:29
二三,然后下划线,这个呢,是通过canle采集到数据啊,0523_DB对吧,这个什么,这个是我业务数据,然后通过谁来采集到,做过canle,做做can,然后除了这个之外呢,这里还有一些信息,大家想一想,正常情况下咱们默认创建这个这个主题啊,是不是只有一个我们这个分区啊,我们现在把它改了,我能改成四个了是吧?那如果改成四个的话呢,那么这块呢,那你需要去改一些东西啊,你需要改东西改什么呢?对吧?大家看canal m q part,那么这里呢,这个东西你需要把它注释上。
15:06
你先把这西注释,为什么?因为如果说你要不注释的话,他把那个数据都发在哪了,这个零代表分区号,就是我现在啊,把这个数据拿过来之后,我全发送给零号分区了,我全发送给零号分区了,对,那么这块呢,咱们把它都要给他注释长,然后接下来那么咱们现在这个分区数几个呢?在下边就有一个注释的东西,咱们需要把它打开对吧,咱们这里他说是三个,但是咱们不是三个吧,我现在在咱们这个卡不卡这个分区里面是不是应该有四个分区啊,所以这个是我分区数,然后接下来那我怎么样知道我这个数据应该发送到这个四个分区的哪一个呢?那么最下边对吧,这个呢,你也要把它打开。啊,你也没打开对吧?那么如果打开的话,就告诉你咱们呢,去按照我这哈希对吧来做对吧,按照哈希来做,那么如果按照哈希来做的话,注意看啊这块有两种方式,一个是它指定哪一个我们这个库中的哪一个表,然后呢,它的一个什么,我按照ID或者是名字来取我们现在的什么来取哈西值对吧?咱们不要这么麻烦,直接把第一个给干掉啊,直接把第一个干掉对吧?那么如果第一个干掉的话,那么这个时候它相当于什么呢?相当于我现在啊任何库任何表得,然后它对我们现在根据表名来取我们这个哈希值,然后根据表名拿的哈希值来决定我应该把它的去发送到我们哪一个往分区中去啊,发哪一分区中去对吧?那其实这里也有一个问题,同学们会出现什么情况呢?就比如说某一张表啊,这数据量特别大,那么如果这张表数量特别大的话,把它当前这个表数据都放在疑个问句里边,是不是其实也有点清?
16:46
点了对吧,那你可以怎么办呢?也可以这样,同学们在咱们这啊,根据什么呢,大括号,然后PK。什么意思呢?表示的是我现在呢,根据咱表中数据的主线,它的一个哈希值来决定对吧,那么这个呢,应该发送到我们现在哪一分区里边去啊,哎,这个其实PK主件的意思对吧?这个东西啊注意对吧,这个是对吧,这个网上可以去查对吧?可以查就是说咱们现在当前它那个配置对吧?这块呢,我直接让他来做一个这样的配置就行,对吧?默认什么默认其实就发到一个分区里面去,发到一个分区,好处是什么呢?就是说我感觉我的数据都发到一个分区对吧,那变行度降低了,但是有一个好处,它能保证顺序。
17:29
就你卡卡发送的数据都放一分区,这个数据顺序是不是可以保证的呀,对,如果并行的话,这个处据是不是咱们顺序保证不了对吧?这要看你来选择啊,看你来选择对吧?呃,那么把这块呢配一下对吧,把这个配一下好了,把这配完之后呢,那么这里对吧,咱们这个呢,基本上就完事了,单机完事了,然后接下来,那我现在呢,我可以去做一个测试啊,我现在做个测试,那么怎么做是测试呢?咱们可以啊,先来测一个单机的的单机的,那么单机的话,那我来到这先去启动我们现在呢,它的一个我们的个服务啊启动服务对吧,那么咱们现在来到这里啊,在启动服务之前,我先看一看啊来GPS现在啥也没提呢,ZK的启动一下,因为你是不要把这数据发布到卡卡上面啊,对吧,然后接下来这个ZK启动完之后呢,那我们这个KF咱们呢,把它给启动一下,那么启动完咱们这个Z加KF之后呢。
18:29
那我现在目前先看一看啊,当前我们的卡夫卡对吧,它里边的一个比个数据对吧,都有哪些,我呢再克隆一个我们这个session,然后来到o VT model卡夫卡目录下边,然后B,然后卡夫卡topic,杠杠board tri,然后呢杠我们这个serve卡do这个是202,端口号是9092啊902,然后杠杠list啊来看看当前我现在卡卡的这个主题刘乃西啊,目前其实咱们这里一个测试的,然后这两个呢,是日志的,还有一个是我们这个存放我们这个消费者偏移量的的只有这几个对吧?然后接下来那干什么呢?我要去启动我们现在can服务了,怎么启动呢?来到我们现在呢,它的一个can game幕下面在闭幕下面去找start,对start up对吧,那么咱们现在呢,把这个运行一下对吧,那么运行完之后呢,你通过咱们这个查看我们进程,那么你发现在202档多了一个叫can later这样的一个进程。
19:30
表示的是我现在的canon呢,这个进程起起来了,那么这个进程起完之后呢,那么你来到我们的202上,然后看一看我们当前我们的卡夫卡对吧?它的一个我们的主题,你会发现在这里对吧?是不是多了一个我们现在它的一个主题呀,对吧?这个主题是谁?这个主题呢,就是用来啊去接收我们这个这个数据的,对,如果说哎,我现在对吧,这个这个数据库对吧?这个数据发生变化了,那么这个时候呢,Keo会把这个变化给它采集到,采集到之后放在哪呢?放到我们现在这个主题上来啊,发送咱们现在主题上来,那既然你们要往这发送,你要测试的话,你是不是得对这个主题做一个监控啊对,所以说咱们现在呢,来监控一下这主题卡夫卡,然后呢,Conso,然后consumer,然后接下来这里BOO try serve,看豆腐202端口号对9092,然后接下来杠杠topic,然后。
20:30
怎么指定我们当前要将的主题对吧,这个是0523对吧,然后呢,DB对吧,搞C啊,那么咱们现在呢,要看一看啊,我当前这个主题它的一个对吧,这个监控情况,能不能把这个数据给我拿到啊,能拿到呃,那么如果拿到数据的话,这个时候咱们其实简单做一个测试就行,对吧?那么怎么来做一个测试呢?对吧?那我现在是不是可以把我们这个日志重新生成一下呀,你想你重新设成日志,那么这个时候呢,他肯定对吧,要把咱们现在这个买思数据库里边数据呢,重新去生成,那么重新生成的话,那么这个时候咱们看一看对吧,我在咱们当前我这主题里边能不能够拿到这些数据啊,能不拿这些数据好了,那咱现在呢,来做一个测试对吧,来到这里,然后呢,执行我们这个Java JA,然后去执行我们这个模拟生数据,对吧,这个操作这个加包来注意看同学们。
21:24
来,那么呢,现在数据生成了,那来看这里来看这。卡它的主题是不是可以把咱们现在这个数据给拿到对吧,而且拿到之后呢,大家可以简单的看一看它这个格式对吧?来在这里我呢把这个格式啊随便拿过来,呃,拿来之后呢,放在这儿吧啊。连一下网也行。
22:22
好了,那么咱们现在呢,把这Jason格式啊给解析一下对吧,Jason给找一个对吧,随便找一个,比如说我现在呢,把这个东西给拿过来是吧,拿一个看一看效果就行,CTRLC啊然后呢,咱现在往这一放,然后做一个我们这个格式化,对吧?来大家看对吧,那么当前呢,它其实给你得到的一个这对象,在咱们这对象里边呢,这个date,这个date是不是咱们现在记录的一行变化的数据啊对,就当前这个东西啊新增的,然后呢,咱们当年这个是个这一条数据,然后接下来那么来源于哪呢?来源于咱们这个数据库,这个时间戳,然后这个是ID说现在是不是DDL操作对吧,咱们现在应该DML操作insert嘛,对吧,然后这first,然后还有什么呢?My circleql类型,就你现在啊,在咱们这里边操作的是哪张表,那么你当前操作这张表的字段这个类型都是什么,对吧,把这MYSL类型给列出来对吧,然后。
23:22
起来old,因为我新增啊,新增的话,原来的老数据说没有了对吧,所以说呢,那然后再往下这里有什么呢?对吧,主线是谁?然后直行的circle口都这没有对吧?然后这些搜type对吧?这块呢,你也不用管它,对其实就是我当前的一些类型对吧?然后再往下这里有一个什么呀,主要看这个表明对吧,咱们现在是不是对我们现在这应该什么的吧评论对什么这个表做一些操作对吧,然后接下来做什么操作呢?Insert对吧?那大家想一想,我通过咱们当前这个阶层,我是不是可以知道咱们对哪张表,然后做了一个什么样的操作,同时的它的数据是什么样的,是不是我可以得到的,那你说我现在如果说订单的话,那么咱们是不是可以知道你现在对吧,下了一个新的订单,我是不是可以从咱们当前这个开头采的数据里边拿到,对吧?诶这是什么呢?这是关于我们现在呢,这开头的采集本身啊,这个东西就是一个工具对吧,这个工具呢,对还是比较简。
24:22
单的这些工具还是比较简单的,好了,咱们现在把它听一下。
我来说两句