事件驱动架构及应用
 

2010-01-29 作者:李臣亮 来源:IT168

 

Gartner在2003年引入了一个新术语事件驱动架构(Event Driven Architecture,EDA), 主要用于描述一种基于事件的范例。EDA 是一种用于进行设计和实现应用和系统的方法—在这些应用和系统里, 事件所触发的消息可以在独立的、非耦合的组件和服务之间传递,这些模块彼此并不知晓对方。这些应用程序中的EDA极大地改进了企业或政府响应不同的、表面上毫无关联事件的能力。通过提供瞬时过滤、聚合和关联事件的能力,EDA可以快速地检测出事件并判断它的类型,从而帮助组织机构快速、恰当地响应和处理这些事件。通常事件可以采用发布/订阅机制。

图1 SOA的请求应答模式

图2 EDA的事件驱动模式

事件驱动架构概述

一个事件驱动框架(EDA)定义了一个设计和实现一个应用系统的方法学,在这个系统里事件可传输于松散耦合的组件和服务之间。一个事件驱动系统典型地由事件消费者和事件产生者组成。事件消费者向事件管理器订阅事件,事件产生者向事件管理器发布事件。当事件管理器从事件产生者那接收到一个事件时,事件管理把这个事件转送给相应的事件消费者。如果这个事件消费者是不可用的,事件管理者将保留这个事件,一段间隔之后再次转送该事件消费者。这种事件传送方法在基于消息的系统里就是:储存(store)和转送(forward)。

构建一个包含事件驱动构架的应用程序和系统,会使这些应用程序和系统响应更灵敏,因为事件驱动的系统更适合应用在不可预知的和异步的环境里。
事件驱动架构在具体实现中是指由一系列相关组件构成的应用,而组件之间通过事件机制完成一定的业务功能。由于在一个EDA系统中各个组件都只专注于处理输入的消息与发布输出的消息,因而EDA系统能够更有加效地对管道化(pipelined)的、由多软件模块链接而成的并发事件流(concurrent processing of events)进行处理。

EDA系统中各组件以异步方式响应事件,在本质上是可以并行的,因而在政府部门的电子政务应用中具有极大的优势。其具备以下特点:

◆ 并发执行

◆ 事件触发/数据触发/时间规则触发

◆ 实时/增量响应

◆ 分布式事件系统处理

上述特点能很好地满足政府部门应用需求,如跨部门的应急联动系统或联合监管协同服务等应用。

从目前情况来看,EDA系统还只是处理简单事件的系统,对于复杂事件的处理还有待进一步的研究。但是,EDA仍然能作为SOA系统的一个有效补充,弥补SOA系统的一些不足,如实时响应度不够。

事件驱动架构优势

事件驱动设计和开发所提供的优势如下所示:

◆ EDA提高了对不断变化的业务需求的响应,最大限度地减少了对现有业务应用的影响,也常消除了对新打包应用的需要。如果采用特有的粗颗粒服务模型可以基于业务目标快速确定可控的业务变更,并直接、迅速、有效地实施变更以达到业务敏捷性和完整性。

◆ 可以更容易开发和维护大规模分布式应用程序和不可预知的服务或异步服务;

◆ 可以很容易,低成本地集成、再集成、再配置新的和已存在的应用程序和服务。

◆ 促进远程组件和服务的再使用,拥有一个更灵敏、没有Bug的开发环境。

从时间维度来看EDA的优势:

◆ 短期利益:更容易定制,因为设计对动态处理有更好的响应;

◆ 长期利益:系统和组织的状态变得更精准,对实时变化的响应接近于同步。

EDA与SOA的关系

SOA(service-oriented architecture)是面向服务的一种体系架构,1996年,Garnter就预见到了服务构架的重要性,并提出了SOA概念。有些观点认为EDA的出现会逐渐取代SOA,其实这并不正确,EDA并不会完全取代SOA,而会对SOA形成补充,有人称之为 "Event driven SOA"。虽然 SOA通常更适合请求/响应交换环境,但EDA 引入了一些长时间运行的异步进程功能。而且,EDA 节点可发布事件,且并不依赖于所发布的服务的可用性。它真正地实现了同其他节点的分离。

图3 EDA系统与SOA系统

与Request/Response系统不同的是,要求请求者必须明确发送请求信息,而事件驱动架构提供一个机制去动态响应事件。在一个EDA系统里,事件产生者发布事件,事件消费者接受事件。

业务系统可以从SOA和EDA中受益匪浅,因为事件发生时EDA系统能触发事件消费者,SOA服务可以快速地从相同的消费者中访问、查询。系统要求有最高的响应性,当事件被触发时这个系统必须能快速决定必须的动作。到事件结束,事件应该被发布和消费,而且事件要穿越SOA所有的边界,包括整个体系结构和物理层。

系统要有最高的响应性,当事件触发时这个系统必须能快速决定必须的动作。到事件结束,事件应该被发布和消费,而且事件要穿越SOA所有的边界,包括整个体系结构和物理层。

ESB连接EDA和SOA

企业服务总线(Enterprise Service Bus,ESB)在异类平台和环境间建立联系,充当允许不同应用程序进程之间进行通信的中间层。部署到企业服务总线的服务可以由使用者或事件触发。它同时支持同步方式和异步方式,可促进一个或多个参与者之间的交互。因此 ESB 可提供 SOA 和 EDA 范例的所有功能。“ESB提供了消息的传输,格式的转换等关键功能,为服务的请求者和服务提供者之间架设了沟通的桥梁,是企业应用基础架构的粘合剂。” 甲骨文公司大中华区高级技术经理黄建勇说。

企业服务总线可连接各个异类节点并作为中介传递其间的所有通信和交互,这些节点可分散在面向服务的体系结构(同步一对一方法)和事件驱动的体系结构(异步多对多方法)中。ESB 是目前处理集成挑战的最有效方法,是可提供最大业务灵活性和不同应用程序间的高效连接技术解决方案。

EDA应用在很多ESB(企业服务总线)产品中,比如FiornaoESB中间件产品支持同步、异步和请求响应事件,事件处理和传输实用不同的技术例如JMS,HTTP,电子邮件和基于XML的RPC等。比如“政府网上监察系统”通过对被监察对象(系统)数据的实时采集,通过EDA技术的事件触发,事件过滤,实现对违规、违法、越权行政、超时限行政等问题进行通知和督办等。

EDA应用方向

事件驱动架构(EDA)是分布式应用程序的普遍架构形式,非常典型的是:分布式应用程序都被设计成为模块化的、封装的、可共享事件服务的组件。能够通过应用程序、适配器以及无入侵性的代理操作来创建这些服务。由于EDA的特点,在金融贸易、能源贸易、电信以及欺诈检测这些行业中,一直都在采用事件驱动架构(EDA)技术。近期在我国政府的电子政务建设中,利用EDA分布式处理架构的优势构建共享交换平台,实现跨部门、跨平台、跨应用系统的政务信息资源的共享与交换,并对政府应急系统和跨委办局之间的业务协同办公提供支撑和保障。


火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织