00:00
好,那接下来进入第四章,我们要使用一下我们当前的canal去采集my circle当中动态变化的数据啊,呃,那这里边呢,分为两块,第一个呢是TCP模式,刚才我们安装的呢,就按照这个TCP模式去安装的,并没有修改这个配置PC,呃,那么第二个呢,是卡夫卡啊,我们可以使用这个。Canal采集数据之后呢,直接发送到卡夫卡里边RTCP模式呢,我们也提到了,它是属于客户端服务端的模式,呃,那这里边客户端代码呢,需要我们自己去写一下啊,所以呢,我们现在创建一个这个项目,诶打开我们的idea,然后呢,这边呃,你有一个project,诶main项目就OK了,然后呢,这边我们写一下叫com点爱的硅谷啊呃,这个呢叫追末。Canada啊,Jama鼓励商城就是我们硅谷的一个,假如说是硅谷的一个商城项目,对吧,我们要采集这个商城里边所有的买S数据,诶来做实时分析啊,这个呢,大家项目名倒无所谓了,随便取一个就好了,然后呢,我们班finish,嗯。
01:08
首先第一步呢,我们导入这个依赖啊,这个呢从文档当中去拿一下,呃,两个依赖,这个我们刚才用的是1.1.2版本的,对吧,我们改一下,呃,那第一个呢,是我们的这个canal客户端,第二个是卡夫卡,因为未来我们要可能将数据发送到卡夫卡,或者什么样子的这个都可以,我们只是做一个简单的介绍来吧,好,那把这个呢放进来好,当然如果说你只是在当前这个位置,不想写到任何的系统里边。那你只需要导这个c.C就好了,只要导这个客户端的一个包就够了,对吧?呃,那么接下来呢,我们把这个类去创建一下啊好在这里边呢,我们要写一个测试类。点。Canon。Client啊,比方说我们叫这个can的客户端对吧?这里边呢,未来我们直接做测试,所以我们把这个慢方法准备好,呃,那么接下来呢,我们就要想一下,这里边儿我们应该要写什么内容了,对吧?好,所以呢,我们只是把这个项目先创建了一下,接下来呢,我们看一下这里边儿封装的数据内容比较复杂啊,因为它毕竟是属于一个二进制文件,所以呢,我们要对它进行解析还比较麻烦啊好,那首先呢,我们打开这个PPT啊,我们来一起来看一下。
02:26
呃,那既然是这种客户端跟服务端的模式,所以第一步我们肯定在写代码的时候要获取这个客户端对象,或者说是一个连接器或者连接对象,这个没有问题吧,然后呢,使用连接对象去抓取买S当中的blog数据啊好,那我们就来看一下抓取的数据,它里面封装的格式是什么样子的,首先第一步。我们需要了解到抓取的内容呢?它封装的一个类叫message。啊,Message OK,呃,那这个呢,一个message啊,呃,是他单次从canal,从my circle的b blogg当中抓取过来的数据啊,那可能里边会包含很多个S克执行的结果,因为我们不能说单次抓取只能一条一条的读取,那这个效率也太低了,所以它是一个批量的啊,所以呢,一个message当中会包含很多个S克的执行结果,这个我们要清楚一下啊呃,那也就是说message里边大家想一下,它应该是有什么内容组成的了,是不是应该由ser单调ser包装的内容啊,对吧,而且应该是一个集合,因为一个message当中它包含多个S直音的结果是不是好?呃,那么接下来呢,我们来看,诶,它里面包含的是entry,但实际上呢,它里边包含的是一个entry的集合,因为我们来看啊,En。
03:57
En呢,它对应的是一个S命令执行的结果。而我们之前在给大家介绍。
04:05
Mylo类型的时候说过,像statement,它的优势是在于数据量。保存的比较少,主要原因是什么?对了,哎,主要原因呢,是一个circle,可能会影响多行记录,对不对。啊,那用statement呢,它只需要保留一条数据,如果用行数据的这种格式,那么多行记录单独保存啊,它要写清楚的,OK,好,这是entry,所以呢,一个message来看啊,它对应多个S执行结果,而一个entry对应的是一个色执行结果,那换句话说,一个message里边其实包含的是不是一个entry的?集合。这个关系能捋过来吧,所以这边呢,哎,我们看一下我这个地方呢,诶打了一个省略号,它可能一次抓取的包含有很多个不同的entry,好,那接下来我们就一个entry来聊一下这一个entry当中又有什么内容了啊呃,那它对应的一个S命令是不是啊,那这个时候呢,对应一个S命令肯定有这个执行的表,所以呢,在entry当中我们可以获取到这个表明,同时呢,可以获取当前entry的类型。
05:26
啊,因为他。保存的b logg有DDL和除了查询的DML,所以里边呢有关于事物的开启关闭呀,还有这个心跳信息啊,以及roll data类型,Roll data类型呢,其实在我们实时数据分析的时候是要用到的,因为它是指的是DML当中,除了查询的这一块,那我们不就是要这些数据吗。是不是我们要的就是增删改的这些数据,所以呢,它有安全的类型,所以我们可以通过这个来做一个过滤,比方说建库建表的这种语句,诶我们就不需要了,对吧?因为做实时分析,你建库建表给我其实意义不大啊,那所以呢,我们更重要的要长数据这种方式啊呃,那么接下来呢,是。
06:19
它是二进制文件,所以它一个en里边呢,包含了当前这个circle所影响的所有的序列化的数据。啊,它是叫stop value,注意它是序列化的,因为我们读取的是blog,所以呢,很明显我们要对它进行一个反序列化,哎,反序列化呢,得到一个什么内容呢,叫柔change行的改变。对吧,这是序列化后的一个内容,我们从这个里边呢,可以获取我们的列名和列值,这个比较方便,那么接下来在行的改变当中,大家想一下可能有什么东西了。哎,我们第一个。当前的数据类型,诶,这个数据类型当中呢,就包含了我们增删改查这一套,对吧?啊,当然其实查询的数据呢,放在里边并不会有啊,更多的就是ins色的数据,Update delete create,建库建表的这种类型,对吧?好,那么另外更重要的除了类型之外,就是我们数据本身了,而一个entry对应的是一个circle执行的结果,一个S呢会影响多行,所以它里边包含的数据呢,也不是单行的,而是一个。
07:30
List。对吧,这块概念比较多啊,大家要关心一下,要注意一下,因为呃,那其实顺着下来呢,也并不难,对吧?因entry呢,对于一个SL命令,一个S可能会影响多行记录,所以在这个roll change当中,它会有一个row data list,而且考虑到里边有这种update数据。啊,Update呢,它就会包含更新前和更新后的数据,大家想一下是不是啊,所以呢,在这个当中它有。
08:01
Roll data类型啊,一行一行数据,一行数据呢,它里边是column column呢是列,里边包括列名,列值,当然这里边还会分为两块啊,就是说更新前和更新后的,呃,Update呢,两个都有音色的数据呢,只有更新后的,因为我在插入数据,你是空的,没有对吧?如果是删除操作,那么它只有前,它没有后。啊,因为你如果删除数据了,改变之后就没有数据了,对吧?啊是这个意思,好,这是我们整个的一个结构,那我把这个呢结一个图,因为等会我们写代码的时候,我们就根据这个内容来写比较方便,对吧,那我们截取到这块吧,OK。好,就截取这么多啊,那我把这个PPT呢推掉,这是我们对于等会要写的数据做的一个分析啊。
我来说两句