00:00
好,那上午呢,我们把这个低阶API的一个需求啊,就是说他的一个思路给大家梳理一下,然后下午再开始敲代码,那刚才那个高级API呢,哎,我们也测了,就是说这个过程当中啊,你只需要告诉他卡不卡西群是什么。你只要需要告诉他你要订阅哪个topic。然后获取数据,整个过程包括什么,提交后保存后不用你管吧,就他自己给搞定了啊,至于他先消费哪个分区,然后怎么去消费,整个的过程不用你管的。完全不用你管的。好。那这关于这个低级API呢,这个东西就要我们手工的来。就是说我们要一个什么需求呢?我就要读取second这个topic,然后一号分区,我就要从三这个开始读数据,要完成这个需求,那在高级API,你看这块没没办法做吧,因为它是直接去获取数据的,他没让你指定什么。
01:03
那个partition没让你指定Le,他就不让你指定,那我们就想通过什么呢?低级API来做啊,低级API来做,那之前提过,只要是涉及到读写,都是跟那个什么。Leader进行打交道的,对吧,跟leader进行打交道的,那也就是说第一步呢,我们要获取数据啊,首先要根据谁。根据那个分区找到他的leader是谁。找到他的leader是谁?啊,能获取到它的一的。Leader是谁?第二步,你找到了leader之后。你要干什么?你要读数据了对吧?哎,读数据的时候你是不是要传set进去啊。传off进去,那正常的,如果说你要把这个offet保存下来的话,那你在真正读数据之前,是不是先去读一下offet来呀,假如说类似的,你把奥赛的保存在什么买斯克里边可以吧,之前我们是不是做过这事啊,你但是你要在读之前,你是不是先把off赛拿出来对吧?哎,先把奥赛拿出来那。
02:09
获也就第二步是获取那个ET啊,消费进度就吧,那接下来才能够真正的去获取。数据啊,才能真正的去获取数据,获取完数据之后做处理之后,你是不是要把也要保存一下呀。就类似于我们之前在my source里边做了一个什么update。ET to DB这个操作对吧,就当前这一次你消费到哪了,你下一次是从这也就是说你这个数据啊。是你他去保存的数据。保存进去数据保存进去数据OK,然后这个地方还有一个。识别主副本的一个变化,重试。重试啊,那这个地方是什么意思呢?首先你在公司当中的一个考发集群。
03:00
它的一个数量级是非常大的。数量其实非常大的,那你正常的给一个topic来设置分区的时候,你可能设置三五个分区对吧。那或者说你还有什么副本机制,你在公司当中生产的时候,你是不是副本。你不可能说你每你有,假如说你在公司当中开发的时候,有100台的一个卡巴集群,你的副本会设100吗。不会吧,正拿到二三就够了,二三就够了。那你副本设置了,假如说就是三个啊,你有100台机器。有100台机器,那他的leader关于每一个分区的leader。是可能存在着100台,还是可能存在这三台啊?这三台吧,哎,这三台,那这个东西是干什么事呢?是做这个事,就说第一次你去获取数据的时候。你去获取这个leader的时候,你是不是要从100台里边找啊。
04:04
对吧,你要从100台里边找,因为你第一次获取的时候,你根本不知道这个leader在哪,在哪一台机器啊,你不知道,但是你找到这个leader的时候,你是不是还有那个什么副本,在哪个机器上也能找到吧,原数据信息里边有,原数据信息里边有,而这个方法干了什么事呢?就是你在第一次找这个leader的时候,你将它的副本几个节点保存在一个例子里边。保存在内存当中。保存在内存当中。也就是说。我们刚才说的三个副本对吧,你最终拿出来的,假如说零号薄克,然后五号博课七号薄。你找到了副本,哎,这个partition副本在这上面,然后接下来干什么着呢,你把这个保存下来,假如说第一次你的leader是零,这个零零是零化了。零挂了,零挂了是不是你要重新找领导啊。对吧,如果说你不保存,你想想看,你是不是又在100个机器里边找。
05:05
想一下对吧,那你把它保存下来,你只需要在哪个里面找。五七里边找吧,按五七里边找就够了,也就是说这个东西啊,识别主副本变化,就是为了方便你领导,假如说领导挂了,你下一次找这个领导的时候能更方便一点。能更方便一点,就不用便利整个集群了,因为你这个关于你这个当前这个帕他的领导,无论你挂不挂,你都只可能在这三台机器嘛,他不可能跑到其他的机器,对不对,因为肯定是你副本才能够被提升为领导啊,你什么数据都没有,你能提升为领导啊。是不可能的吧,所以又做了这个事儿啊,做了这个事OK,那跟大家讲清楚,这个你在工作当中如果要用到的时候,需要核心的一个逻辑是什么样的,哎,这几步,当然我们课程当中呢,我们要捋整个消费的一个逻辑,是不是之前提过的,就是说我们怎么找领导,怎么连那个领导去消费,所以说我们拜访当中的核心关注的点第一个。
06:12
第二个。这两个方法。啊,大家要掌握的啊,大家要掌握的啊,像关于这个这个东西,你具体的将数据是要保存到从K播里面,你自己是不是也可以将数据维护到从K呀,对吧,你要保存到文件保存到MYSL。保存到HDFS没人管的了解吧,你随便,因为是你自己维护了,是你自己维护了,那这块一个东西呢,到后面spaug的时候还还会再讲,还会再讲,那今天我们核心的内容就是这块啊,就是这块一个内容。OK,然后我们相对应的这四个步骤啊,就是这四个方法。叫什么find leader,找领导吧,哎,找领导,然后get lastet,就获取上一最后的ET对吧?哎,就上一次读到哪了读到哪了,OK,然后run,方法呢,就是获取数据的啊,或者叫get data也可以,还有一个是find new。
07:10
Leader就是说你在找领导的时候啊,把那个副本保存下来了,那假如说你发现异常,就是说连连那个领导的时候,你中间过程当中,你不是循环的去获取数据吗?循环的获取数据是不是循环的去。找领导啊,啊循环的去找领导,那这一块的时候。你就不要调那个找领导的方法,你在找领导方法里边来一个什么。翻的新领导,哎,本来你是对100个机器便利,那现在只要对三个机器便利啊,效率能提高一点,也就是说假如领导坏了,效率也能提高很多,是这样的,这是做那个。优化的一个措施,对吧,当然你说你这个方法不要,你就从之前的100个机器里边找新的领导也可以吧,啊,这个也是可以的啊,就是说相当于一个优化的一个措施,优化的一个措施,整个过程当中,我们用到的一个tbi里边是有一个simple consumer。
08:07
啊,简单的一个消费者,我们无论是找领导,因为找领导的话,我们要找到这个topic的一个原数据信息,因为原数据信息里面才保存的这些领导是谁等等这些情况吗?哎,有多少个分区啊等等。啊等等这些情况,我们要找的是这样这样的一个东西啊,这样的一个一些东西啊,啊这是整个的一个需求啊,整个的一个思路,思路这块应该没有什么太大的问题,就是找领导加消费数据对吧,但是这个思路跟那个代码。就完全不成正不成正比了啊。
我来说两句