复杂事件处理引擎—Esper工作原理
前面对Esper进行了概述,包括事件类型、事件流、事件窗口以及EPL相关内容。当然,上面的知识,对于简单的Esper开发,应该已经足够,能够根据自己业务需求,做出一个满足需要的Esper应用。但是,真正对Esper的工作原理能够了解多少呢?
OK,下面就对Esper的工作原理进行一个简单的描述。首先看一下Esper的事件驱动架构图:

整个EDA(Event Driven Architecture)包括:
· data streams :事件源,提供高速、海量的实时数据。
· Event Stream adapters : 事件源的接入适配器,用于接收事件源数据,并且转发事件给Esper引擎。
· Esper engine : Esper引擎部分。其负责注册statement以及statement的监听、事件类型等信息,执行事件处理。
· output adapters : 输出适配器,通过监听等获取引擎处理的有价值信息,通过该适配器输出。换句话说,其实就是与引擎外包程序连接的入口。
· Event Query & Causality Pattern Language : 事件处理语言,包括规则引擎(事件查询语言 类SQL的用法) 以及状态引擎(模式匹配)的定义。Esper引擎执行事件处理时,依赖这些引擎的定义。
· Core container : 核心容器。特殊算法、操作分析等。
· HistorycalData access layer : 历史数据访问层。在引擎处理时,会将Esper引擎处理views的历史数据(比如时间窗口 取过去30s的平均值)此类用法时,保存历史数据,共引擎处理。
整个Esper架构——轻量级的ESP(Event Stream processing 事件流处理)和CEP(Complex Event Processing 复合事件处理)容器,由以上各个部分组成。
运行时,event steam的流转,参考图中的箭头方向。
还可以参考如下图:

上图中,通过事件处理总线,即接入adapter以及引擎注册等,负责接收事件并交由引擎处理;引擎处理的过程需要借助Esper的内部缓存以及状态引擎、规则引擎等对事件进行解析、筛选处理。引擎处理输出的事件信息、历史数据等都会在内部缓存中进行保存。最后事件消费方获取有价值数据,执行相应动作。(这一部分的解释多少有点模糊,是因为对于图中的箭头流向有些疑问,解释不够清楚,还请谅解!)
注:上述图片均来自网络,在此感谢原图作者,并致以歉意!
复杂事件处理引擎—Esper工作原理的更多相关文章
- JSP引擎的工作原理
JSP运行环境: 执行JSP代码需要在服务器上安装JSP引擎,比较常见的引擎有WebLogic和Tomcat.把这些支持JSP的web服务器配置好后.就可以再客户端通过浏览器来访问JSP页面了.默认端 ...
- Optaplanner规划引擎的工作原理及简单示例(2)
开篇 在前面一篇关于规划引擎Optapalnner的文章里(Optaplanner规划引擎的工作原理及简单示例(1)),老农介绍了应用Optaplanner过程中需要掌握的一些基本概念,这些概念有且于 ...
- 我们应该如何去了解JavaScript引擎的工作原理
“读了你的几篇关于JS(变量对象.作用域.上下文.执行代码)的文章,我个人觉得有点抽象,难以深刻理解.我想请教下通过什么途径能够深入点的了解javascript解析引擎在执行代码前后是怎么工作的,ec ...
- 【转】我们应该如何去了解JavaScript引擎的工作原理
原文地址:http://www.nowamagic.net/librarys/veda/detail/1579 昨天收到一封来自深圳的一位前端童鞋的邮件,邮件内容如下(很抱歉,未经过他的允许,公开邮件 ...
- js:我们应该如何去了解JavaScript引擎的工作原理(转)
http://www.nowamagic.net/librarys/veda/detail/1579 昨天收到一封来自深圳的一位前端童鞋的邮件,邮件内容如下(很抱歉,未经过他的允许,公开邮件内容,不过 ...
- 复杂事件处理引擎—Esper入门
说明: 以下内容,可以参考Esper官方网站<Qucik start & Tutorial >(顺序做了部分调整). PS:因为英语水平有限(大学期间刚过CET4的英语小盲童一枚) ...
- 复杂事件处理引擎—Esper入门(第二弹)
说明: 以下内容,可以参考Esper官方网站<Qucik start & Tutorial >(顺序做了部分调整). PS:因为英语水平有限(大学期间刚过CET4的英语小盲童一枚) ...
- cocos2d-js(一)引擎的工作原理和文件的调用顺序
Cocos2d-js可以实现在网页上运行高性能的2D游戏,实现原理是通过HTML5的canvas标签,该引擎采用Javascript编写,并且有自己的一些语法,因为没有成熟的IDE,一般建立工程是通过 ...
- Optaplanner规划引擎的工作原理及简单示例(1)
在之前的文章中,老猿已介绍过APS及规划的相关内容,也对Optaplanner相关的概念和一些使用示例进行过介绍,接下来的文章中,我会自己做一个规划小程序 - 一个关于把任务分配到不同的机台上进行作来 ...
随机推荐
- Application之图书馆
前两天小编讲的都是些比较隐私的东西,为啥隐私?因为它俩(cookie和session)都只有用户自已才能使用和访问,今天小编来介绍个比较开放点的东西给大家. 小编虽已脱下学生服装多年,但如今忆起当年校 ...
- 对MFC 框架的认识
1.MFC 的概念 微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Wind ...
- Py3快速下载地址
pip3.exe install 包名称 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
- Object-C 点语法 -- 笔记
第一种是经典方式, 第一种是点语法.
- 标准的数据获取 -ios
#define kBgQueue dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) #define kLatestKivaL ...
- 【ICIP2013】MULTI-SOURCE IMAGE AUTO-ANNOTATION
题目:多来源图像自动标注 文中利用了不同来源的图像组内和组间的关系来增强自动标注的效果. 一方面认为,相似的图像预测的也应该是相似的,利用kNN图的关系进行组内的正则化,以此增强底层特征的联系. 另一 ...
- 关于linux内存管理
Linux的内存管理主要分为两部分:物理地址到虚拟地址的映射,内核内存分配管理(主要基于slab). 物理地址到虚拟地址之间的映射 1.概念 物理地址(physical address) 用于内存芯 ...
- Android TableLayout 常用的属性介绍及演示
TableLayout经常用的属性是: 1.android:collapseColumns:以第0行为序,隐藏指定的列:把android:collapseColumns=0,2 意思是把第0和第2列隐 ...
- VS2013配置文件常见问题解决方法
1.C++ VS2013出现LINK : fatal error LNK1104: 无法打开文件“kernel32.lib,”错误,什么原因啊?原因:项目->XX(项目名称)属性->链接器 ...
- Vitamio VideoView 示例
VideoView 播放本地视频 /** * 会根据视频尺寸自动缩放 * 自己对VideoView设置的宽高基本不起任何作用 */ public class VideoViewDemo exte ...