深入浅出事件流处理NEsper(一)

简介:

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

本文来自云栖社区合作伙伴“doNET跨平台”,了解相关信息可以关注“opendotnet”微信公众号

目录
相关文章
|
SQL XML Java
MyBatis-Plus——代码生成器(3.5.1+版本)
MyBatis-Plus——代码生成器(3.5.1+版本)
2629 0
MyBatis-Plus——代码生成器(3.5.1+版本)
|
数据采集 小程序 数据可视化
策略篇1:消费者运营是什么? 解读产品Quick Audience | 《零售数据中台通关指南》
本篇主要介绍了全域营销典型场景和全域营销解决方案。
策略篇1:消费者运营是什么? 解读产品Quick Audience | 《零售数据中台通关指南》
|
消息中间件 Kafka 网络安全
kafka SSL证书生成及配置
apache kafka可以使用SSL加密连接,还可以限制客户端访问, 给客户端发行证书,只允许持有证书的客户端访问。 下面使用jdk的keytool工具来生成证书,配置kafka。
5596 0
|
11月前
|
算法
数据结构之蜜蜂算法
蜜蜂算法是一种受蜜蜂觅食行为启发的优化算法,通过模拟蜜蜂的群体智能来解决优化问题。本文介绍了蜜蜂算法的基本原理、数据结构设计、核心代码实现及算法优缺点。算法通过迭代更新蜜蜂位置,逐步优化适应度,最终找到问题的最优解。代码实现了单链表结构,用于管理蜜蜂节点,并通过适应度计算、节点移动等操作实现算法的核心功能。蜜蜂算法具有全局寻优能力强、参数设置简单等优点,但也存在对初始化参数敏感、计算复杂度高等缺点。
296 20
|
API 开发工具 Android开发
从安装到打包,手把手教你如何在Uno Platform上部署跨平台应用——一篇详尽的开发者指南
【9月更文挑战第7天】Uno Platform 是一个跨平台应用开发框架,利用UWP API构建Web、iOS、Android等多平台应用。本文详述了安装Uno Platform SDK、配置项目支持跨平台、添加主方法以及使用命令行工具进行应用打包的过程,助您快速上手 Uno Platform 并部署应用。通过简单的代码示例,让开发者轻松掌握从安装到发布的核心步骤。
935 2
|
存储 安全 物联网
.NET 跨平台工业物联网网关解决方案
【9月更文挑战第28天】本文介绍了利用 .NET 构建跨平台工业物联网网关的解决方案。通过 .NET Core 和多种通信协议(如 MQTT 和 Modbus),实现工业设备的高效接入和数据采集。系统架构包括设备接入层、数据处理层、通信层、应用层和数据库层,确保数据的准确采集、实时处理和安全传输。此外,还详细阐述了设备身份认证、数据加密及安全审计等机制,确保系统的安全性。该方案适用于不同操作系统和工业环境,具备高度灵活性和扩展性。
309 2
|
监控 关系型数据库 MySQL
MySQL装机实战指南:从零开始构建高效数据库环境
通过本文的指南,您应该已经成功安装了MySQL,并对其进行了基本的配置和优化。MySQL是一个功能强大、灵活的数据库管理系统,通过不断的学习和实践,您将能够充分利用其潜力来满足您的业务需求。记住,定期备份数据库、更新软件以及进行性能监控是保持数据库环境健康和高效的关键。希望本文能对您有所帮助!
382 2
|
小程序
微信小程序也可以实现定位打卡/签到打卡了(附源码)
本篇文章带你实现实时定位功能:包括实时定位监听、定位权限判断、经纬度间距计算、判断当前位置是否在目的地的范围区间。
4401 2
|
传感器 物联网 决策智能
Node-RED 规则引擎:开启物联网时代的智能决策
Node-RED 规则引擎:开启物联网时代的智能决策
801 0
|
存储 缓存 JavaScript
RxJS中四种Subject的用法和区别
RxJS中有四种不同类型的Subject,它们分别是Subject、BehaviorSubject、ReplaySubject和AsyncSubject。本文将介绍这四种Subject的用法、区别以及适用的应用场景,并提供代码示例。
739 0