你的位置:首页 > ASP.net教程

[ASP.net教程]复杂事件处理技术概览(一)


 

翻译前言:我在理解复杂事件处理(CEP)方面一直有这样的困惑--为什么这种计算模式是有效的,能够分析得到有用的结果?为什么它会快?我始终还没有找到我期望的答案。不像map-reduce模型,google的论文非常清楚的描述了它的场景;或者disruptor框架,原作者清晰地解释了它为什么会快。在试图理解CEP的过程中,我准备翻译一些我认为有启发性的文章,希望也对大家有用。这篇文章的原文《An Overview of Complex Event Processing》非常长,我将把它分成几篇来翻译。

刘斌华原创翻译,转载请注明出处 http://www.cnblogs.com/Binhua-Liu/p/5325346.html

 

什么是事件处理(Event Processing)?

在我们周围的世界,每小时每分钟每一秒,人的大脑会受到或顺序发生的,或同时发生的,无穷无尽的事情的轰炸,这些事件立即看来是也许是完全没有意义的,甚至有些古怪的,但随着越来越多的事情发生,我们可以开始了解他们的之间相关性和重要性。

 

例如,我们听到远处的欢呼声,我们看到气球在空中飞舞,音乐开始播放,警车和盛装着的拖着木偶的卡车的出现,坐在车上挥舞着人们,紧随其后的救护车,和今天的日期是7月4日。单独来看,这些事件可能意味着任何事情,但是在一起呢?这很可能是一次独立日狂欢巡游!

 

我们的大脑可以很容易地在一眨眼的功夫确定这一事实 --- 虽然不是过于简单。用计算方式来定义,我们可以描述一个“巡游事件模式”,如下所示:

 

一辆(或多辆)警车+后面的/后面的/毗邻的+一辆(或多辆)狂欢卡车+后面的/后面的/毗邻的+一个(或多个)挥动的人++后面的/后面的/毗邻的+一辆(或多辆)应急车辆+在哪里可以听到音乐+今天的日期是7月4日

 

你的大脑并不局限这样的工作模式:发送信息,等待,直到有一个回应,然后进行一系列固定步骤的操作,以完成某项工作。正如这个例子中,它能够把正在发生的一系列事件,和相关的外部因素比如今天的日期,都关联起来,并理解当前发生的是“巡游事件模式”。

image001_thumb2

 

所以,当你了解更多关于复杂事件处理(Complex Event Processing)-- 我们专注于的这种技术 -- 你将知道它如何利用从不同地方获取的,连续的,流动的,永无止境的信息,来立即地理解正在发生的事情,以及在很不久的将来要发生的事情。这又经常被称为实时态势感知 (Real-Time Situation Awareness

这与商业计算的关联

如今在计算机世界的问题是数据的增殖。信息从许多不同的系统,以巨大的数量,在不同的时间,以不同的速度抵达,其中一些信息对某些系统,人或进程现在就很重要,而另外一些可以先存储供以后再恢复和决策。为什么我们现在会面临数据增殖的问题呢?

 

这里涉及许多问题,但这里仅列出少数几个主要的:

  • 计算能力的成本和复杂环境传感器设备的成本已经变得不那么昂贵

  • 联网能力的增加,并且变得更加智能

  • 很多不同的功能计算模块(财务系统,生产系统,销售系统,等等)被分解,重写,从而满足来越多的业务需求。

  • 新的计算机解决方案要求超越企业本身而扩散到合作伙伴和客户,这样就把越来越多的数据来源和其他输入带入到系统中。

  • 像面向服务的架构(SOA)这样的计算技术架构变得越来越成功,带来了更加复杂的可重用的生态系统。

  • 大数据(Big Data)爆炸,这个词现在广泛用于描述那些大批量的,高速的,各种各样的非结构化的,来源于社交网站、手机和许多其他源头的信息。

  • 企业经营上对IT团队不断增长的期望 -- 要求他们对市场的情况进行更有效地、实时地响应

 

我们进步和这些复杂的系统导致往计算机应用系统中“倾倒”的信息越来越庞大,我们已经达到一个“临界点”-- 传统的点至点式的,或者请求- 应答式的解决方案变得失效,难以维护和不可扩展。

 

一个公司的经营可能被瞬间发生的事件所影响,这些事件不仅来之于内部的,可以理解的,“舒适”的小世界里,而可能是来自于外部的事件,如“物联网”-- 实时传感器装置可以测量和报告很多的情况,包括“温度突然升高导致的食物储存设施的突发的危险”或“由全球定位系统位置跟踪的海运集装箱从被传感器检测到被未经授权地开箱”。

 

对一家公司经营的直接影响也可能来自于日益强大的社交媒体对全球商业环境带来的改变,例如Twitter,即时通讯应用等。数以百万计的人在同一时间可以同时对某个新产品给予差评,强调某个迫切需要修改的产品设计。这势必会影响利润,甚至显著影响企业的价值。因此,现在的公司不可避免地受到正面或负面事件的影响而疲于奔命。

 

在过去,可能追溯到15年前,商业应用不得屈就于那些当时可用的计算技术所采用的那些固定的方法,结构和接口(比如关系数据库),信息必须先被静态的插入和保存,只有在此之后用户才可以再分析和响应。传统的JEE(Java Enterprise Edition)应用服务器中普遍的实现 -- 期待客户端应用程序发送的一个初始的请求,然后大多数情况下大量的代码逻辑只是用于从头到尾地处理这个请求,然后才能返回给客户端响应。这些技术正在并将继续提供那些更多是基于批处理的,实时性较差的解决方案。而新的,更低时延的,更快的,基于内存的中间件产品现已上市。

 

基于事件驱动架构(Event-Driven)的系统本质上是更敏捷的,更好地被“武装”起来来处理这些类型的情况 -- 处理那些横跨整个业务基础设施和众多业务部门“孤岛”(如财务,生产和销售等部门),需要被立即解释和处理的事件。这些类型的系统,一旦当它们探测到外部和商业环境的改变,就能联系上下文并执行策略。而不是预定义一些每天晚上执行的任务,甚至是那些每次都要有人手动运行的任务来处理。

 

作为与大数据相关的,在未来数年将显著增长的问题 -- 即在信息的采集、管理并能够在可接受的时间范围进行处理方面,事件驱动技术(特别是复杂事件处理),可以为更高级的“智能”和决策提供快速的,更接近“事件发生时间点”的,原始的数据流。

image005_thumb1

 

因此,事件驱动技术的好处是在应对数据增殖方面,把传统的数据处理方法,改为把信息描述为实时的事件(可以是在任何地方发生的事情),提供了聪明地分解事件、路由事件、过滤事件、关联事件的能力,因此在大多数情况下,分散的事件可以进化为全面的,稳固的,容易理解的商业事件,使企业能相对更好地观察,控制和适应瞬息万变的情况。

 

待续。。。