对实时信息分析和处理,常常需要客户应用程序的开发相应功能。一般地,这些功能需要提供以下的处理流程,分析获取的数据,筛选数据,提取出有用的信息,然后将其通过特定的形式展现出来。由于具体实时信息的高并发性和高吞吐量的需求,这就需要客户应用程序具有高度扩展性和响应能力,而在数据处理领域。NEsper就是一个.NET 开源的针对此类问题的事件流处理解决方案,其目的在于简化有此需求的客户应用程序的开发。

1.1.CEP与事件流

NEsper 的目的在于为应用程序提供分析和响应事件的要求。典型的应用需求如下

• 业务流程管理和自动化。(提供流程监控,异常报告)

• 财务(算法交易,欺诈检查,风险管理)

• 网络及应用程序监控(入侵检测,SLA(Service Level Agreement)监控)

• 传感器网络应用(RFID 读取,生产线调度和控制,空中交通)

这些应用的共同特点是,有实时或类实时事件处理的需求,有时也称为复杂事件处理和事件流分析。其业务事件具有吞吐量,延时性及业务的复杂性等关键因素。

• 高吞吐量 - 处理大量的消息(1000至100K每秒的消息之间的应用程序)

• 低延迟 - 应用在实时条件下发生的(从几毫秒到几秒钟)的反应

• 复杂的计算 - 应用程序根据规则检测相关事件,过滤事件,将对满足条件的事件加入基于时间的事件流或基于窗口期的事件流中,当事件离开时触发相应的操作。

NEsper的事件引擎就是用于构造此类应用需求,并能扩展复杂事件处理。

1.2.CEP与关系数据库

关系数据库和结构化查询语言的目标在于处理相对静态的并且有复杂查询要求的应用系统的数据要求。因此大部分的这类数据库(基于内存的数据库除外)将数据存储在硬盘上。因此对其优化往往在于硬盘存取访问的优化。

应用程序常常利用查询来获取数据库中的数据。如果应用程序需要每秒10次查询数据,那么必然产生相应频繁的数据查询。对于每秒成百上千的大规模的请求,这种方式并非表现的很优秀。

数据库的触发器可以对的更新操作作出相应响应。然而数据库的触发器会很慢,并且不能轻松的对复杂条件进行逻辑检测和响应。

相比传统的关系数据库,在查询性能方面基于内存的数据库可能会更适合复杂事件处理应用程序。然后内存的数据库并没有针对此类查询性能需求方面有所优化。

1.3.NEsper引擎

NEsper 的工作原理有些类似数据库倒置。与传统的先存储后查询数据的方式不同。NEsper引擎预先设置查询条件,然后让实时数据通过这些查询条件,引擎抓取符合条件的数据,这种查询是连续不断的。

它提供两种方式处理这些事件,事件模式和事件流查询。

NEsper提供基于表达式的事件匹配规则。模式匹配引擎是一个状态机的实现。这种事件处理的方式是对于到达或离开的事件,进行匹配和处理。他基于时间窗口的事件流。

同样NEsper提供了另外一种方式。这种基于窗口事件流,他提供聚合,连接,分析函数,来处理这些复杂的事件。对过EPL(NEpser定义的一套类sql的语法 )查询这个事件窗口。获取满足条件的事件。EPL语言类于SQL,但是与sql也不同。在EPL中查询基于视图而非表。视图提供许多操作,用便能从事件流中获取相应的数据。

NEsper提供了相应的API,支持以上两种方式 。

1.4所需的第三方包

NEsper 的运行环境需要以下的第三方包

• ANTLR EPL syntax.的生成和解释工具, 在编译环境时需要可以访问: http://www.antlr.org

• CGLIB 基于. The Apache 2.0 许可的开源字节码的动态生成工具。

• Apache Log4Net 开源日志工具。

NEsper 其他编译和测试环境需要的第三方包

• NUnit 基于.NET的优秀单元测试框架。

• MySQL /SQL Server:Nesper 的 sql测试套件。

相关文章:

事件流处理框架NEsper for .NET

NEsper z的更多相关文章

  1. 【Python】使用torrentParser1.03对多文件torrent的分析结果

    Your environment has been set up for using Node.js 8.5.0 (x64) and npm. C:\Users\horn1>cd C:\User ...

  2. 事件流处理框架NEsper for .NET z

    复合事件处理(Complex Event Processing)介绍提到了开源的Esper,NEsper 是一个事件流处理(Event Stream Processing,ESP)和复杂事件处理(Co ...

  3. NEsper使用的事件类型 z

    NEsper使用的事件类型来描述事件的类型信息.你的应用在启动时可能预先配置定义事件类型,或者在运行时通过API或EPL语法动态的增加事件类型. EPL中的create schema 的语法允许在运行 ...

  4. NESPER的大体结构 z

    NEsper从内容上分为两块,NEsper的核心NEsper.dll和NEsper.IO.dll. (1)NEsper的核心包包含了EPL语法解析引擎,事件监听机制,事件处理等核心模块. (2)NEs ...

  5. NEsper事件处理 z

    http://esper.codehaus.org/nesper/documentation/documentation.html 环境配置 NEsper库下载:下载网址 Vs2010环境集成 在项目 ...

  6. Android立体旋转动画实现与封装(支持以X、Y、Z三个轴为轴心旋转)

    本文主要介绍Android立体旋转动画,或者3D旋转,下图是我自己实现的一个界面 立体旋转分为以下三种: 1. 以X轴为轴心旋转 2. 以Y轴为轴心旋转 3. 以Z轴为轴心旋转--这种等价于andro ...

  7. Z字形扫描(201412-2)

    问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z字形扫描的过程如下图所示: 对于下面的4×4的矩阵, 1 5 3 9 3 7 5 ...

  8. 【IOS】将一组包含中文的数据按照#ABC...Z✿分组

    上一篇文章[IOS]模仿windowsphone列表索引控件YFMetroListBox里面 我们一步步的实现了WindowsPhone风格的索引. 但是有没有发现,如果你要实现按照字母排序,你还得自 ...

  9. Java 压缩/ 解压 .Z 文件

    1.问题描述 公司项目有需要用 JAVA 解压 .z文件. .z 是 unix 系统常见的压缩文件. 2.源码 import com.chilkatsoft.CkUnixCompress; impor ...

随机推荐

  1. syntax error near unexpected token `then'

    #!/bin/bashclearfunction test{   if[$1 -eq "root"]&&[$2 -eq "123456"]    ...

  2. iOS中的NSLog的输出格式

    •    %@        对象 •    %d, %i   整数 •    %u         无符整形 •    %f          浮点/双字 •    %x, %X  二进制整数 •  ...

  3. html5绘制折线图

    html5绘制折线图详细代码 <html> <canvas id="a_canvas" width="1000" height="7 ...

  4. VB-获取本机计算机名,登录名、ip地址

    真的是很简单,执行结果:Computer:不平凡总在于坚持  User:Administrator  IP:192.168.0.111     '获取计算机名.用户名.本机ip     Dim Loc ...

  5. java 中的 & | ~ ^ 运算符分析

    1.与运算符与运算符用符号“&”表示,其使用规律如下:两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段.public class data13{public static vo ...

  6. sed线上经典案例之-同时替换多个字符串

    回答网友请教的一个问题:配置文件如下:[aaa]cfg1=aaaxxxx=bbbcfg2=ccccfg3=ddd[bbb]cfg1=eeeyyyy=fffcfg2=gggcfg3=hhhcfg4=ii ...

  7. web2py--------------用web2py写 django的例子 --------建立一个投票应用(2)

    建立模型 我们在models下及那里polls.py 文件内容如下 # -*- coding: utf-8 -*- pollsdb=DAL(uri='sqlite://polls.db') polls ...

  8. 制作Mac OS X Mavericks 安装U盘

    1. 8G+ U盘一个. 2. App Store 下载Maverics到本地(默认会下载到Applications) 2. 打开Mac OS 磁盘工具(Disk Utility),左侧选中U盘,在右 ...

  9. 从Clarifai的估值聊聊深度学习

    从Clarifai的估值聊聊深度学习 [转载请注明出处] 前几天和 Ayden @叶瀚中 聊天时,提到了 www.clarifai.com 这家公司. 此前,我已经从各方消息中听说过创始人Matt Z ...

  10. Layer 1: Single Objects

    Layer 1: 单一对象 粗略的说, 在javascript中所有对象都是maps的键值对. 键值对的实体在对象中称为属性( property).属性的key经常为 string类型,而他的valu ...