什么是Flink CEP (1)

2020-04-14 09:15:02 浏览数 (1)

复杂事件处理(CEP)既是把不同的数据看做不同的事件,并且通过分析事件之间的关系建立起一套事件关系序列库。利用过滤,聚合,关联性,依赖,层次等技术,最终实现由简单关系产生高级事件关系。

复杂事件处理当前主要用于信用卡欺诈检测、用户风险检测、设备故障检测、攻击行为分析等领域。

Apache Flink中基于DataSet Api提供了FlinkCEP的组件栈,专门应用于复杂事件处理方向。Apache Flink另外也为机器学习方向提供了Flink ML和图计算方向的Gelly组件栈。今天主要来看一下Flink CEP。

基本概念

  1. 事件定义
    • 简单事件 简单事件的特点基本上是唯一事件,可以简单的通过数据就可以观察到事件。而不存在与需要查看多个事件之间的关系而能够判定的事件规则。 例如某一指标发生次数超过一定阈值后则进行告警。直接通过查询一定时间范围内该事件产生的次数即可进行计算。并且输出结果。
    • 复杂事件 基于简单事件的组合而成复杂事件,复杂事件相对于简单事件就不是唯一的事件。它通过处理多个事件组成,复杂事件当特定的事件流发生时才会进行某些动作的触发,通知、告警、触发其他事件等。
  2. 事件关系 只有复杂事件才会有事件之间的关系,复杂事件之间的关系包括多种类型。例如有时序关系、聚合关系、层次关系、因果关系、抽象关系或依赖关系等。
    • 时序关系 事件与事件之间都会存在时序关系,例如:A事件发生时B事件的状态随A事件的改变而改变。
    • 聚合关系 个体事件的聚合关系,例如当A事件的次数发生30次以上则触发告警信息。
    • 层次关系 例如A事件是B事件的父类,从A类事件到B类时间是具体化的。
    • 依赖关系 例如A事件的产生依赖与B事件的触发。否则不会触发A事件。则说明A事件依赖与B事件的触发。
    • 因果关系 例如B事件的触发是因为A事件的状态发生了改变,则A的改变则为因,B的触发即为果。有因才有果!
  3. 事件处理 复杂事件处理目的是通过相应的规则引擎来对实时数据做相应的数据处理策略。这些策略包括了推断、根因、决策、预测等内容。
    • 事件推断 主要用于事件状态之间的约束关系,通过一部分的状态从而推断出另一部分的状态。
    • 事件根因 当有了结果之后,并且知道初始状态,可以查到造成该结果的某个具体动作的原因。
    • 事件决策 得到结果的状态,知道初始状态,从而决定要执行的操作。
    • 事件预测 该种情况知道初始状态,以及要发生的动作,预测未知的结果。

CEP常用场景

Flink CEP能够利用的场景较多,在实际业务场景中也有了广泛的使用案例与经验积累。CEP常用与网络攻击检测、风控模型、信用卡欺诈等。

  • 网络攻击检测 基于实时的数据流来进行网络攻击检测。例如常见的拖库行为产生的突发SQL扫描或网络带宽突增均能通过CEP来进行判定。 例如常见规则:当带宽突增、数据库资源用量突然变高时直接进行预警。
  • 网络信贷 基于CEP构建的信用卡欺诈或当前的互联网贷款等。之前的贷款审批流程都是天级,当前的互联网贷款都是小时级甚至分钟级放款。而基于此基本都是通过CEP来实现用户的信用评分。例如实时导入用户的相关信息, 年龄,身份证号,芝麻信用分等等。规则或为: 年龄 < 65 ,有房产 ,无不良债务等

0 人点赞