复合事件处理(Complex Event Processing)介绍
近年来,面向服务架构 SOA一直是热门的议题。面向服务架构SOA 使用了比组件、程序(procedure)层次更高的服务做为处理单元,通过开放格式交换标准例如XML、Web Service 来交换数据,避免不同平台间的差异带来的不便,达到在异构IT 环境中有效且弹性的组合企业逻辑,并且更快速的产生响应,期望达到所谓实时化的企业。
事件驱动架构(Event-Driven Architecture, EDA)以面向服务架构为基础,将面向服务中的服务进一步转化成以事件作为单位来处理,当某一个事件产生即触发下一个事件。事件驱动架构不仅可以依讯息发送端决定目的,更可以动态依据讯息内容决定后续流程。更能灵活符合日益复杂的商业逻辑架构。
一个事件可以看作是在一个系统中可观察到的状态改变。例如下一笔订单、RFID 传感器回报的信息。在事件驱动架构中包含了两个部份,事件产生者、事件消费者。事件产生者发布信息给管理者,而事件消费者则向管理者订阅信息,事件则触发了下一个事件或是服务(services),当某个事件发生时,系统及做出相对应的动作。
事件驱动架构中也包含了SOA 的概念,称为SOA2.0(reference),同时也是异步的软件架构。
- 简单事件处理(Simple event processing) :简单事件处理可看作是消息导向处理的架构,主要处理单一事件,其中事件则定义为可直接观察到的改变。在这个架构中,简单事件处理只做两件事情,过滤(filtering)和路由(routing) 。过滤功能决定事件是否应该被传送出去,路由则决定事件应该传给谁。例如,温度传感器感测到了某个时间变化,就把事件发生直接透过事件处理引擎传给订阅者,一切的工作流程都是实时的。如此一来,使用者将大大的减少了时间跟成本。
- 复合事件处理(Complex event processing):复合事件是由史丹佛大学的David Luckham 与Brian Fraseca 所提出,David Luckham 与Brian Fraseca 于1990年提出复合事件架构,使用模式比对、事件的相互关系、事件间的聚合关系,目的从事件云(event cloud)中找出有意义的事件,使得IT 架构可以更能弹性使用事件驱动架构,并且能使企业更能快速的开发出更复杂的逻辑架构。在事件驱动架构下,结合简单事件、事件串流处理(Event streaming processing)以及复合事件(Complex event)。相较于简单事件,复杂事件处理不仅处理单一的事件,也处理由多个事件所组成的复合事件。复杂事件处理监测分析事件流(Event streaming),当特定事件发生时去触发某些动作。
复杂事件处理可看作一种处理串流(Streaming)的数据库处理。在关系数据库中所处理的资料是有许多行(Row)的数据表(table),复杂事件处理将事件串流当作是数据表来处理,事件类型里的属性相当于数据表的字段。以往使用关联式数据库的时候是将数据先存入关系型数据库后,再用SQL 语法将数据库里的数据表做处理。使用复杂事件处理则把处理数据的过程往前,不用通过保存的动作就在串流中将事件做处理。因此在处理事件的方式上采用SQL-Like 的语言。复杂事件处理中除了过滤和路由之外,还有模式比对的能力。找出事件集合的各种活动,事件聚合,过去历史中的各种因果关系,逻辑以及运算等等,触发新的事件反应。在复杂事件处理中,为了要达到高吞吐量(throughput)、高度利用性(availability)、以及低度延迟(latency),让企业能够达到实时决策,因此使用事件串流处理(event streamprocessing)。使用EPL(Event Processing Language)为SQL-LIKE 的语言,可以方便的对事件串流提供复杂的逻辑处理,使事件串流在内存中做模式比对处理,及查询的动作。这些过程中,都在内存内进行,不须经由储存装置。
- StreamInsight 是 SQL Server 2008 R2 中的新模块,它提供了复杂事件处理(CEP, Complex Event Processing)的功能。
园子里的相关文章:【原】StreamInsight 浅入浅出(一)、【原】StreamInsight 浅入浅出(二)—— 流与事件、 【原】StreamInsight 浅入浅出(三)—— 适配器
- 相关开源项目 Esper – Complex Event Processing http://esper.codehaus.org/ JBoss – Drools Fusion http://www.jboss.org/drools/drools-fusion.html Open ESB IEP SE http://wiki.open-esb.java.net/Wiki.jsp?page=IEPSE ActiveInsight http://www.activeinsight.net/ 其他产品或开源项目,可以参考:Complex Event Processing Vendors
- 参考资料 深入浅出复合事件处理(CEP) 轻松理解复合事件处理 Esper:CEP Engine Complex Event Processing:An attempt at clarity on an often confusing topic Sybase CEP:新颖的数据流分析平台
- 我的微博主题 http://t.qq.com/k/StreamInsight
- Android中TextView
- 腾讯 DCI 上线基于集中控制的 SR-TE 方案
- 如何从VS2003升级到VS2008
- js中多个Date对象变量间赋值互相影响
- 并发编程之Executor,Executors,ExecutorService和ThreadPoolExecutor
- 【DeveMobile实例】d3.js 与Trianglify 制作SVG格式Low-Poly 特效
- 未来人工智能将把人类分为3层,而你会在哪一层呢?
- IIS 7.0探索用于 Windows Vista 的 Web 服务器和更多内容
- 初学Python 之抓取当当网图书页面目录并保存到txt文件
- JavaScript 基础(二)数组
- 限制扫码付款额度,支付宝和微信要被“祭旗”?
- 拖动条SeekBar及星级评分条
- 【DeveMobile实例】利用Mobile Detect 制作单独移动端页面项目
- 互联网+智能物流高峰论坛举行运的易现场签约完成战略布局
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 通过SSH连接本地linux虚拟机的过程记录
- 实现Android 获取cache缓存的目录路径的方法
- Android 消息分发使用EventBus的实例详解
- 详解Android实现定时器的几种方法
- Android 实现带进度条的WebView的实例
- Android单元测试之对Activity的测试示例
- Android开发之手势检测及通过手势实现翻页功能的方法
- Android开发之CheckBox的简单使用与监听功能示例
- Android将图片上传到php服务器的实例代码
- Android图片识别应用详解
- Android 列表形式的切换的示例代码
- Android 拍照并对照片进行裁剪和压缩实例详解
- Android 多线程实现重复启动与停止的服务
- Android 简单的图片查看器源码实现
- jmeter在linux系统下运行及本地内存调优的方法详解