《Flink 实战与性能优化》—— Flink CEP 简介及其使用场景

第六章 —— 扩展库

Flink 源码中有单独的 flink-libraries 模块用来存放一些扩展库,比如 CEP、Gelly、Machine Learning、State Processor API。本章将分别介绍这几种扩展库以及如何应用在我们的项目中。

Flink CEP 是一套极具通用性、易于使用的实时流式事件处理方案,它可以在实时数据中匹配复杂事件,用处很广,本节将带大家了解其功能和应用场景。

6.1.1 CEP 简介?

CEP 的英文全称是 Complex Event Processing,翻译成中文为复杂事件处理。它可以用于处理实时数据并在事件流到达时从事件流中提取信息,并根据定义的规则来判断事件是否匹配,如果匹配则会触发新的事件做出响应。除了支持单个事件的简单无状态的模式匹配(例如基于事件中的某个字段进行筛选过滤),也可以支持基于关联/聚合/时间窗口等多个事件的复杂有状态模式的匹配(例如判断用户下单事件后 30 分钟内是否有支付事件)。

因为这种事件匹配通常是根据提前制定好的规则去匹配的,而这些规则一般来说不仅多,而且复杂,所以就会引入一些规则引擎来处理这种复杂事件匹配。市面上常用的规则引擎有如下这些。

6.1.2 规则引擎对比

目前开源的规则引擎有很多种,接下来将对比一下 Drools、Aviator、EasyRules、Esper、Flink CEP 之间的优势和劣势。

Drools

Drools 是一款使用 Java 编写的开源规则引擎,通常用来解决业务代码与业务规则的分离,它内置的 Drools Fusion 模块也提供 CEP 的功能。

优势:

  • 功能较为完善,具有如系统监控、操作平台等功能。
  • 规则支持动态更新。

劣势:

  • 以内存实现时间窗功能,无法支持较长跨度的时间窗。
  • 无法有效支持定时触达(如用户在浏览发生一段时间后触达条件判断)。

Aviator

Aviator 是一个高性能、轻量级的 Java 语言实现的表达式求值引擎,主要用于各种表达式的动态求值。

优势:

  • 支持大部分运算操作符。
  • 支持函数调用和自定义函数。
  • 支持正则表达式匹配。
  • 支持传入变量并且性能优秀。

劣势:

  • 没有 if else、do while 等语句,没有赋值语句,没有位运算符。

EasyRules

EasyRules 集成了 MVEL 和 SpEL 表达式的一款轻量级规则引擎。

优势:

  • 轻量级框架,学习成本低。
  • 基于 POJO。
  • 为定义业务引擎提供有用的抽象和简便的应用
  • 支持从简单的规则组建成复杂规则

Esper

Esper 设计目标为 CEP 的轻量级解决方案,可以方便的嵌入服务中,提供 CEP 功能。

优势:

  • 轻量级可嵌入开发,常用的 CEP 功能简单好用。
  • EPL 语法与 SQL 类似,学习成本较低。

劣势:

  • 单机全内存方案,需要整合其他分布式和存储。
  • 以内存实现时间窗功能,无法支持较长跨度的时间窗。
  • 无法有效支持定时触达(如用户在浏览发生一段时间后触达条件判断)。

Flink 是一个流式系统,具有高吞吐低延迟的特点,Flink CEP 是一套极具通用性、易于使用的实时流式事件处理方案。

优势:

  • 继承了 Flink 高吞吐的特点
  • 事件支持存储到外部,可以支持较长跨度的时间窗。
  • 可以支持定时触达(用 followedBy + PartternTimeoutFunction 实现)

劣势:

  • 无法动态更新规则(痛点)

实时反作弊和风控

实时营销

实时网络攻击检测

6.1.6 小结与反思

加入知识星球可以看到上面文章:https://t.zsxq.com/nMR7ufq

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 第六章 —— 扩展库
    1. 1.1. 6.1 Flink CEP 简介及其使用场景
      1. 1.1.1. 6.1.1 CEP 简介?
      2. 1.1.2. 6.1.2 规则引擎对比
        1. 1.1.2.1. Drools
        2. 1.1.2.2. Aviator
        3. 1.1.2.3. EasyRules
        4. 1.1.2.4. Esper
        5. 1.1.2.5. Flink CEP
      3. 1.1.3. 6.1.3 Flink CEP 简介
      4. 1.1.4. 6.1.4 Flink CEP 动态更新规则
      5. 1.1.5. 6.1.5 Flink CEP 使用场景分析
        1. 1.1.5.1. 实时反作弊和风控
        2. 1.1.5.2. 实时营销
        3. 1.1.5.3. 实时网络攻击检测
      6. 1.1.6. 6.1.6 小结与反思