Esper入门及示例(CEP引擎)

本文介绍了Esper事件处理引擎的基础知识,包括UpdateListener接口、EPL(Esper表达式语言)的使用,如选择、过滤、时间窗口和长度窗口的应用,并展示了聚合函数和分组统计的示例。通过实例解析,帮助读者理解Esper在复杂事件处理中的基本操作。
摘要由CSDN通过智能技术生成

一,概述

        关系型数据用来查询相对静态的数据,如果执行一些复杂的查询,要降低查询的频度。传统关系型数据库普遍将数据存储在硬盘(也有内存数据库),它的检索性能受限于硬盘访问性能。受制于关系型数据库的设计,如果频繁查询数据来实现实时统计则需要在较短时间内构建多次查询语句(SQL),每次检索都耗时较长,关系型数据库会成为系统瓶颈。总而言之,传统关系型数据库并不适合每秒成百上千次的查询统计。
        Esper引擎可以使用类似于SQL的EPL语句来构建处理模型,处理每秒几万到几十万的实时数据的查询统计。它的工作有点像倒过来的关系型数据库,它不需要像数据库那样存储数据,而是先构建查询语句,引擎依据这些处理模型实时的输出符合的结果。而关系型数据要查询语句提交后才会输出结果。
Esper除核心jar包之外还有诸如io,jdbc,jmx等jar。本文只讲解核心的前几章基础知识。

二,例子

    先看一个Epser处理实时数据的例子:
    收集某网站的实时用户访问日志(accesslog),数据字段如下:
    ip(访客ip)、time(访问时间)、url(页面地址)、httpcode(状态码)、agent(浏览器头信息)、sizeinbytes(数据大小)、等等。

    场景1,分析1小时(周期)产生的状态码数量:
    select httpcode,count(*) as hz from accesslog.win:time_batch(1 hour) group by httpcode otder by hz desc;


    场景2,分析1小时(周期)访客对url的访问频率:
    select ip,url,count(*) as hz from accesslog.win:time_batch(1 hour) group by ip,url order by  hz desc;


    场景3,找到可能危险的请求(状态码403 404),分析1小时(周期)访客对url的访问频率:
    select ip,url,count(*) as hz from accesslog(httpcode in(403,404)).win:time_batch(1 hour) group by ip,url order by  hz desc;
    注:三个例子使用了时间批量窗口,它会收集此时间间隔数据一起统计,周期内只输出一次结果(这样更像是关系型数据库的输出形式),以便于理解。


三,入门

    1,Esper能做什么?优点有哪些?
        使用SQL的形式来处理实时数据,支持查询、聚合、连接、过滤等,非常容易上手。
        多种形式(时间/长度)窗口统计事件数据,事件之间可以关联分析。
        高吞吐(10万事件/秒)低延时(毫秒级别)。
        
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值