程序员的量化交易之路(2)----Esper文档学习之技术概览(1)

简介:

转载请注明出处:http://blog.csdn.net/minimicall/


在接下来的20个工作日中,我将坚持翻译或者略翻译Esper的官方文档。

为什么需要学习Esper,因为我们需要理解复合事件处理 Complex Event Processing (CEP)。在量化交易系统中,CEP是必不可少的。它负责处理海量的实时事件。

关于CEP更多知识,大家可以翻阅网络相关资料。我这里集中在学习开源的CEP系统,Esper。。

今天开始第一篇:技术概览。


1. CEP和事件序列分析

Esper引擎主要解决现实中某类应用对事件的分析和响应的需求。这类需求的典型代表有:
1)商业管理和自动化(商业事件监听,BAM,异常事件紧急处理)
2)金融(程序化交易,欺诈检测,风险管理)
3)网络和应用的监管(入侵检测,SLA监管)
4)传感网络应用(RFID读取,生产线的控制和调度,空中航线监管)

这类应用的共同点就是需要实时地处理事件Event(消息Message),或者至少是接近实时。这种系统也叫Complex Event Processing(CEP),或者事件序列分析。这类系统的关键特性是吞吐量、延迟性和复杂逻辑的需求。
1)高吞吐量 - 应用需要处理大量的事件(每秒处理1000至100K)
2)低延时 - 应用需要在事件发生时立即做出响应(从几毫秒到数秒内)
3) 复合计算 - 应用支持对事件的复杂处理,例如事件之间的模式(Patterns among events),过滤事件(Filter events),合并特定时间窗口或者长度窗口的事件,事件序列的合并,基于事件缺失的触发处理。
Esper 引擎就是为了简化应用实现CEP功能而生。

2. CEP和关系型数据库

关系型数据库和SQL语言主要是面向绝大多数数据是静态数据,大多数查询是简单查询的场景。大多数数据库也是将数据保存在磁盘上(除了in-memory 数据库),它们的优化也是针对磁盘存取的。

为了从数据库中获取数据,那么必须对数据库进行查询。如果应用每秒需要得到数据10次,那么势必触发10次数据库查询,这中方法很难扩展到每秒成千上万的查询量。

当数据的数据需要更新时,数据库的trigger会被激发,然后这种数据库触发器执行速度很慢,并且不擅长复杂的条件检测和逻辑处理。

In-memory数据库比传统的关系型数据库更适合CEP应用,因为它具备更好的性能。但,它并没有为CEP的实时查询结果以及事件序列分析进行设计和优化。

3. Esper作为CEP引擎

Esper和关系型数据不一样的点在于,它并不保存数据,相反,它保存查询。而数据是通过查询来处理。当一个数据(Event)来到时,它将通过我们预订的查询语句,决定下一个动作。

Esper提供两种机制处理事件流:事件模板(event patterns)和事件流查询(event stream queries)

Esper提供事件模板语言,用于基于表达式(expression-based)的事件模板匹配。模板匹配引擎是通过状态机来实现的。这种方法可以处理预料的事件序列、事件缺失和事件融合。它也提供了事件在时间方面上的相关性分析。

Esper也提供了事件序列查询方法,用于满足CEP应用对事件序列的分析需求。事件序列查询(Event series queries)提供窗口(window),统计(aggregation),合并(join)和分析函数,用于处理事件流。这些查询遵循EPL语法。EPL有点类似与SQL,但它是处理视图(View)的,而非表格(Table)。视图,代表了对一个事件序列的处理以及产生新的事件序列。

Esper 采用统一的API接口提供的这两种方法。

4. 需要的第三方库

Esper需要如下第三方库:
1)ANTL
2) CGLIB
3) Apache commons logging ,Log4J.
4)Junit
5)Mysql的连接库

本章完毕。。。



相关文章
|
6天前
|
分布式计算 数据挖掘 Hadoop
《区块链公链数据分析简易速速上手小册》第5章:高级数据分析技术(2024 最新版)(下)
《区块链公链数据分析简易速速上手小册》第5章:高级数据分析技术(2024 最新版)(下)
31 1
|
6天前
|
消息中间件 数据挖掘 Kafka
《区块链公链数据分析简易速速上手小册》第5章:高级数据分析技术(2024 最新版)(上)
《区块链公链数据分析简易速速上手小册》第5章:高级数据分析技术(2024 最新版)(上)
39 1
|
4月前
|
运维 Java 开发工具
Java后端学习路线6大维度详细总结(编程基础+开发工具+应用框架+运维知识+成神之路+平稳降落)【可作为知识点梳理列表】【点击可查看高清原图】
Java后端学习路线6大维度详细总结(编程基础+开发工具+应用框架+运维知识+成神之路+平稳降落)【可作为知识点梳理列表】【点击可查看高清原图】
38 0
|
11月前
|
JSON 缓存 运维
上篇:运维人员不得不看的K8S API入门实战,呕心沥血整理得又臭又长,有人看吗?
上篇:运维人员不得不看的K8S API入门实战,呕心沥血整理得又臭又长,有人看吗?
112 0
|
消息中间件 NoSQL 前端开发
技术汇总:第十二章:技术总览
技术汇总:第十二章:技术总览
|
Cloud Native 架构师 Serverless
Serverless 技术进阶研读班开班啦!全新形式带你学习
0 基础入门,10 天开发 Serverless 企业级应用
81891 12
Serverless 技术进阶研读班开班啦!全新形式带你学习
|
存储 缓存 小程序
献给所有技术内容创作者~猿创聚合助手小程序开发难点解析
我重新开始了原创技术内容创作,至今在掘金发表了原创文章60篇,47.7w阅读,1.5w赞。
212 0
献给所有技术内容创作者~猿创聚合助手小程序开发难点解析
|
监控 NoSQL 关系型数据库
LINUX高级运维进阶图谱
完成文章中的技能,朝着高级运维进阶吧。
LINUX高级运维进阶图谱
|
人工智能 自然语言处理 算法
猿桌会 | 阅读理解进阶三部曲——关键知识、模型性能提升、产品化落地
本次分享将为大家剖析机器阅读理解的关键知识点,结合追一的实践经验,分享如何从数据、模型、训练角度提升模型性能,探讨AI时代阅读理解技术的产品化落地。
249 0