- 00:00 - 好,然后我们看一下这个第三章啊,其实前面这几个案例呢,带着大家都去做了一下,大家能感觉到,嗯,第一个上午呢,首先我们看了一下里边south China single,每一个呢都有很多种,对吧?我们之前有说过,上课的过程当中呢,不可能说所有的东西都都去用一下,那现在我们fair China没有讲,假如说晚上播一个播这个案例,把之前的那个memory China全部换成fair China能做吗?就是之前这个四个案例,我们都是用的memory channel吗?对吧,现在晚上假如说布置一个任务,说全部换成,或者说随便挑一个换成fair channel,自己能把这个事完成吗?可以吧,因为官方文档,其实你看服们的官方文档写的还是比较详细的,对吧?啊,写的还是比较详细的,你对照去做一下,应该是能搞定的,除非是有的属性看不太明白,没关系,因为他后面都有整个的一个介绍,如果说介绍看不懂的话,还有翻译吧,啊谷歌翻译啊,什么有道啊,就一起上就行了啊,总能把那个东西给他搞定,对吧。 
- 01:02 - 好,那其他的一些组件呢,我们就不多介绍了啊,不多介绍了,因为呃,介绍不完,说实话啊,介绍不完,那我们主要看一下还有其他的更深一些东西,包括它内部原理啊,就这个数据我们当时说了是用even来传的,到底这个怎么传的呢?对吧?啊,除了这个south China跟single,那在south他到底做了什么事,China到底做了什么事,以及在single当中他可能还要做什么事。对吧,啊,还有一些东西我们再介绍的来看一下,第一个from呢,它里边呢有事物,因为它是一个传输工具,所以它希望这个数据。尽量的能不丢吧,对吧,但是你想想看,它中间这经过了好几次,第一呢,South要把数据读过来,读过来之后它是不是要写给China,对吧,那single是不是又要从China里边取出去啊,里面有涉及到这么多环节,是不是任何一个地方都可能会干什么?丢数据对不对,那他其实他也考虑这个问题,所以呢,他在里边加了事。 
- 02:05 - 事物啊,而且呢,它整个的传输过程当中,三个组件有两个事物。也就是说China作为中间念,它跟source这边有一个事物,同时它跟think这边还有什么,还有一个事物啊,但是两个事物的名字呢,它不一样啊,首先呢,输入数据的输入端,什么from流处理,然后数据输据端,其实就是我们所说的那三个内容,对吧?Source China啊,Source China single啊,对接的那个内容啊,那首先呢数据源头。SOS,我们说的是从we部读数据进来了,不是他自己造数据吧,对吧?好,那web呢,还是同样的,跟官网的那个图一样,Web搜宝啊,我们现在知道了,除了这个端口,什么本地文件是不是照样可以读啊,而且本地文件呢,可以按文件夹,可以按单个文件,同时还可以按多个文件,对吧?诶有那个批量上传的也有呢,断点续传的啊,一条一条数据续传的是不是都有啊啊他都能够去做,OK,那这个当中呢。 
- 03:06 - 他呢,Source就是负责跟外面数据源打交道,他呢读数据啊读数据,然后在里边呢,把它封装成一个一个的事件啊在里边,因为读过来数据还是一条一条的,对吧,一条一条的,然后在里边呢,他去拗一个那个even的对象,但是even的它是一个呃接口啊,它一个接口,我们用的是它接口的一个实现类,那不管怎么样,它一定是一个什么。我说它是无论它是一个接口还是一个抽象类,你拗的是它这个实现类也好,还是它的一个继承子类也好,它这个对象,那我说是一个even,这个没有问题吧。对吧,啊,因为是它是负的也好,是接口也好,那我说它底层时间类的对象,就是他也没问题吧,啊没问题,OK,那这里边呢,他就会去一个那个even。那个even,然后这个时候他不是说直接将这个even就写给他China了,而是放在了一个。 
- 04:04 - 批量提高的。啊,皮上提交道OK这块呢,它就封装了一个什么。十他先将这个数据啊,前面这一块呢,看一下叫负的数。因为这块呢,无论怎么说这个China它都是被动的。对,它是被动型的,也就是说无论我这里面不是要接收sources数据吗?同样的我还要把数据给C嘛,对吧,它都是被动的。这边呢,你是主动把数据给他干什么。推过来的,铺的进来的,而这一边呢,是你主动的去干什么,拉取的数据。啊,主动拉取的数据,也就是说对于China来说,它都是被动的,所以你看到第一个事物,我们看到叫什么。角处的事物,它里边呢,有一个。准备开始做这个数啊,将数据呢写到临时的缓冲句。啊,因为这两个东西啊,Source呢,它要传输,传输的数据它也放在内存吧,不是说只有memory channel才使用内存啊。 
- 05:07 - 注意它,就算我们用的是fair,拆它不用内存吗?他还是会用内存吧,啊,只不过说最终我们这个事件它是要落到磁盘的,对吧?啊落到磁盘的他肯定会经过内存,那你想看这个数率怎么到400啊,内存写出去对吧?啊是这意思,你这个要注意一下哦,他先放到这个什么。Put list里边啊list,然后就执行这个多commit这个方法,准备干什么?提交,但是如果不好意思,诶这个地方呢,IDFS,假如说此时IDFS这边呢,机器比较慢。整个要跑很多的一个任务,它读写速度很慢,那整个C写出速度是不是就慢,写出速度慢,这边拉取的速度是不慢,好这个里边数据是不是有可能会。满了满了之后,这个时候还能提交过去不能了,对吧,因为不好意思,我买了你提交过来不会把我干崩了吗。 
- 06:06 - 对吧,啊,提交提交不过来,提交不过来那怎么办?都抗的做校验的时候不行,准备提交的时候提交不过去干什么。提交提交不了,提交不了,因为注意已经做了提交了。但是遇到异常了,因为你这边满了,是不是因为满了就要做什么事。回滚roll back啊做回滚,那这个数据呢,还乖乖的放在什么list里边等着啊,List里边等着,如果说长期这边处于挂掉的状态,最后这边负list也是集合吧,一个集合也在内存当中,很有可能最后就导致什么。崩了对吧,啊,整个的内存溢出了,崩了,因为它存不下了,实在存不下了,因为生产出去一层一层的来的呀,对吧?啊,他就崩了啊就这意思,这个是一层是我啊他呢是完全的保证sources这边接收到数据封装帧事件之后,如果说写入成功了。 
- 07:04 - 那事物就完成了,对吧?啊,这个事情就完成了,如果说一旦写入失败,不好意思,我这代码回滚还回来啊,重新提交要做重新提交好,假如说现在通过我们前面这个铺的数,已经将数据放到了这个拆单里边,接下来就是这边。这边通信,这边通信呢,它同样的也有一个什么。事物,而这面事物就不叫put事物了,因为我刚才说了,对于China来说,它是什么被动的,你不能叫put,如果说China是主动的,就是什么。Put特事500啊,就put特事物,而此时这个事物呢,叫take数,它自己去拉取数据的,对吧?啊获取数据的叫take事物,OK,同样的这个里边就一样了,其实跟这个一样的。啊,他去多take,然后呢,这边有一个。Take list,它同样的也是一个什么集合啊,写到连缓冲去,然后由C什么数据写出去啊,看能不能写出去,哎,准备提交,提交不了,那这个数据只能干什么。 
- 08:06 - 回滚又回滚吧,回滚,注意这个take list在哪?回顾着在China里面啊,要注意啊。在China这还没有,也就是说think这边拉取数据拉取失败了。拉取失败了,因为事物没完成嘛,拉取失败了,失误没完成,他就要做什么,相应的回滚啊,相应的回滚,OK,那这个当中呢,你要记得的东西啊,你要记得东西,呃,首先必须要记得的两个事物要记得。分别名字一个叫,一个叫take,这个是要记得的,第二个这个东西。一个是put list,一个take list,这两个记住,当然如果说你还能记得更多什么里边先做do put的方法,走do的方法,之后呢,准备提交的时候走do密的方法,这个你要记得更好啊,面试的时候去聊一聊就OK了,基本上呃,刚才我们所讲的你要聊出来有两个事,一个put事,一个take事物,它是先将数据啊,假如source跟channel进行通信的时候,先将数据写到这个put list里边,然后说提交,提交失败但异常了,对吧?这个不一定非得是买了。 
- 09:15 - 假如说这个当中正好那个内存不足,或者其他的一个什么,这个内存不足,第一个我们说的它容量主外内存不足,容量满了内存不足,或者说你在执行整个任务过程当中,整个的机器此时性能比较低,它还是不能工作,这也有可能吧,不一定,我刚才只是举了一个例子,说这边满了,这只是一个例子啊,它当中是不是有很多原因导致他失败呀,对吧,很多原因,只要他失败了,他都要做什么。回滚啊,都要做回滚啊,是这个意思,好同样的第二点就是China跟sing进行通信的时候,它这边呢,有一个什么。Take,是我啊。先将数据放到。Take list里边,而think从这个take list里边来拉取数据啊,从那个take list,如果说拉取失败,这个数据将要还要做什么回滚啊,回滚到哪啊? 
- 10:06 - 到China里边啊,还是放到China里边这个意思,这个要注意一下啊,啊,这是两个我们所说的一个事物,大家了解一下后面呢。我们在自定义组件的时候,我们能看到有一些东西是能看到的,因为我们后面把自定义嘛。对吧,啊,自定义的时候啊,这个呢,从事物我们都要去写这个内容,因为你自己写的时候,是不是也要把人家事写上啊。那你自定义的,人家本来所有的内容,它自己的一个组件,什么source啊,China think啊,这边都有自己的一个事物,然后你自定义的时候没有输入,那你自定义的这个东西是不是不安全啊,对吧?所以我们在自定义的时候,你要写什么事五啊,也要把这个事物给它带出来,而且这个事物它其实已经封装好了,我们叫调相应的方法就行了,能听懂啊,因为因为人家已经把那个even的S这些东西,它我们写自定义的时候,是不是要继承它这个类啊。 
- 11:00 - 啊,它里面就自带的这种事物的一个属性在里头,所以我们只需要简单的去调人家的一个方法就行。事物你们应该之前写过是吧,就MY那个事物对吧?啊都是其实都差不多啊,都差不多OK,这是我们所讲的的一个事物性。 
我来说两句