文献综述(或调研报告):
事件驱动架构(Event-Driven Architecture, EDA)以面向服务架构为基础,将面向服务中的服务进一步转化成以事件作为单位来处理,当某一个事件产生即触发下一个事件。事件驱动架构不仅可以依讯息发送端决定目的,更可以动态依据讯息内容决定后续流程。更能灵活符合日益复杂的商业逻辑架构。事件驱动架构中也包含了SOA的概念,称为SOA2.0(reference),同时也是异步的软件架构。
一个事件可以看作是在一个系统中可观察到的状态改变。例如下一笔订单、RFID 传感器回报的信息。在事件驱动架构中包含了两个部份,事件产生者、事件消费者。事件产生者发布信息给管理者,而事件消费者则向管理者订阅信息,事件则触发了下一个事件或是服务(services),当某个事件发生时,系统及做出相对应的动作。
但是一个一个的简单的事件可能不足以决定一个事件的发生,这样的场景在企业中是很常见的,将这些事件组合,就成为了复杂事件处理。
复合事件处理可看作一种处理串流(Streaming)的数据库处理。在关系数据库中所处理的资料是有许多行(Row)的数据表(table),复合事件处理将事件串流当作是数据表来处理,事件类型里的属性相当于数据表的字段。对于政府和企业来讲,处理包含海量信息、图片的庞大数据,已是例行公事。但现在,这一模式正在发生变化。以高吞吐量、高利用性、低延迟度为目标的复合事件处理,能够不仅仅处理单一的事件,也处理由多个事件所组成的复合事件。相较于以往简单事件,复合事件处理监测分析事件流(Event streaming),当特定事件发生时才去触发某些动作。
关于“复合事件”的概念,史丹佛大学的戴维·卢克汉姆与布莱恩·弗莱瑟卡早在上世纪90年代就已提出,在理论的架构中,使用模式比对、事件的相互关系、事件间的聚合关系,目的则是从事件云(event cloud)中找出有意义的事件,以便更加弹性使用事件驱动架构,并使企业或政府快速的开发出较复杂的架构。
以往,使用关联式数据库时,先将数据存入关系型数据库,再用某些语法将数据库里的数据表做处理;而像提供符合事件处理的StreamBase公司和Tibco公司,则再把处理数据的过程提前,不用通过保存的动作,就在串流中将事件做处理。因此采用的语言也不同。
证劵交易、恐怖活动监视、可疑信用卡停用等等,运用复合事件处理的项目不一而足,而该方式的另一个优点就是模式比对的能力——找出事件中各集合的活动、历史事件中的因果关系、逻辑运算等等,触发新的事件反应,让企业或政府能够达到实时决策。
[1] Luckham D. The Power of Events: An Introduction to Complex Event Processing in Distributed Enterprise Systems[J]., 2001.
[2] Suhothayan S, Gajasinghe K, Narangoda I. Siddhi (a second look at complex event processing architectures)[J]., 2011.
