在硕士学习阶段主攻物联网(IoT)
在学习阶段接触到了CEP(Complex Event Processing)并且自学了Esper
为了将我假期自学的内容做个总结并且自我整理 我在这个博客里写下这个专题。
这一章是对Esper 和CEP做简单的介绍,目的是使大家了解什么是CEP(复杂事件处理)和Esper
CEP:Complex Event processing
在讲Esper 之前 需要先了解一下什么是CEP,CEP 翻译成汉语是复杂事件处理。
Event: 在《The power of Event》(中文版《复杂事件处理导论》)中对Event的定义是, 可以代指某件发生在现实世界或是软件的一个data
Event Processing:维基百科(英文版)中对EventProcessing的定义是,事件处理是一种跟踪和分析(处理)的方法,根据对事件流的分析推导结论
Complex EventProcessing(CEP):结合来自多个数据源的数据来推断事件或模式,产生更为高级的事件。(维基百科)
目的: CEP 的目的是识别有意义的事件(如机会或威胁)并尽快的应对他们。
应用范围:股票交易
信用卡欺诈检测,
商业活动监控
安全监控
举个例子:
拿人类来举个例子,五官带来的感觉可以认为是一种事件(event), 人类的大脑可以看作成复杂事件处理引擎,通过对五官传送来的各种“事件” 大脑进行分析判断,产生行动,这就是人类身上的复杂事件处理。
Esper
定义:Esper 是一种事件流处理器(Event Strean Processor)其目的是减少从设计到生产的开发周期
特点
使用具有强表现力的事件处理语言(Event Processing Language)
快速的开发和部署
高吞吐量,低延迟
独立的或嵌入式,有开放API
支持多平台
Esper 和Database进行比较的话:
如果把数据比作汽车的话,Esper更像是高速公路,而相比数据库则是停车场。
差异:
Esper是在存储数据之前直接对实时数据进行分析处理并使用,而数据库则是先对数据进行存储,之后在调用相应的数据进行处理。
Esper 存储查询语句(queries) Database 存储数据。
Esper 会连续的对过往的数据进行“查询”,数据库则是根据需要对数据进行查询。
Esper 中时间是一个维度,而数据库时间则是一种主句类型。
相似点:
Esper 中EPL(Event Processing Language) 对用数据库的SQL
Esper 中的事件流(Event Stream) 对应数据库的表(Table)
Esper中的事件(Events) 对应数据库的rows
EPL(Event Processing Language):
• Select
– select * from Students // 选择Students 中所有的数据
– select id ,name from Students // 选择ID 和名字
• Filtering
– Select * from Students(age >= 23)//选择年龄大于23的学生的所有数据
• Windows
– select avg(price) from Fruit.win:time(5minute 3 sec) // 选择最近5分3秒水果事件的平均价格
• Pattern
– Select * frompattern [every a =tempSensor-> b= humiditySensor] // 选择 每个温度传感器后面跟着湿度传感器的所有模式(Pattern)
– 如过Event 按这个顺序发生 (A代表 温度传感器数据,B代表 湿度传感器数据): A1 A2 B1
– 这样pattern 的结果是 A1 B1
A2 B2
——————————————————————————————————
附上我在给教授发表的ppt材料。由于不知道如何在这里附上下载链接 直接附上ppt图片
---------------------------------------------------------------------------
关于EPL的语法以后会详细的说明
在接下来的进一个月的时间里 我会整理我学过的Esper内容中
Esper 官方手册5.5.0 版本的 chap1~ chap10 的内容 以及代码,整理在这个博客上。