什么是事件驱动架构?

事件驱动架构 (EDA) 是一种集成模型,能够实时检测企业中的重要“事件”并采取行动,例如处理一笔交易或被放弃的购物车等。

事件驱动架构概览

企业内部的所有事件几乎都具有时效性,例如客户在线下单,传感器提示即将发生故障,股价下跌以及系统检测到安全漏洞等。每当这时,企业必须快速采取行动,而事件驱动架构 (EDA) 正好能助你一臂之力。当事件发生时,EDA 可以帮助你创建、检测和响应事件,全方位提升客户体验以及运行效率和敏捷性等方面。

什么是事件?

首先,从基本定义上来讲,事件是指对企业具有重要意义的行为或状态变化,例如刷信用卡、办理登机手续、重置密码或更新仓库库存等。事件每时每刻都在发生,这对于各行各业的所有企业都是如此。当事件发生时,企业如果能及时捕获并响应事件,就能成为由事件驱动的企业。

什么是事件驱动架构?

事件驱动架构 (EDA) 是一种集成模型,用于实时发布、捕获、处理和响应各个分散系统中的事件。如果有一款应用发生某个事件,系统将自动向其他应用发送消息,以便需要知晓该事件的所有应用采取相应行动。

 

 

事件驱动架构采取解耦方法,让应用之间无需彼此了解,也可共享信息和完成任务。因此,事件信息或消息可以自动在应用之间自由流动。而在传统的请求/响应模型中,一个应用必须向另一应用请求所需的特定信息,得到回复后才能继续下一任务,因此运行速度远远落后于 EDA 模型。此外,得益于其解耦的特点,EDA 模型也被广泛视为微服务通信领域的一大卓越实践。

EDA 如何运作?

在事件驱动架构中,应用既是事件生产者(生产或捕获事件),也是事件消费者(处理事件并针对事件采取行动)。事件生产者使用事件代理(即消息中间件),向事件消费者实时传递事件。之后,事件消费者就可以着手处理事件,并触发其他操作、工作流或自身的事件。

 

如果事件驱动架构极其简单,只有一个事件生产者和一个事件消费者,两者之间可以直接通信,事件代理就可有可无。但是,大多数企业通常会有多个事件生产者向多个消费者发送事件,因此事件代理甚至是事件代理网络(也称“事件网格”)就变得必不可少。利用事件代理或事件网格,企业可以构建一种“松散耦合”的应用架构。

事件驱动架构的模式

事件驱动架构有两种主要的事件传递模式:发布/订阅模式和事件流模式。

 

  • 发布/订阅模式(简称 “pub/sub”):在发布/订阅模式下,事件生产者发布消息和频道,由事件消费者进行订阅。事件一经发布,将通过事件代理直接发送给所有订阅者。为避免重复,事件一旦被处理,将由事件代理删除,无法回放或访问。

  • 事件流模式:在事件流模式下,事件生产者会向事件代理发布全部事件流;事件消费者可以订阅事件流,读取事件流的任何部分,并且只处理与其相关的事件。在这种模式下,事件即使已被处理也将由事件代理保留。

三种事件处理方法

总的来说,事件消费者可以采用三种不同的方法处理事件:简单事件处理、复杂事件处理以及事件流处理。

 

  1. 简单事件处理:事件消费者接收到事件后,逐一处理各个事件。
  2. 复杂事件处理:事件消费者处理一系列事件,检测其中的模式并根据结果采取相应行动。
  3. 事件流处理:事件消费者基于数据流平台,实时处理持续的数据流(动态数据),并采取相应行动。

 

企业可以根据自身需求和用例,选择合适的事件处理方法。

事件驱动架构的用例和示例

从银行业到零售业,每个行业都有许多不同的事件驱动架构用例。 餐饮行业的用例:

 

  • 一名大学生通过外卖应用(如 Uber Eats)订了一份披萨。该应用获取了他的基本信息(姓名、地址、付款信息和订单),并发布了“披萨订单”事件

  • 披萨店订阅该事件,履行订单,并自行将“订单已就绪”事件发回外卖应用

  • 然后,外卖应用会分配一名骑手,设定预计送达时间,并提醒客户披萨正在派送中

 

电商领域的用例:

  • 网购顾客在电商网站输入自己的信用卡信息,即视为发布了“付款已提交”事件

  • 支付系统订阅该事件,处理付款,并自行发布“付款已处理”事件,表明付款成功或失败,然后将其发送回网站用户界面

  • 用户界面向客户显示付款状态,并提示后续步骤

 

其他示例:

  • 网购顾客点击某一产品,系统会基于相似产品生成产品建议

  • 客户在银行存入支票,系统会自动将存款过账到其账户

  • 零售商筛查全球交易中的欺诈行为,并为信用卡公司标出任何可疑的购买行为

  • 制造商监控其设备的流式物联网数据,并获取关于任何潜在维护问题或故障的警报

事件驱动架构的优势

事件驱动架构具有诸多优势,其中最重要的三项优势是:

 

  1. 实时工作流和响应能力。EDA 能够监控事件并在事件发生时快速作出响应,通常会利用机器人流程自动化 (RPA) 技术加速工作流,并实时触发后续步骤。在大型销售活动或假期等需求高峰期,这项优势能够起到尤为重要的作用。此外,EDA 强大的响应能力也适用于日常(即非高峰期)工作流,全面优化从供应链自动化到欺诈检测的各个环节。
  2. 异步消息传递。EDA 中的应用以异步方式进行通信,也就是事件生产者发布事件消息后,无需等待事件消费者接收。这不仅可以让应用无需等待,即可继续其他任务,而且还可以简化集成。
  3. 解耦和松散耦合。事件驱动架构中的应用之间处于解耦或松散耦合状态,不依赖彼此的可用性。各个应用可以独立进行更新、测试和部署,而且发生故障后不会影响其他应用。因此,EDA 模型比传统模型更经久耐用。在解耦状态下,你可以根据需要轻松添加其他发布者和消费者,而无需每次发生变更后都重写代码。

结语

事件网格能够提供面向各种超大型云平台和私有云环境的部署选项。经过配置,事件网格可以形成分布式事件代理网格,部署在各种私有云和公有云环境中。事件网格可提供一套完整的事件服务,包括事件流、事件管理和监控,以及动态消息路由和细粒度过滤等高级功能。

placeholder

探索 SAP 的事件网格功能

借助 SAP Integration Suite [集成套件] 的事件驱动架构,增强你的应用。

placeholder

获取独家洞见

立即注册,直接通过邮箱订阅商业资讯,获取丰富的独家洞见。