00:00
这里边再给大家把这个弗link的主要特点做一个总结吧,里边给大家总结几大特点,首先第一个就是事件驱动。之前驱驱动,这个就是结合我们前面讲到的传统的事件处理的这种。数据处理架构,呃,大家看非常类似对不对?这里边link的特点呢,只不过就是说我们并不局限于是跟用户那边去做交互了,并不是一个业务处理后台了,而是可以怎么样呢?可以把它作为数据管道的一部分,这里边流逝的数据事件流进来,我们摄入之后,根据本地的状态快速的进行响应,进行处理,得到结果可以去做一个动作,可以去返回给用户做一个操作,也可以直接再写入到我们的数据流里边,用下游去做操作。来看到这个就非常的方便啊,应用场景也会更多。
01:03
另外还有就是。对于他。故障恢复的这种保证,是不是可以用一个远程的存储结构存储系统去保证这一点啊,保证它我们的这个状态如果要丢掉,发生故障的时候,可以从远程保存的这个内容里面去做恢复。啊,传统的话,我们是每一次操作都要去读写数据库,这个肯定就会慢很多。这里面平常的操作是不是只要用本地状态就可以了,相当于只是内存中的一次调用。这是林肯的特点啊,事件驱动。第二个主要特点。至基于流的世界观,这个就把这个话好像说的又又大一点了啊,就上升到世界观的高度了,呃,这个其实主要说的是什么呢?这就是要跟Spark哎,要去做对比了。他可能会想到,我们说对于数据处理而言,有两种截然不同的处理方式,一种是流式的处理方式,一种是P式的处理方式,那这个如果要是上升层次的话,那就相当于这就是不同的看待问题的方式,看待世界的方式就是世界观的不同了。对于flink而言。
02:23
他认为什么呢?一切都是零。对,一切皆是流对吧,那么我们所谓的那些离线的数据,我们一批一批的数据,他认为是什么呢。他认为也是流,只不过这个流是一个,哎,就是有界的流,在这里区分了有界流和无界流,所以大家回忆起来官网上的那个定义,他不是说处理的就是有界和无界的数据流吗?所以就是这么定义出来的。所以我们这里边看,如果说是一个有介流的话,那是不是就相当于有开始有劫持,这是不是就相当于是一批数据啊。
03:05
只不过对于这样的一批数据,他是不是也可以来一个就处理一个,来一个就处理一个,也可以做到这样的一个状态啊,最后我们可以在这个这一批数据截止的时候,统一去保证一下里边的这个正确性,所以flink它同时也可以做批处理。所以他也提供了批处理的一套API,他做批处理的思路其实还是基于流的,而是用流的思路去做批处理的。这就是这个Li的世界观,那与之对应,大家可能会想到Spark的世界观是什么呢?对,Spark里边的都是P,他即使是做流处理Spark streaming是不是相当于也认为它是P啊,只不过对你所谓的硫就只是很小的P嘛,你那个批次,每一批如果小到很小的时候啊,这个就变成硫了嘛,啊,这就是他们俩的不同,不同之处。
04:06
另外还有一个特点就是弗link给我们提供了不同的分层的API,这里面有一个这样图,大家可以看一下啊,主要就是这样的三层API。从上到下,越往下越底层,它就会越具体一些,然后它的表达能力就会更加的丰富,使用就会越灵活,但是掌握起来可能就会有点有点奇怪,对吧,就会觉得他这个,哎呀能干的事情确实很多,但是里面怎么那么编程习惯不太好适应,可能会有这种感觉。而越顶层越往上看的话,会越抽象,就会越好用一些,使用越方便一些,但是它可能能做的事情呢,就不像底层那么多,对吧,这三层API大家先做一个大概的了解啊,底层API所谓的process方式。
05:00
处理函数或者叫过程函数,这是最底层的,他在这里边能够访问到什么东西呢?能够去访问到当前的世界状态,还有时间。有相关的东西都能拿到。他能做的事情是最多的。它的再上一层,中间这一层是我们平常用的最多的一层API,就是data streamam API,当然了,如果要用P数的话,还有一套叫data set API,他们是同一个层级,基本上差不多,我们后续给大家做讲解的话,就会以这个data stream API做做示例啊,迭赛的API就不详细展开讲了。那么这里面主要做的操作是什么呢?就是基于流或者是基于窗口去做操作。而更上层那是做什么呢?大家会想到就是table API或者是CQ,就可以直接去操作一些表,直接去用CQ去做增山奶查这些操作啊。
06:01
这是大家比较熟悉的那种方式。除了前面提到的这三大特点之外,弗link还有一些其他的特点啊,这些特点也给大家简单的过一下哈,弗link还还有什么特点呢?它支持不同的时间语义。这个大家可以看到,它支持什么呢?支持事件时间even态和处理时间processing。那又是什么东西呢?所以大家会想到,在think里边,他对时间是有不同的理解的。不同不同的划分的,这个就比较有意思了,后面讲到的时候再给大家展开啊,另外它还有特点呢,它能够保证所谓的精确一次的状态一致性。One这个概念大家应该听说过,对吧?在Spark里边其实也是可以保证到这个ones的,但是可能要做的事情会很多很多。这个也能保证精确一次。
07:00
后面我们会给大家讲。另外显著的特点啊,非常明显的特点就是低延迟。它是什么级别的延迟呢?毫秒级别的延迟,而且低延迟的同时还能够保证高吞吐啊,每秒可以处理百万级的事件。另外就是可以与众多常用的存储系统去做连接啊,因为大家比较常见的那些数据库啊,还有大家这个经常用的,比方说这个HTSS啊,对,跟卡夫卡啊,跟其他的一些存储系统啊,都有相关的一些连接的方式。最后就是高可用,可以做动态的扩展,可以真正实现七乘24小时全天候运行,呃,它的特点还是非常多的啊,优势优点也非常的明显。这就是flink,大家先有一个直观的认识。最后呢,再给大家。
08:00
跟star stream做一个对比,我们再来做一个强调和总结。一个最大的区别,大家其实只要把这个理解透了,其实我觉得呃,就是已经很明显了,对吧,呃首先就是世界观都不一样吧,就是留跟VP的。那么link里边我们说它是一切都是流,例如果一切都是流的话,是不是就是标准的,大家看这个input来了之后,是不是就是来一个处理一个,来一个处理一个。没有问题的,这样的一个流式计算,对吧,这其实是我们更想要的流式计算。那SPA stream它所谓的流失计算是什么样呢?它其实是把来的所有来的数据是不是包装成了对一批一批,只不过是很小的V批,对吧,包装成这样的批次?对于Spark streaming而言,它的世界观就是如果说我把这个批次做的足够小的话,大家想足够小,那是不是来一个数据就是一批,那是不是就跟零处理就完全一样了?
09:13
所以其实在这个意义上,本质上他们其实是一样的,对不对。但是呢,他们还是会有一些差别,那差别就是Spark streaming。本质上从架构上来讲,是不是一定要有一个攒一批,然后把这个P这样的一个过程,对不对,是按批去处理的这样的一个过程,你本身它的延迟是不可避免的。所以宁可要更快,实施性要更好。这是一个最典型的特点啊,然后另外还有什么特点呢?数据模型不一样。大家知道Spark里面的模型是什么样的?对,主要就是RDD对不对,那streaming里面是什么样的呢?它的基本处理的这个数据结构。
10:01
对,它是stream啊,Stream里边实际上我们处理的又是什么呢?是不是也还是RDD啊,大家知道我们在里面去做处理的时候,还是fo r DD对吧,挨个拿出来去做计算的,所以本质上还都是RDD。而link,它的基本数据模型已经完全不一样了。它的数据模型是data flow。大家可能听说过谷歌的那一篇data flow那个论文,对吧?Link几乎就是完整的实现了那篇论文里面的内容。所以它是可以说是呃对data flow做了一个完整的实现。那么它的数据模型就是数据流和事件序列,所以往往有时候在做对比的时候呢,就是flink社区里边大家挺flink的这一派的人往往会说flink是。真实时,真正的粮食处理,而呃,SPA streaming有时候就会说他是对准实时,或者说它是一个伪实时,对吧?呃,当然这个就是社区里边有不同的争论,大家知道它的这个底层含义,它的特点就可以了。
11:10
最后还有一个是运行时的架构也不一样,那么Spark大家知道它是P,本质上还是PG算法,所以它是要划分不同的stage的,必须要一个Switch完成之后才可以算下一个对不对,这个过程当中,其实我们分布式的这个任务,它的这个病情,他的这个处理的效率相对来讲是有一点低的,大家想是不是这样?有一点浪费性能的,因为你必须要等一个C完全都结束嘛。那是什么样的呢?它是标准的data flow这种执行的模式。他就是跟state是没关系的,他只跟事件相关,这个事件在当前这个任务完成之后,马上发到下一个。节点去执行,而同时前面别的数据是不是还可以停留在前面的阶段去处理啊,那他们互相之间互不影响。
12:05
之后我们再给大家讲到运行式架构的时候,大家可能就会对它有更深刻的理解。所这就是in和Spark streaming的一些不同,大家可以做一些基本的一些了解啊。这是我们这节课的内容。
我来说两句