一、Flink CEP
### --- FlinkCEP
~~~ CEP 即Complex Event Processing - 复杂事件处理,
~~~ Flink CEP 是在 Flink 中实现的复杂时间处理(CEP)库。处理事件的规则,被叫做“模式”(Pattern),
~~~ Flink CEP 提供了 Pattern API,
~~~ 用于对输入流数据进行复杂事件规则定义,用来提取符合规则的事件序列。
~~~ Pattern API 大致分为三种:个体模式,组合模式,模式组。
### --- Flink CEP 应用场景:
~~~ CEP 在互联网各个行业都有应用,例如金融、物流、电商、智能交通、物联网行业等行业:
~~~ # 实时监控:
~~~ 在网站的访问日志中寻找那些使用脚本或者工具“爆破”登录的用户;
~~~ 我们需要在大量的订单交易中发现那些虚假交易(超时未支付)或发现交易活跃用户;
~~~ 或者在快递运输中发现那些滞留很久没有签收的包裹等。
~~~ # 风险控制:
~~~ 比如金融行业可以用来进行风险控制和欺诈识别,
~~~ 从交易信息中寻找那些可能存在的危险交易和非法交易。
~~~ # 营销广告:
~~~ 跟踪用户的实时行为,指定对应的推广策略进行推送,提高广告的转化率。
二、基础
### --- 定义
~~~ 复合事件处理(Complex Event Processing,CEP)是一种基于动态环境中事件流的分析技术,
~~~ 事件在这里通常是有意义的状态变化,通过分析事件间的关系,利用过滤、关联、聚合等技术,
~~~ 根据事件间的时序关系和聚合关系制定检测规则,持续地从事件流中查询出符合要求的事件序列,
~~~ 最终分析得到更复杂的复合事件。
### --- 特征
~~~ # CEP的特征如下:
~~~ 目标:从有序的简单事件流中发现一些高阶特征;
~~~ 输入:一个或多个简单事件构成的事件流;
~~~ 处理:识别简单事件之间的内在联系,多个符合一定规则的简单事件构成复杂事件;
~~~ 输出:满足规则的复杂事件。
### --- 功能
~~~ CEP用于分析低延迟、频繁产生的不同来源的事件流。
~~~ CEP可以帮助在复杂的、不相关的时间流中找出有意义的模式和复杂的关系,
~~~ 以接近实时或准实时的获得通知或组织一些行为。
~~~ CEP支持在流上进行模式匹配,根据模式的条件不同,分为连续的条件或不连续的条件;
~~~ 模式的条件允许有时间的限制,当条件范围内没有达到满足的条件时,会导致模式匹配超时。
~~~ # 看起来很简单,但是它有很多不同的功能:
~~~ ① 输入的流数据,尽快产生结果;
~~~ ② 在2个事件流上,基于时间进行聚合类的计算;
~~~ ③ 提供实时/准实时的警告和通知;
~~~ ④ 在多样的数据源中产生关联分析模式;
~~~ ⑤ 高吞吐、低延迟的处理
~~~ # 市场上有多种CEP的解决方案,例如Spark、Samza、Beam等,但他们都没有提供专门的库支持。
~~~ # 然而,Flink提供了专门的CEP库。
### --- 主要组件
~~~ Flink为CEP提供了专门的Flink CEP library,
~~~ 它包含如下组件:Event Stream、Pattern定义、Pattern检测和生成Alert。
~~~ 首先,开发人员要在DataStream流上定义出模式条件,
~~~ 之后Flink CEP引擎进行模式检测,必要时生成警告。