事件驱动架构及应用

日期: 2010-01-31 作者:李臣亮 来源:TechTarget中国 英文

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

图1 SOA的请求应答模式

  图1 SOA的请求应答模式

 图2 EDA的事件驱动模式

  图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系统

  图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分布式处理架构的优势构建共享交换平台,实现跨部门、跨平台、跨应用系统的政务信息资源的共享与交换,并对政府应急系统和跨委办局之间的业务协同办公提供支撑和保障。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 事件驱动框架和SOA在空军的应用

    空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。

  • 揭秘New Relic APM技术细节

    New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响

  • 仅凭SOA和云无法解决业务数据管理风险问题

    SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。

  • 总线技术究竟该不该用?

    曾几何时企业服务总线(ESB)被视为企业IT的核心。今天,不仅ESB受到了比被废弃还要糟糕的攻击,若干开发趋势似乎对更简单的消息总线也发起了质疑。