前面对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工作原理的更多相关文章

  1. JSP引擎的工作原理

    JSP运行环境: 执行JSP代码需要在服务器上安装JSP引擎,比较常见的引擎有WebLogic和Tomcat.把这些支持JSP的web服务器配置好后.就可以再客户端通过浏览器来访问JSP页面了.默认端 ...

  2. Optaplanner规划引擎的工作原理及简单示例(2)

    开篇 在前面一篇关于规划引擎Optapalnner的文章里(Optaplanner规划引擎的工作原理及简单示例(1)),老农介绍了应用Optaplanner过程中需要掌握的一些基本概念,这些概念有且于 ...

  3. 我们应该如何去了解JavaScript引擎的工作原理

    “读了你的几篇关于JS(变量对象.作用域.上下文.执行代码)的文章,我个人觉得有点抽象,难以深刻理解.我想请教下通过什么途径能够深入点的了解javascript解析引擎在执行代码前后是怎么工作的,ec ...

  4. 【转】我们应该如何去了解JavaScript引擎的工作原理

    原文地址:http://www.nowamagic.net/librarys/veda/detail/1579 昨天收到一封来自深圳的一位前端童鞋的邮件,邮件内容如下(很抱歉,未经过他的允许,公开邮件 ...

  5. js:我们应该如何去了解JavaScript引擎的工作原理(转)

    http://www.nowamagic.net/librarys/veda/detail/1579 昨天收到一封来自深圳的一位前端童鞋的邮件,邮件内容如下(很抱歉,未经过他的允许,公开邮件内容,不过 ...

  6. 复杂事件处理引擎—Esper入门

    说明: 以下内容,可以参考Esper官方网站<Qucik start & Tutorial >(顺序做了部分调整). PS:因为英语水平有限(大学期间刚过CET4的英语小盲童一枚) ...

  7. 复杂事件处理引擎—Esper入门(第二弹)

    说明: 以下内容,可以参考Esper官方网站<Qucik start & Tutorial >(顺序做了部分调整). PS:因为英语水平有限(大学期间刚过CET4的英语小盲童一枚) ...

  8. cocos2d-js(一)引擎的工作原理和文件的调用顺序

    Cocos2d-js可以实现在网页上运行高性能的2D游戏,实现原理是通过HTML5的canvas标签,该引擎采用Javascript编写,并且有自己的一些语法,因为没有成熟的IDE,一般建立工程是通过 ...

  9. Optaplanner规划引擎的工作原理及简单示例(1)

    在之前的文章中,老猿已介绍过APS及规划的相关内容,也对Optaplanner相关的概念和一些使用示例进行过介绍,接下来的文章中,我会自己做一个规划小程序 - 一个关于把任务分配到不同的机台上进行作来 ...

随机推荐

  1. House Robber——LeetCode

    You are a professional robber planning to rob houses along a street. Each house has a certain amount ...

  2. 解读sample5

    说明 被测试代码文件 sample1.h.sample1.cc和sample3-inl.h 测试代码文件 sample5_unittest.cc 官网上如是描述sample5: Sample #5 i ...

  3. SQL Server优化之SQL语句优化

    一切都是为了性能,一切都是为了业务 一.查询的逻辑执行顺序 (1) FROM left_table (3) join_type JOIN right_table (2) ON join_conditi ...

  4. int.Parse()与int.TryParse()

      int i = -1;bool b = int.TryParse(null, out i);执行完毕后,b等于false,i等于0,而不是等于-1,切记. int i = -1;bool b = ...

  5. 一种基于重载的高效c#上图片添加文字图形图片的方法

    在做图片监控显示的时候,需要在图片上添加文字,如果用graphics类绘制图片上的字体,实现图像上添加自定义标记,这种方法经验证是可行的,并且在visual c#2005 编程技巧大全上有提到,但是, ...

  6. 【基础练习】【vector】codevs3393 序列倒置

    版权信息 转载请注明出处 [ametake版权全部]http://blog.csdn.net/ametake欢迎来看 题目非常easy,本质还是练习一下vector 题目描写叙述 Descriptio ...

  7. 【iOS与EV3混合机器人编程一系列五个】iOS_WiFi_EV3_Library 解剖连接EV3

    在上一篇文章中.我们解说了怎样用开源码库CocoaAsyncSocket来实现iOS上的UDP和TCP数据通信.那么在本文中.我们将介绍在CocoaAsyncSocket的基础怎样使用UDP和TCP连 ...

  8. jQuery源代码 解析一 工具方法

    1. 外层沙箱以及命名空间$ 几乎稍微有点经验前端人员都这么做,为了避免声明了一些全局变量而污染,把代码放在一个"沙箱执行",然后在暴露出命名空间(可以为API,函数,对象): 2 ...

  9. 队列(链式存储)JAVA代码

      publicclassLinkQueue<T>{       //结点类     publicclassNode{         public T data;         pub ...

  10. Debian 桌面美化

    Debian 桌面美化 安装 gnome-tweak-tool aptitude install gnome-tweak-tool 登陆gnome-look下载主题包 gnome-look上有很多主题 ...