对实时信息分析和处理,常常需要客户应用程序的开发相应功能。一般地,这些功能需要提供以下的处理流程,分析获取的数据,筛选数据,提取出有用的信息,然后将其通过特定的形式展现出来。由于具体实时信息的高并发性和高吞吐量的需求,这就需要客户应用程序具有高度扩展性和响应能力,而在数据处理领域。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. Apache(二)

    Apache的基本配置 1.监听套接字[ip : port] 2.实现持久连接(keep alive) 3.MPM模块 命令行中执行 core.c        :  核心模块 prefork.c   ...

  2. Openstack安装

    作者:陈沙克 Openstack发展很猛,很多朋友都很认同,2013年,会很好的解决OpenStack部署的问题,让安装,配置变得更加简单易用. 很多公司都投入人力去做这个,新浪也计划做一个Opens ...

  3. socket通信_笔记

    (socket通信) 客户端与服务器端通信问题: 我们首先要了解一个概念性的词汇:Socket socket的英文原义是“孔”或“插座”.作为进程通信机制,取后一种意思.通常也称作“套接字”,用于描述 ...

  4. <meta name="viewport" content="width=device-width, initial-scale=1" />

    今天第一次用JQuery Mobile做了个3个手机小页面,一个登陆页面.一个列表页面和一个表单页面,页面中的组件呈现一切正常. 但出现了一个奇怪的问题,登陆页面大小正常,到了列表页面和表单页面就显得 ...

  5. svn 钩子 post-commit 出现255错误解决办法

    首先检查代码中是否有可执行命令 #!/bin/sh 然后 检查post-commit权限 post-commit 脚本文件的权限不对,post-commit 脚本必须有 +x 权限. chown sv ...

  6. C# 读取快捷方式指向的文件

    C# 读取快捷方式指向的文件 [Flags()] public enum SLR_FLAGS { SLR_NO_UI = 0x1, SLR_ANY_MATCH = 0x2, SLR_UPDATE = ...

  7. 【原】Object 异常静态

    //所有的类都继承Object类: Object a=; Object b="ddfasfda"; //正常情况下,都会省略掉:Object:但实际上是存在的: class tes ...

  8. demo_01 css3中的radius

    css属性:border-radius :border:边框:radius:弧度:所以这个属性的意思很明了. 下面实现一个小demo: <!doctype html> <html&g ...

  9. ssh自动登录的4种实现方法

    ssh自动登录的几种实现方法,记录在此.  1. 自动ssh/scp方法 A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为192.168.60.1 ...

  10. 【Django】基于Django架构网站代码的目录结构

     经典的Django项目源码目录结构 Django在一个项目的目录结构划分方面缺乏必要的规范.在Django的官方文档中并没有给出大型项目的代码建议目录结构,网上的文章也是根据项目的不同结构也有适当的 ...