`
rsljdkt
  • 浏览: 454427 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Esper 开发之一

    博客分类:
  • Java
阅读更多

 

Esper开发之一

By: rsljdkt

参考:

esper官网:http://esper.codehaus.org/

说明:

本文定位:初学者

本文主要内容:介绍Esper的基本概念和应用背景,Esper的学习步骤。在文章最后,介绍了Esper"HelloWorld"

 

一、CEP和ESP的概念  

 

CEP,Complex Event Process,复杂事件处理,是一种新兴的基于事件流的技术,它用于处理事件,从事件流中发现复杂的模式。它将系统数据看做不同类型的事件,通过分析事件间的关系,建立不同事件关系序列库,利用过滤、关联、聚合等技术,最终由简单事件产生高级事件或商业流程。

ESPEvent Stream Process,事件流处理,目的是从事件流中获得有用的事件,进而从中获得有用信息。实时OLAP(联机分析处理)和连续查询者两个术语常常和ESP是同义语。

CEP/ESP适合的应用场景包括商业活动监控、群众智能、犯罪预防、系统动态校验实时风险分析、网络攻击、市场趋势分析等等。商业CEP产品厂商有OracleIBM等。

 

二、什么是Esper  

 

Esper官网是这么定义的:"Esper is a component for CEP and ESP applications",中文意思是:Esper是用于CEP(复杂事件处理)和ESP(事件流处理)应用程序的组件。

Esper是纯Java开源复杂事件和事件流引擎,可以监测事件流,并在特定事件发生时触发某些动作。Esper引擎是为了满足事件进行分析并做出反应等这些应用需求而产生的。这些应用要求实时或者接近实时处理事件(或消息)。这类应用具有高吞吐量、低响应时间和复杂的计算等特点。

Esper引擎的典型应用有:

Ø 业务处理管理和自动化(处理监控,业务活动监控,异常报告,经营智能化等等)

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

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

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

Esper初学者的学习步骤(这是Esper参考手册上推荐的):

 

1.阅读Esper官网上的tutorials,  case  studies  and  solution  patterns

   n Tutorial-本篇是 Esper 的教程,主要介绍了(1)什么是Esper,它有什么优点,包括哪些component2)什么是事件流,什么是复杂事件。(3)什么是 EPL4)如何开发一个事件驱动的应用(5)如何设计事件(6)事件流分析(7)事件模式匹配(8)如何结合事件流分析与模式匹配

   n Quick Start - 本篇主要描述如何快速使用 Esper,包括(1)安装 (2)创建Java事件类,POJO对象作为事件(3)创建一个 Statement 4)添加一个Listener5)发送事件(6Esper配置

   n Articles and Presentations, 文章和报告,这里列举了某些文章和展示材料,有些sample可以下载,对于学习和熟悉很有帮助

   n Solution Patterns,解决方案模式,使用Q&A的模式,对CEP 和 Esper 进行阐述,对于整个 Esper 的背景知识,会有很大帮助

   n Short Case Study, 简短的个案研究,以传输监控为例,进行分析,

   n Longer Case Study,较大个案研究,多个事件构成一次事务,对此进行分析

   n Additional Examples,其它示例,描述了怎么在 JMS, J2EE等环境里使用

   n Technology Links,技术链接,一些参考网站的引用

   n Documentation,文档,这里有很多文档供下载到本地

   n Building Esper,介绍如何使用 Maven build Esper

 

2.阅读参考手册1.1节:CEP和事件流分析简介

3.阅读参考手册第2章:事件表达(介绍了Esper中表达事件的不同方法)

4.阅读参考手册第3章:处理模型(详细了解EPL连续查询的结果)

5.阅读参考手册4.1节:EPL介绍(使用EPL进行事件流处理)

6.阅读参考手册5.1节:事件模式概览

7.阅读参考手册6.1节:概览(使用正则表达式的事件模式)

8.阅读参考手册14.1:例子概览

9.阅读参考手册15章:性能(关于Esper引擎的性能)

 

 

  

三、Quick Start

下载Esper

esper-4.0.0.zip

本例只需要一下jar包:

核心包:esper-4.0.0.jar

依赖包:antlr-runtime-3.2.jar

cglib-nodep-2.2.jar

commons-logging-1.1.1.jar

log4j-1.2.16.jar

使用Esper的基本步骤:

1.创建一个Event class

2.创建一个class实现UpdateListener接口

3.创建一个Configuration实例

4.通过EPServiceProviderManger获得EPServiceProvider对象

5.通过EPServcieProderEPL查询语句,创建EPStatement

6.listenerEPStatement挂钩

7.使用epService.getEPRuntime().sendEvent(event)向引擎发送事件

举个例子:

1.创建一个Event class

 

package org.rsljdkt.rsc.esper.event;

public class OrderEvent {
	public double price;
	public String itemName;
	
	public OrderEvent() {
		super();
	}
	public OrderEvent(double price, String itemName) {
		super();
		this.price = price;
		this.itemName = itemName;
	}
	public double getPrice() {
		return price;
	}
	public String getItemName() {
		return itemName;
	}
}

 

2.创建一个class实现UpdateListener接口

package org.rsljdkt.rsc.esper.listener;

import com.espertech.esper.client.EventBean;
import com.espertech.esper.client.UpdateListener;

public class OrderListener implements UpdateListener {

	@Override
	public void update(EventBean[] newEvents, EventBean[] oldEvents) {
		EventBean eb = newEvents[0];
		System.out.println(eb.get("avgPrice"));
	}
}

 

其余步骤:

import org.rsljdkt.rsc.esper.event.OrderEvent;
import org.rsljdkt.rsc.esper.listener.OrderListener;

import com.espertech.esper.client.Configuration;
import com.espertech.esper.client.EPServiceProvider;
import com.espertech.esper.client.EPServiceProviderManager;
import com.espertech.esper.client.EPStatement;

public class Main {
	public static void main(String[] args) {
		//Creating a configuration
		Configuration config= new Configuration();
		config.addEventTypeAutoName("org.rsljdkt.rsc.esper.event");//添加包路径,这样在查询表达式中就不需要写类的全路径了
		//Creating a statement
		EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config);
		//查询最近30秒钟到达的OrderEvent事件平均价格
		String expression = "Select Avg(price) As avgPrice From OrderEvent.win:time(30 sec)";
		EPStatement statement = epService.getEPAdministrator().createEPL(expression);
		//Adding a listener
		statement.addListener(new OrderListener());
		//Sending events
		for(int i = 0 ; i<10;i++){
			epService.getEPRuntime().sendEvent(new OrderEvent((i+1)*10,"Name"+i));
		}
	}
}

 

运行结果:

10.0
15.0
20.0
25.0
30.0
35.0
40.0
45.0
50.0
55.0

 

 

<!--EndFragment-->
分享到:
评论
1 楼 Fenix1986 2013-03-24  
不错,写的很详细,正需要esper的资料呢,谢谢。

相关推荐

    Esper overview

    在现代信息技术领域中,CEP 已成为处理大量动态数据的关键技术之一。 - **事件**:事件是指现实世界或软件系统中发生的事情的一段数据表示。 - **事件处理**:指对一系列信息(即事件)进行跟踪、分析的过程,并...

    esper复杂事件处理引擎参考

    esper引擎的处理模型是其核心组成部分之一。esper引擎采用了一种事件流处理模型,其中包含事件的插入流(Insert Stream),事件的移除流(Remove Stream)以及事件的过滤器和where子句。esper引擎通过这些机制来对事件流...

    esper reference

    Esper是一款开源的CEP引擎,旨在提供一个从概念到生产过程的快速开发周期。它支持多种数据表示形式,如Java对象、Map对象、XML等,并提供了丰富的过滤、聚合等功能,使得开发者能够轻松地构建出高效、灵活的应用程序...

    企业数据中心建设方案(简版).docx

    数据中心是企业的核心基础设施之一,负责处理和存储大量的数据。一个完整的数据中心应该具备 IT 基础设施(主机、存储、网络)、企业级 ETL(数据仓库)平台、数据存储中心、数据共享服务、应用层、统一门户、数据...

    漫谈大数据第四期-storm

    Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息。更棒的...

    数据中心建设方案.docx

    - **IT基础设施**:包括主机、存储、网络等基础组件,是数据中心的核心要素之一。这些硬件设施为数据处理和存储提供了物理支持。 - **企业级ETL平台**:专门用于数据采集、清洗、转换和加载的平台,确保数据能够以...

    5-韩鹏-3-基于Flink构建CEP引擎的挑战和实践-韩鹏-2019-11-27_compressed1

    2015年,基于Esper的CEP系统依赖单服务器,硬件资源有限,性能表现不佳。 2017年,采用C++实现的Dolphin 1.0,同样受限于单服务器和硬件资源,但性能有所提升。 2018年,基于Flink的Sabre系统引入,支持多源异构数据...

    ChatbotProject:Chatbot 2021课程的最终项目

    JavaScript作为互联网上最广泛使用的编程语言之一,为创建动态和交互式的网页提供了强大的工具。在ChatbotProject中,JavaScript将用于处理用户的输入、解析消息、执行逻辑以及返回适当的响应。这涉及到JavaScript的...

    携程机票数据仓库建设之路.docx

    此外,实时数据处理技术也经历了从Esper、Storm到Spark Streaming和Flink的迭代,最终逐渐收敛至Flink作为主流实时数据处理框架。 ##### 2.2 当前技术栈 目前携程机票的数据仓库主要基于以下几种类型的数据: 1. ...

Global site tag (gtag.js) - Google Analytics