pig2 发表于 2019-9-2 11:11:25

Flink CEP学习线路指导1:Flink CEP入门

本帖最后由 pig2 于 2019-9-2 15:35 编辑

问题导读

1.Flink CEP是什么?
2.Flink CEP可以做那些事情?
3.Flink CEP和流式处理有什么区别?
4.Flink CEP实现方式有哪些?


Flink CEP在Flink里面还是比较难以理解的。有的老铁甚至以为是和Flink流式处理是差不多的。其实Flink CEP跟流式处理确实有相似的地方。但是Flink CEP处理的是流式数据,但是却并不是流式处理(datastream)。后面给大家详细讲解。

Flink CEP,有的大家甚至不知道CEP是什么?CEP在Flink未产生以前,已经有CEP,CEP本身的含义是复杂事件处理。那么它为什么可以处理复杂事件,这就跟它的原理有关系了。所以我们需要了解NFA,NFA是什么?它的含义是非确定有限自动状态机。我们明确它的概念是什么就可以了。后面同样也会给大家补充。

由于官网只讲了CEP的基础部分,因此我们需要给大家补充原理部分,基础(组成)部分,以及编程方面的内容。

也就是我们按照下面线路来学习:
1.首先认识Flink CEP
2.Flink CEP原理机制
3.Flink CEP编程
通过上面三部分,我们来学习Flink CEP。
1.认识Flink CEP

1.Flink CEP是什么?
Flink CEP一个复杂事件处理库,它和机器学习库是一样的,也就是Flink CEP是Flink的一个分支,跟机器学习是Flink的一个分支是一样的。下面是官网的截图,大家可以参考。


亦可参考官网:
https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/libs/cep.html
由于版本会更新,网址可能会失效,大家可以自己访问官网。
https://flink.apache.org/
然后找到对应的版本即可



2.Flink CEP的作用是什么?

我们知道了Flink CEP是什么,接着我们需要看Flink能干啥?
Flink CEP可以在事件流中根据我们的设定的规则,检测出有意义的事情,并尽快做出响应。比如银行卡盗刷,在几秒内或则几分钟内,在不同的地方多次刷银行卡,Flink CEP能及时的检测到,并预警通知,让用户及时知道,银行卡有丢失的可能。对于DDos攻击,我们同样根据设置的pattern【规则】,来检测攻击的ip地址。

3.Flink CEP有什么特点?

Flink CEP特点很有意思,比如我们查询数据库,我们的数据是静态的,也就是数据是躺在数据库的,我们查询条件是可以随时的变的。可是Flink CEP查询是固定的,也就是规则Pattern是固定的,数据却是流动的。


当然有些公司,由于对Flink CEP,有该规则Pattern的需求,所以把Flink CEP的Pattern做成可以修改的一种机制。但是总体来说,Flink CEP的规则一般来说是不会经常变化的。

对于规则或则Pattern是什么?大家根据下图可以有一个感性的认知,后面讲编程方面的知识,将会让大家看到Pattern的实现。

   


4.Flink CEP实现

Flink CEP通过什么实现?
官网亦提供了两种方式,如同Spark API和Spark sql,对于同一个功能,他们有两种不同的实现方式
1.Flink CEP API
2.Flink CEP SQL

1.Flink CEP API内容比较多一些,果我们全部看完下面文章后,我们关于Flink CEP的知识已经非常全面,并且你看网上的所有文章,都能看的懂,为CEP打下底子,还可以实现CEP程序,并且应用于实践。

1.什么是CEP以及量词的含义
通过这篇文章,我们懂了CEP是什么,以及CEP中量词的作用,量词更多的是我们对事件出现的次数的描述和表达。比如事件出现1次还是几次,还是事件是循环模式等。更多参考:
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27142


2.条件分类
CEP条件分类,跟我们的SQL分类是类似的,是对事件的过滤,可以通过where,or,until 等关键字,更多可参考
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27295


3.独立模式【Patterns】操作Pattern Operation
CEP有独立模式和组合模式,独立模式操作同样有过滤,条件组合,停止条件,亦有optional() 表示,这个事件可以发生,也可以不发生,greedy()则事件进入循环模式,表示事件尽可能重复,更多参考
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27300


4.组合模式、循环模式介绍
对于组合模式讲的事件组合之后的关系,比如事件之间如何严格指定,第一个事件之后,必须发生第二个事件,比如我们这里以登陆为例,如果一个ip地址登陆失败了,则第二次,这个ip地址又失败了,则输出,这是一个严格的连续,使用next表示。如果第一个事件之后,第二个事件并没有发生,而是在第三个事件的时候发生。我们可以使用followBy(),这是宽松连续性。更多参考:
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27308


5.组模式以及组操作【api】
对于组操作,对于begin是定义模式开始,对于next,followedBy,followedByAny则是添加新模式,并且定义了相邻模式的关系。这里可以让我们读懂CEP模式的程序,更多参考
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27311


6.匹配跳过策略【api】
匹配跳过策略的应用场景,如果多个匹配成功,可能我不需要这么多,按照匹配策略,过滤下就可以。文中介绍了跳过匹配策略的4种类型,更多参考
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27334


7.模式检测
仍然可以使用旧样式API,如select / flatSelect,但是在Flink1.8中引入PatternProcessFunction。CEP中,在PatternStream上调用select或flatSelect来获取某个模式下匹配到的事件来实现我们的业务逻辑。更多参考
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27335


8.CEP库中的时间、例子、版本说明
Flink中有对于延迟事件的处理,CEP中也有这方面的考虑,更多参考
http://www.aboutyun.com/forum.php?mod=viewthread&tid=27337

看完上面,我们可以参考一些案例
Flink: CEP实现空气质量检测
https://www.aboutyun.com/forum.php?mod=viewthread&tid=27487

2.Flink CEP SQL
对于Flink CEP SQL是官网后期添加的,当前版本Flink1.9,已经发展的很不错了。下面关于Flink CEP SQL仅供参考

彻底明白Flink系统学习29-1:【Flink1.7】流概念之模式检测
https://www.aboutyun.com/forum.php?mod=viewthread&tid=26674

彻底明白Flink系统学习29-2:【Flink1.7】流概念之模式检测
https://www.aboutyun.com/forum.php?mod=viewthread&tid=26688

彻底明白Flink系统学习29-3:【Flink1.7】流概念之模式检测
https://www.aboutyun.com/forum.php?mod=viewthread&tid=26694


彻底明白Flink系统学习29-4:【Flink1.7】流概念之模式检测
https://www.aboutyun.com/forum.php?mod=viewthread&tid=26695

4.Flink CEP与DataStream对比


虽然我们可能看了不少的内容,可能很多人的依然有疑惑,Flink CEP处理的是流式数据,DataStream处理的也是流式数据,那么他们到底有什么区别?

我们可以看到Flink CEP和流式处理:
CEP:更着重是在流式数据中查找,也就是对源数据不做处理,只是在数据中查找。
流式处理:更着重是对数据的加工和处理。一般不会在数据中去查找数据。
比如下图,我们有流式数据如下:
1 2 3 4 5 6 7 1 2 2 3
经过流式处理数据map都加1,
这时候流式数据处理为:
2 3 4 5 6 7 2 3 4 4


如果是CEP,则为:从源数据中查找匹配:123
1 2 3 4 5 6 7 1 2 2 3

于是我们找到匹配:
1 2 3

1 2 2 3
123

上面我们就可以看到他们的不同,当然可能因为我们对于CEP查找匹配还不够了解,那么我们可以继续往下学习。

Flink CEP图
https://www.aboutyun.com/data/attachment/forum/201909/02/094146ip0ugptgl9t9e9eu.png

Flink streaming图





上面其实只是让我们了解了Flink CEP,后面将会给大家介绍Flink CEP原理以及编程。


以上内容部分录制视频:
链接: https://pan.baidu.com/s/1OgXlSEg9vFdugzhmjEgYHg 提取码: 96cv

加入About云知识星球或则VIP可以免费获取Flink CEP更新视频。

About云 VIP会员套餐介绍
https://www.aboutyun.com/forum.php?mod=viewthread&tid=27305

About云:知识星球
https://www.aboutyun.com/forum.php?mod=viewthread&tid=26737




YTP520YTP 发表于 2019-9-8 20:15:26

666666666666
页: [1]
查看完整版本: Flink CEP学习线路指导1:Flink CEP入门