Flink CEP 入门

1.复杂事件处理

       大数据应用领域存在业务逻辑非常复杂的应用系统,比如,一个应用要检测特定顺序先后发生的一组事件,对事件组进行分析或报警提示,若使用SQL 或者DataStream API 处理这类应用,过程相对来说比较复杂。例如,针对用户登录的应用场景,需要检测用户连续登录失败事件的发生。一次登录失败可以定义为一个事件,两次登录失败就可以定义为两个事件的组合。电商系统需要检测用户“下订单和支付”的行为,这也可以定义为组合事件,即“下订单”和“支付”两个事件的组合,这两个事件之间存在着时间先后的关系,“下订单”事件在“支付”事件之前完成,电商应用系统可能还会约定“下订单”事件和“支付”事件的时间限制,也就是说,如果“下订单”后超过了约定的时间没有“支付”,“支付”就失效了。类似这样多个事件的组合称为“复杂事件”。对于复杂事件的处理,由于涉及事件的严格顺序,有时还有时间约束,很难直接用FlinkSQL 或者DataStream API 来完成,即使使用这些API 可以实现复杂事件的处理,实现的复杂度也会非常高,程序的可维护性也相对比较差。对于这类复杂事件的处理,Flink 提供了专门用于处理复杂事件的库CEP,通过使用CEP 提供的API 进行开发,可以比较容易地解决这类问题。

2.CEP 简介

Flink CEP 是Flink 提供的用于处理复杂事件的库。CEP 是针对流处理而言的,分析的是低延迟、频繁产生的事件流,主要目的是在无界流中检测特定的数据组合,以便进行后续处理。“复杂事件处理”可以在事件流中检测到特定的事件组合并进行处理,例如,“连续登录失败”或者“订单支付超时”这样的事件组合。处理过程是把事件流中的一个个简单事件,通过一定的规则匹配组合起来,构成“复杂事件”,然后基于这些满足规则的一组组复杂事件进行转换处理,得到结果并输出。复杂事件处理的流程可以分成如下3 个步骤

(1)定义复杂事件的一个匹配规则

(2)将匹配规则应用到事件流上,检测满足规则的复杂事件。

(3)对检测到的复杂事件进行处理,得到结果并输出。

图 7-1 展示了复杂事件处理的示意图。输入的事件流是不同的几何形状,如圆形、矩形和三角形。然后定义匹配规则“在圆形后面紧跟着三角形”,现在将这个规则应用到输入的事件流上,就可以检测到3 组匹配的复杂事件,它们构成了一个新的“复杂事件流”,事件流中的数据就变成了一组一组的复杂事件,每个事件组合都包含了一个圆形和一个三角形。接下来就可以针对检测到的复杂事件进行后续处理,例如,输出一个提示信息或者报警信息。

3.模式

基于Flink CEP 开发程序的第一步是定义事件的匹配规则,这个匹配规则叫作“模式”(Pattern)。模式主要包括如下两部分内容。

● 简单事件的特征。例如,以上提到的不同形状的几何图形,不同的形状就是不同的特性。

● 简单事件之间的组合关系。事件之间的组合关系主要是指“近邻关系”,也就是说,一个事件跟着另一个事件出现的情况是否存在。“近邻关系”可以定义为严格的近邻关系,也可以定义为宽松的近邻关系。严格的近邻关系是指两个事件之间不存在任何其他事件,非严格的宽松的近邻关系是指两个事件之间允许存在其他事件,两个事件只需前后顺序正确就可以。除了近邻关系以外,还可以扩展模式的功能,例如,匹配检测的时间限制;每个简单事件是否可以重复出现;对于事件可重复出现的模式,遇到一个匹配模式后是否跳过后面的匹

4.Flink CEP 应用场景

Flink CEP 主要用于实时流数据的分析处理。Flink CEP 可以帮助在复杂的事件流中找出那些有意义的事件组合,进而近实时地分析判断、输出信息或报警。Flink CEP 在企业项目的风控控制用户画像运维监控中都有非常重要的应用。

● 风险控制:设定行为模式对用户的异常行为进行实时监测。当用户行为符合异常行为模式,例如短时间内频繁登录失败、在电商网站大量下订单却不支付,就可以向用户发送报警提示,可以有效地控制用户和平台的风险。

● 用户画像:利用预先定义好的模式,对用户的行为轨迹进行实时跟踪,从而检测出具有特定行为习惯的用户,画出相应的用户画像。基于用户画像可以进行精准营销,即向行为匹配预定义规则的用户实时发送相应的营销推广。

● 运维监控:对于企业服务的运维管理,可以利用CEP 灵活配置多指标、多依赖来实现更复杂的监控模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/912713.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS教程(三)- CSS 三大特性

1. 层叠性 介绍 多组CSS样式共同作用于一个元素,就会出现 覆盖(层叠) 另一个冲突的样式。 层叠原则 样式冲突:遵循就近原则(哪个样式离结构近,就执行哪个样式) 样式不冲突,就不会重…

粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测

粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测 目录 粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现PSO-BiTCN-BiGRU-Attention粒子…

Unity引擎智能座舱解决方案

作为全球领先的 3D 引擎之一,Unity引擎为车载3D HMI提供全栈支持。即为从概念设计到量产部署的整个 HMI 工作流程提供创意咨询、性能调优、项目开发等解决方案,从而为车载信息娱乐系统和智能驾驶座舱打造令人惊叹的交互式体验。 专为中国车企打造的HMI引…

ctfshow(316,317,318)--XSS漏洞--反射性XSS

反射型XSS相关知识 Web316 进入界面: 审计 显示是关于反射性XSS的题目。 思路 首先想到利用XSS平台解题,看其他师傅的wp提示flag是在cookie中。 当前页面的cookie是flagyou%20are%20not%20admin%20no%20flag。 但是这里我使用XSS平台,…

python 爬虫 入门 六、Selenium

Selenium本来是一个自动测试工具,用于模拟用户对网站进行操作。在爬虫领域也有其用处。 一、下载安装Selenium及附属插件 pip install Selenium 安装完成后还需要安装一个浏览器驱动,来让python能启动浏览器。 如果是Edge或者其他基于Chromium的浏览器…

Linux环境基础和基础开发工具使用

文章目录 一、yum软件管理器1、包管理器2、yum3、apt4、安装源 二、编辑器vim1、各种模式2、打开时直接让光标定位到指定号3、!加命令字符 三、命令模式1、i 进入插入模式2、**Shift :** 进入底行模式3、光标定位4、ZZ(大写)保存并退出vim5、…

java设计——日历可视化

设计目标 设计的这个日历既可以捕捉当天的日期&#xff0c;并且使用红色圆圈圈起来以及实时具体时间&#xff0c;而且将月份和年份设计了下拉框&#xff0c;可以自行选择具体的月份年份&#xff0c;也可以通过<和>两个按键实现对月份的转变&#xff0c;同时年份和月份的…

校园官网练习---web

HTML&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>西安工商学院</title><…

【数据结构实战】从零开始打造你的专属链表

&#x1f3dd;️专栏&#xff1a;【数据结构实战篇】 &#x1f305;主页&#xff1a;f狐o狸x 目录 一、链表的概念及结构 二、链表的分类 2.1 单向的或双向的 2.2 带头的或不带头的 2.3 循环或非循环 三、链表的实现 3.1 打印和动态申请一个结点 3.2 尾插一个数 3.3 头插一个…

Axure PR 9 多级下拉选择器 设计交互

​ 大家好&#xff0c;我是大明同学。 Axure选择器是一种在交互设计中常用的组件&#xff0c;这期内容&#xff0c;我们来探讨Axure中多级下拉选择器设计与交互技巧。 下拉列表选择输入框元件 创建选择输入框所需的元件 1.在元件库中拖出一个矩形元件。 2.选中矩形元件&…

HiveSQL 中判断字段是否包含某个值的方法

HiveSQL 中判断字段是否包含某个值的方法 在 HiveSQL 中&#xff0c;有时我们需要判断一个字段是否包含某个特定的值。下面将介绍几种常用的方法来实现这个功能。 一、创建示例表并插入数据 首先&#xff0c;我们创建一个名为employee的表&#xff0c;并插入一些示例数据&am…

【日常问题排查小技巧-连载】

线上服务CPU飙高排查 先执行 top&#xff0c;找到CPU占用比较高的进程 id&#xff0c;&#xff08;比如 21448&#xff09; jstack 进程 id > show.txt&#xff08;jstack 21448 > show.txt&#xff09; 找到进程中CPU占用比较高的线程&#xff0c;线程 id 转换为 16 进…

jmeter常用配置元件介绍总结之jsr223执行python脚本

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之jsr223执行python脚本 1.安装jsr223执行python插件2.基础语法介绍2.1.log2.2.parameters向脚本传参与接参2.3.vars2.4.props2.5.prev 3.常用脚本3.1.MD5加密单个参数&#xff1a;3.2.MD5加密多个参数&#xff1a;3.3.URLe…

【数据结构】插入排序——直接插入排序 和 希尔排序

直接插入排序 和 希尔排序 一、直接插入排序二、直接插入排序的弊端三、希尔排序&#xff08;1&#xff09;对插入排序的联想&#xff08;2&#xff09;希尔排序的思路 四、直接插入排序和希尔排序效率对比1>随机生成10000个数2>我们随机生成100000个数3>我们随机生成…

基于Tkinter的深度学习图像处理界面开发(二)

现在很多搞算法的人&#xff0c;跑跑代码&#xff0c;比如训练和测试代码搞得飞溜&#xff0c;但想把算法代码打包成一个软件&#xff0c;比如给它包装一个界面&#xff0c;就不会了&#xff0c;有些人会推荐用qt做界面&#xff0c;但qt的上手难度还是比较高&#xff0c;如果我…

【设计模式】结构型模式(四):组合模式、享元模式

《设计模式之结构型模式》系列&#xff0c;共包含以下文章&#xff1a; 结构型模式&#xff08;一&#xff09;&#xff1a;适配器模式、装饰器模式结构型模式&#xff08;二&#xff09;&#xff1a;代理模式结构型模式&#xff08;三&#xff09;&#xff1a;桥接模式、外观…

Scala 中 set 的实战应用 :图书管理系统

1. 创建书籍集合 首先&#xff0c;我们创建一个可变的书籍集合&#xff0c;用于存储图书馆中的书籍信息。在Scala中&#xff0c;mutable.Set可以用来创建一个可变的集合。 val books mutable.Set("朝花惜拾", "活着") 2. 添加书籍 我们可以使用操作符…

Flink安装和Flink CDC实现数据同步

一&#xff0c;Flink 和Flink CDC 1&#xff0c; Flink Apache Flink是一个框架和分布式处理引擎&#xff0c;用于对无界和有界数据流进行有状态计算。 中文文档 Apache Flink Documentation | Apache Flink 官方文档 &#xff1a;https://flink.apache.org Flink 中文社区…

有什么初学算法的书籍推荐?

对于初学算法的读者&#xff0c;以下是一些值得推荐的书籍&#xff1a; 1、算法超简单&#xff1a;趣味游戏带你轻松入门与实践 作者&#xff1a;童晶 著 推荐理由&#xff1a;本书把趣味游戏应用于算法教学&#xff0c;提升读者的学习兴趣&#xff0c;并通过可视化的图解和动…

【数据结构】堆和二叉树(2)

文章目录 前言一、建堆和堆排序1.堆排序 二、二叉树链式结构的实现1.二叉树的遍历 三、链式二叉树的功能函数1.二叉树结点个数2.二叉树叶子结点个数3.二叉树的高度4.二叉树第k层结点个数5. 二叉树查找值为x的结点6.二叉树销毁 总结 前言 接着上一篇博客&#xff0c;我们继续分…