程序员的量化交易之路(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的连接库

本章完毕。。。



相关文章
|
3月前
|
关系型数据库 MySQL PHP
PHP编程:从基础到高级的旅程
PHP,一种流行的服务器端脚本语言,因其在Web开发中的广泛应用而受到许多开发者的青睐。本文将从PHP的基本概念和语法入手,逐步深入到面向对象编程、数据库操作以及框架使用等高级主题。无论你是PHP新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考和学习路径。
43 2
|
4月前
|
SQL IDE JavaScript
"揭秘高效代码Review秘籍:如何像侦探一样挖掘隐藏错误,提升团队编程实力,你不可错过的实战指南!"
【8月更文挑战第20天】代码Review是软件开发中提升代码质量与团队协作的关键环节。本文详细介绍高效代码Review流程:从明确范围与标准开始,到逐行审查与工具辅助,再到积极沟通与闭环管理,辅以示例确保清晰易懂。通过实践这些步骤,不仅能减少错误,还能促进知识共享,为构建高质量软件打下坚实基础。
73 2
|
7月前
|
敏捷开发 算法 安全
如何精准展现C/C++项目亮点:高级工程师面试指南
如何精准展现C/C++项目亮点:高级工程师面试指南
140 1
课外闲谈8.通用数据类的案例
课外闲谈8.通用数据类的案例
67 0
课外闲谈8.通用数据类的案例
|
消息中间件 NoSQL 前端开发
技术汇总:第十二章:技术总览
技术汇总:第十二章:技术总览
|
Python
保姆级别指导开发UI应用【实战指导建议收藏】
正式的Python专栏第7篇,同学站住,别错过这个从0开始的文章!
224 0
保姆级别指导开发UI应用【实战指导建议收藏】
|
数据挖掘 BI 数据库
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(一)
《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(一)
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(一)
|
安全 数据挖掘 测试技术
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(三)
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(三)
|
敏捷开发 数据挖掘
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(五)
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(五)
|
数据挖掘
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(八)
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言