00:00
好,关于卡不卡这个生产者跟消费者,还有存储这一块啊,它的一个理论我们就讲完了,那剩最后一个啊,他卡卡当中呢,还有一个事物,那这个事物是干什么事的呢?是这样的,因为我们之前聊过这个。密等信我不知道大家还有没有印象对吧?这块呢,密等信它只能解决我们所说的单次绘画内的一个问题啊,单词绘画类的一个问题,那如果说他出现了这样的一个情况呢。啊,出现这种情况,假如说我生产者发送数据,发送数据对吧?啊首先呢,我们聊一个分区的。啊,假如说当前我们只有一个分区往里写,正常的这个不挂掉是不是都是OK的,它能保证我们exactly按次啊,精准一次性啊,精准一次性,但是如果说这个produce换掉了,它这个是不是就不能保证了,这个之前我们聊过,突然还有一个问题来,如果挂掉了,还有一个问题很严重啊,就看一下,如果说我当年这个深山者发网的这个主题啊,不是刚才我们所说的一个分区,而是三个分区。
01:11
而是三个分区,而是三个分区来看一下,那这个时候呢。我有假如说30条数据吧,这十条这十条这十条对吧,好,这十条写成功了,这十条也写成功了,写它的时候生产者这边挂掉了,是不是这块就失败了。对吧,那当我们生产者重启的时候,它是不是应该把这一套都干什么?去重新发送一次。重新发送一次,而且你一定要注意的是,那个同学说重新发送一次,我不是有幂等信来保证这个数据不重复吗?就等于这30条,最终呢,只写入一次,错了,我挂掉了,现在的挂掉了,重新启动是不是PID就变了呀?一旦PID发生了变化,你刚才的这十条跟我现在发生的这十条,虽然你知道是重复数据,但这用卡帕机群来说,他知道吗?就相当于你主键不一样了,对吧,我认为这个数据就是不是同样的数据啊,所以呢,它又写入一次,所以保证这一块呢,这个分就重复了,这个分值重复了,而它又是什么,又是好好的,又没有重复,那这种问题就严重了啊,保多个分区之间数据完全不一样,所以在0.1版本还是同样的,我们刚才所说的事物那个密等性是不是也一样的,在0.11版本引入的这个事物也是0.11版本引入的啊,他说同时引入的啊,他是同时引入,由我们事物来保证可以跨分区跨绘画级别的一个什么。
02:40
Exactly once啊,它是怎么做的呢?大家想一想刚之前我们所聊的幂等性这个问题。它是不用主见来保证的,那同样的,如果说我们能保证写到卡巴卡整个集群当中也有一个唯一主见的话,是不是也就能做到这个事情,而且大家同时还有还有一个问题,那此时这个主件就类似于这个PID类似的一个东西,对吧?啊类似假如可能不叫PID,可能叫其他的一个内容,那这个东西能是produce启动之后去找去申请,然后brook随机给一个吗?你说这样能不能做到跨快放?
03:20
是不是不能啊,如果说你这个每一次都去申请重新给的话,那你挂掉之后,你违建这个东西不就变了吗。对吧,啊所以呢,这个东西它是由干什么呢?客户端自己去给定的。啊,假如说第一次启动的时候,我们来看一下,哎,这里边呢,有个什么produce事物,Consumer事物,其实它呢,我们很少提,我们更重要的是了解一下它啊,那我看一下,哎,说需要引入唯一全局唯一的一个传3ID,就事务ID是吧?啊这个ID呢,注意一定是客户端给的啊,也就是说这个地方呢,是客户端传递对吧,不像我们之前那个producer ID啊,不是broke给的,对于客户端,对于用户呢,操作用户来说是透明的啊,你是无感知的,但是这块呢,一定要用户给,因为用户从代码,假如说代码当中传一个AA进去了,那你挂掉了,你重启之后,你是不是还是AA呀。
04:18
对吧,这样就能保证我们全局唯一,所以第一个问题诶,在需要有一个这个内容需要有一个同时呢,这个是客户端给的啊,客户端给的同时你生产者这块启动之后,生产者ID呢,还是要去跟这个东西进行绑定的。啊,根这个内容进行绑定的,绑定的,那绑定之后呢,就可以将这个内容呢,写到博课里面去保存啊,博客里保存,假如说我produce挂掉了,挂掉了我是不是重新去申请一个pip啊,这个时候不是,如果说你先挂掉了,不是第一次就不用重新申请,拿着你客户端赋予的传三个ID去找拿一下什么producer ID啊producerd这样就能保证我们producer挂掉了,也能够去重新获取到什么。
05:07
刚才的那个produce ID,那结合我们之前所说的单分区里面的一个幂等性,这样是不是即使我们即producer重启呢?是不是也能保证我们那个幂等性,那既然你能保证幂等性的一个问题,是不是就实现了,加上我们ACD等于负一叫至少一次,是不是就能实现精准一次?对吧,啊,实际上呢,它就多了一个ten second ID啊,就是唯一键啊,这个东西来保存的啊保存的来来看一下,如果说他挂掉了produce呢,就通过。TRANS3个人考这个呢,是由于因为你引入了一个这个TRANS3人ID,所以有一个人要去维护,他引入了一个新的组件叫TRANS3个人考啊触发器协调器对吧?啊,做了一个干活的一个事情的啊,然后呢,他就找他去交互的传三个ID的一个状态信息啊,态信息去做恢复用的,这块呢,我们注意是他挂到去做恢复的啊啊做恢复用的啊,那这块呢,是我们所讲的produce的一个事物,其实它还是解决到跟我们密等性一样的一个问题,对吧?啊,但是幂等性呢,只能解决单会画单分区的一个问题,而引入了一个事物,结合我们之前所说的一个幂等性,那这块呢,我们可以跨规划跨分区做到精准一次性的一个写入啊,那下来还有一个消费者的一个事物,其实刚才提到这个事物的时候我就说过了,我们很少提这个事情。
06:32
为什么呢?那消费者事物同样的,它保证的呢,是精准一次性消费啊,精准一次性消费,但是呢,有一个问题。对于消费者,我们所知道他是不是要维护一个offset呀。对吧,他接着上一次消费,但是有一个问题在于我们消费者这块啊,这个ET虽然我上一次写到100了,但是我手动给他改一下,我改到十。
07:03
那你是不是十到100G之间的数据又重复去消费的一个问题啊,对吧,又重复消费了,所以呢,这一块的一个事物,我们很少去体验啊体验因为它并不能保证,因为这边说了,对于消费者而言,事物的一个保证相对较弱啊,相对较弱,假如说有同学说的是,呃,这样我这个消费者呢,我也不改他这个ET,就让他自己去接着去消费呗,这个时候也有问题,也有问题,问题在哪呢?因为我们消费者消费数据是不是一个批次一个批次消费的,这个没有问题吧,好,假如说当前你消费的100条数据。消费100张数据,它是跨了这个S的。假如说它已经跨了这个sinal,也就是说我们知道SIN1片一片的,对吧,里边这个地方呢,是一到100万,这个呢,是1000001条到200万这个数据,假如恰好你这100条数据,这个是我包裹的是999999,正好跨了两个S。
08:05
啊,跨了两个三分的,而且我们知道不同的一个三分的一个生命周期是不一样的,它是我们所所讲的默认是保留七天,恰好你消费完之后。你消费完之后,他到了七天,他是不是就删掉了。然后你这个事务又没有完成,也就是说你只是消费,但是呢,消费过去之后,处理过程当中发现失败了,你是不是应该把这个数据重重新读一次,但是你现在能读到吗。是不是就读不到了呀。对吧,啊读不到老,所以呢,消费者这块的一个事物啊,我们很少去聊他的一个事情,他其实就是解决什么问题呢,因为圣产者的事物就保证我们数据精准,一次性的写到我们卡玛集群,而消费者这边的收入呢,就保证我们什么消费者消费的数据呢,是精准一次的啊,只消费一次啊只只消费一次,但是呢,其实消费者他本身由于他这一个情况比较特殊,所以他这个事物我们很少去聊这个事情,所以呢,大家要注意,在面试过程当中,很可能就问问这个事物,那你主要跟他说的是什么,对伸展者这边的事物啊,而且同时要结合着之前我们所讲的那个密度性来说,它到底解决的是什么问题啊,两个结合起来解决的是精准。一次性写到我们。
09:27
开发集群同时加上事物之后,它能保证跨分区和什么跨会化级别的。
我来说两句