事件驱动SOA:实现SOA的更好方式业界专家们一致认为面向服务的架构(SOA)是企业开发新架构的正确途径,前提是您的企业已经开始走上实施SOA的道路。但是,您是否打算长期实施正确的SOA?如果您的SOA实施不支持事件处理,您可能无法如愿。2事件驱动SOA:实现SOA的更好方式事件驱动的SOA:未来发展的基础SOA已成为一种释放企业IT基础架构业务价值的公认途径。借助SOA,架构师可将整体应用程序“分解”为可以在多种应用程序中重用的独立服务。通过以一种基于标准的抽象方式将信息和事务处理转化为服务,SOA奠定了新型业务应用程序的基础。这些应用程序不同于完全从头开始构建的应用程序,而是由现有和新的服务逻辑组合而成的“合成”应用程序。企业还能借助SOA以更低的成本、更快的速度部署新的业务服务。但是,SOA基础架构并不具备响应实时业务动态所需的一切功能。请看下面的场景,在不同的行业中该场景的表现可能略有区别。一家电信公司针对某个特定消费者推出一款新型电话和费率方案来吸引客户。这一促销方式很成功,在电话客服代表的鼓动下,这名客户决定转而使用这一服务。在本例中,核心业务经营是SOA应用程序模型的成功典范。服务展示了数据仓库的发展趋势,即最容易受到服务变更的影响。借助服务,可以实现将客户姓名、电话号码和其他信息插入到CRM/呼叫中心应用程序中进行功能集成。另一个服务则会访问用户服务合同并在帐单系统中对其进行处理。最终再调用一个订单流程,该流程使用服务触发库存/仓库操作和后勤流程,以向客户发送新的电话和费率方案合同。但是,事情出现了转折。促销活动开展得十分成功,但由于这款特定品牌的电话一直以现货供应,致使库存量越来越少。结果,在前面提及的这一特殊订单完成之时,仓库已断货,导致无法如约发货。订单流程只好“暂停”,并发出“货运尚未完成”的警报—但一切为时已晚:当客服代表与客户联系,告之发货延误,或协商订购其他电话时,客户已经对其失去信任。他决定接受另一供应商的报价,与之签定新的服务合同和电话订单。3事件驱动SOA:实现SOA的更好方式图1.SOA促成了一次成功的促销活动,但是重要环节被遗漏。电话销售订单营销经理???客户代表事件ESB服务供应服务开票服务仓库服务后勤…刚才发生了什么事情?此事件是否与SOA相关?答案是,这是一个企业无法感知并快速响应不断变化的业务事件的示例,像“电话库存不足”这类情况的事件在“事件云”中被遗漏。此示例表明SOA需要受到实际业务事件的驱动。图2.添加复杂事件处理(CEP)使企业能够动态响应对时间敏感的业务情况。已更改市场活动电话销售订单营销经理CEP客户代表事件ESB服务供应服务开票服务仓库服务…后勤SOA简明教程为了了解上例中描述的业务缺陷,需要先了解SOA的基本知识。SOA是一种抽象的分布式架构,网络上拥有适当安全授权的任何人或应用程序均可开放地访问此架构。数据和功能可转化为使用基于标准的格式(WSDL、SOAP、XML)和传输方式(HTTP、JMS)来描述的可重用服务,以供其他应用程序使用。如果隐私问题可得到保证,这些服务可以根据用户分类,包含客户电话号码和地址或购买倾向等信息。4事件驱动SOA:实现SOA的更好方式SOA最大的优势之一可能是这类信息事务可跨越其本身的孤立应用程序—一个企业资源计划(ERP)系统、一个客户数据库或是一款桌面应用程序—而进行共享。请求/应答基于Web服务(WS)的SOA使用经典的请求/应答类型的消息交换模式作为通信方式,由服务及有权访问该服务的客户组成。客户请求访问某一特定服务,然后会在特定时间内被授予对这一服务的信息访问权或处理能力。服务和客户之间的关系通常具有松散耦合性,并因请求/应答的性质而保持同步。它是一种被动、基于需要的基础架构。编排对于大多数WS应用程序,企业通常会使用服务编排。WS编排现在是大多数SOA工具集和架构的核心功能。服务编排是对一组服务以图形的方式进行排列,以自动执行系统之间的信息处理。例如,如果业务目标是将客户信息收集到客户关系管理(CRM)系统中,则可能需要通过一个流程来访问一个包含客户配置文件信息、帐单信息和地址/电话类信息的数据仓库,然后将所获取的客户信息插入CRM应用程序中。在处理过程中可能会涉及到某些数据的转换和简单的规则。通常,此流程始于一个事件,然后触发一系列请求/应答交互字符串。它是基于事件的,但以显式过程为基础,因为事件会触发一个指定的硬编码过程,而不是声明性过程,后者会确定一组业务目标,然后流程终止,最后基于一组事实实现业务目标。触发一个已编排的业务流程或调用某个Web服务的业务事件通常不可预知,而且并不是基于请求触发的。在某些情况下,任意一个业务活动就会触发一个事件。在很多情况下,这些类型的事件会被记录在一个应用程序数据库中。ESB:在企业中分发事件企业服务总线(ESB)是经过严格编排的SOA基础架构的公认解决方案。ESB通常是服务请求在SOA上作为消息移动的方式。ESB保证消息无论以何种方式存在(请求查看客户数据、实际数据等...),都可以从客户传递到服务或从服务传递给客户。它还可以将消息在非Web服务的软件组件(例如,Java对象)之间进行事务级传递。5事件驱动SOA:实现SOA的更好方式应用得当的话,很多消息传递产品中的发布/订阅和通知服务都支持ESB处理事件,甚至意外事件。通过合理规划,ESB将成为SOA和事件处理的常用基本要素。用户需要处理事件,并响应及适应各种情况,但大多数情况下不会如愿以偿。结果,企业无法觉察业务事件和情况,这其中包括快速产生的机会或威胁。这是业务优化过程中的一部分,通常称为“复杂事件处理(CEP)”,我们将在后文详细探讨CEP。事件为何至关重要什么是业务事件?业务事件是任何会影响企业运营的值得关注的业务活动。在事件驱动的SOA中,事件在您的软件基础架构中被直接或间接地创建和记录,并对您的业务具有某种程度的影响。根据企业的规模,每天会发生成百到上百万个值得关注的事件。服务代表输入客户的新地址;网络设备发出温度太高的警告消息;国内的某个地区因遭遇暴风雪导致员工迟到而在另一个地区一托盘货物已通过RFID读取器入库。这些都是业务事件,并且这些事件会以某种方式影响企业的运营。某些业务事件会对企业产生负面影响,某些则会产生积极影响;某些将是一个机会,某些则可能司空见惯,不足为奇。所有业务均受事件驱动。实际上,整个世界的运转都受到事件的驱动!试想:一托盘货物在东海岸已通过RFID读取器入库。大多数IT经理会安装一个系统,该系统可将上面的入库信息发送到一个库存跟踪应用程序,供其确切记录仓库中可供现货的产品数量。系统还可能将信息发送到一个后勤应用程序,确认已收到订单。它甚至会将产品描述与原始采购订单进行核对,以确认所订购的货物已交付。这些都是SOA支持或简化的业务应用程序。到现在为止一切进展得还算顺利,但事情出现了转折。从前面的描述得知,将这一托盘的货物入库竟然成了坏消息:这些产品在东海岸的仓库中堆积如山,同时在中西部由于开展了一系列声势浩荡的促销活动,当地销量激增。但是,由于该地区遭遇暴风雪导致重要员工无法赶到公司上班,致使销量激增的信息无法及时通过电话传递到东海岸,最终导致东海岸仓库产品积压。6事件驱动SOA:实现SOA的更好方式这是零售业中发生的意外事件示例,每个行业都受到事件的驱动。企业会花费大量时间处理事件驱动的流程。资源误导、客户不满、欺骗、偷窃、销售猛增以及可想象的其他各种情况,表明事件会对业务产生不同程度的影响。什么是复杂事件处理?“复杂事件处理是一种用于从基于消息的系统中提取信息的新技术。”1很多观察家都认为企业需要具备处理复杂事件的能力,以便响应快速变化的业务情况。复杂事件处理(CEP)系统使组织能够处理分布式业务事件,并发现机会或威胁。业务事件可以单独跟踪,比如一组股票交易,或与其他事件关联起来,产生派生或者“复杂”事件,通常称为“情况”。理解这些业务事件需要掌握事件处理技术和行业知识。通常,用户必须了解并创建业务模型,该模型会模拟事件流中事件对象之间和历史信息背景中的相关项和关系。图3.CEP系统使组织能够处理事件的趋势和模式,并预测已确定情况所产生的影响。客户代表CEP营销经理电话销售订单模式识别业务模型ESB事件服务供应服务开票服务仓库服务…后勤外部事件1DavidC.Luckham和BrianFrasca,“分布式系统中的复杂事件处理”7事件驱动SOA:实现SOA的更好方式与业务事件相关的事件和趋势需要与历史业务模型建立映射和关联,根据业务模型来映射事件构成识别可能发生的模式的基础。规则不但在业务模型的开发,而且在业务事件和业务模型之间建立关联的过程中均发挥着重要的作用。对于企业而言,事件处理的重要部分是能够快速响应负面情况,或积极利用所产生的机会。总而言之,事件处理,尤其是CEP,让企业能够跟踪、追踪和关联事件,处理事件趋势和模式,最终预测所确定情况的影响。然后就可以迅速采取措施,阻止对企业的潜在威胁或最大程度减小损害—例如客户未按时收到产品导致取消订单。对有利的一面也是如此:企业可以快速、有效地利用正面情况,例如新产生的交易模式或客户向上销售的机会。另外,还可以分析各种情况以改进堪称企业运营“DNA”的基础业务流程和应用程序。SOA和事件处理—两者完美结合业务的优化需要SOA和事件处理,当两者组合时,可以为企业运营创造巨大的价值。SOA和事件处理还有助于公开在单个应用程序和数据库中锁定的业务信息。服务和SOA可用于解锁信息和IT流程,以便在其他应用程序中使用并生成新的合成应用程序。事件是企业的中流砥柱,SOA借助它,可以将业务事件传输到企业扩展和当今现代化业务生态系统中的所有被授权方。CEP就会通过识别分布式企业事件中存在的威胁和机会,为企业抓住并创造价值。在功能级别上,SOA和事件互相依赖。如果要构建一个真正的事件驱动应用程序,SOA将会从事件中或多或少地受益。例如,某事件可以触发启动一个服务或一连串服务以解决某个业务问题。将事件处理建模为服务也至关重要,因为事件和CEP应用程序均可从SOA的业务对象中受益。实际上,服务可渗透在SOA架构的几乎每个功能步骤中,供事件驱动的应用程序使用。同样,SOA可借助事件促进灵活、适应性强的业务流程,从而响应不断变化的机会和威胁。一个业务服务或多个服务编排的结果通常是另一个业务事件。结论回到最初的问题:您是否打算长期实施正确的SOA?如果您正在实施ESB来支持事件处理和消息传递,从而实现任意形式的事件驱动的通信,则答案为“是”。如果尚未实施ESB—例如,您正在实施使用应用程序服务器、集成代理和代码的SOA,则答案为“否”,您需要实施ESB。这会引发下一个问题:何时需要CEP?最有效的策略是现在就提出此问题,并以与确定首批SOA项目相同的方式来确定首批CEP项目。您可以考虑任意一个业务领域,然后跟踪其流程的状态或者处理意外事件,这都会对该业务带来巨大价值。TIBCO北京代表处北京市建国门外大街2号北京银泰中心写字楼1559室邮编:100022电话:+86-10-65637955传真:+86-10-65637999TIBCO上海代表处上海市南京西路1168号中信泰富广场3542室邮编:200041电话:+86-21-51169176传真:+86-21-51169175www.tibco.com©2010,TIBCO软件公司。保留的所有权限。TIBCO,TIBCO徽标,现在的电源,和TIBCO软件是商标或注册商标TIBCO软件公司。在美国和/或其他国家/地区中。在此文档中提到的所有其他产品和公司名称和标记是其各自所有者的属性,并且仅为标识目的提到。1258.0