什么是事件驱动架构?

事件驱动架构 (EDA) 是一种软件设计模式,有助于组织检测 “事件” 或重要的业务时刻(例如交易、实地参观、购物车丢弃等),并实时或接近实时地对其采取操作。这种模式取代了传统的 “请求/响应” 架构,在该架构中服务必须等待答复才能进入下一个任务。事件驱动架构的流程由事件运行,它旨在响应事件或针对事件执行一些操作。

事件驱动架构图

事件驱动架构通常被称为 “异步” 通信。这意味着发件人和收件人不必互相等待才能完成下一个任务。系统并不依赖于那条消息。例如,电话呼叫被视为同步的或者更像是传统的 “请求/响应”架构。有人打电话给您并要求您做些事情,请求者等待响应者完成任务,然后双方都挂断。一个异步示例是发短信。您发送一条消息,在某些情况下,您甚至不知道您发送给谁,或者是否有人在收听,但您并不等待回复。

事件驱动架构白皮书
在 Kafka、Pulsar 和其他消息传递技术之间进行选择
如何选择适合您业务的消息传递技术?阅读我们最新的白皮书以了解更多信息。

事件驱动架构的演变

在过去几年中,出现了从关注静态数据(面向服务的架构)转向关注事件(事件驱动的架构)的转变。我们正在从积累数据和数据湖转向专注于正在处理的数据,并在数据从一个地方移动到另一个地方时对其进行跟踪。传统上,大多数系统都以您能想到的以数据为中心的模式运行,其中数据是真实的来源。向事件驱动架构的转变意味着从以数据为中心的模式转变为以事件为中心的模式。在事件驱动的模式中,数据仍然很重要,但事件成为最重要的组成部分。而在面向服务的模式中,最优事项是确保不会丢失任何数据。使用事件驱动架构,优先事项是确保在事件发生时做出响应。因为对于事件而言,存在收益递减的法则,它们发生的时间越长,价值就越低。但是,面向服务的架构和事件驱动的架构当前经常一起使用。

事件驱动架构通常使用跟踪事物的日志类比。分析师们将事件视为发生的不可改变的事情。如果您想弄清楚过去发生了什么,您可以回溯并回放日志。而在以数据为中心的模式中,您主要关注现在的数据状态。然后,分析师在描述以数据为中心和以事件为中心的架构之间的区别时使用的最后一个类比是,他们经常在信息存储库和围绕企业传送信息的神经系统之间对两者进行比较。

使用事件驱动架构时,您有生成和发送事件通知的事件生成器,并且您可能有一个或多个事件的使用者,其中接收事件会触发处理逻辑。例如,假设 Netflix 刚上传了一部新电影。可能存在几个应用程序在监听或等待该通知,然后触发自己的内部系统向用户发布有关该事件的信息。这与传统的请求-回复消息不同,因为应用程序仍在运行,即使他们可能在监听此事件,但在等待它们时并没有瘫痪。而且,他们能够在消息发布时做出回应。因此,许多服务可以并行运行。

什么是事件?

事件被定义为某些关键业务系统状态的变化。例如,有人购买产品,其他人办理登机手续或公共汽车抵达某个地方迟到了。如果人们考虑一下,无论哪个行业,事件到处都存在,并且不断发生。它们在任何企业中都普遍存在。这包括通过生成、发布、检测或消费创建消息的任何事情都被视为事件。事件与消息是分开的,因为尽管事件是发生的事,但消息是转发事件发生的行进通知。在事件驱动架构中,事件可能会针对事件的发生触发一个或多个操作或进程。事件的例子可能包括:

  • 请求重置密码
  • 到达的包裹已送达目的地
  • 超市仓库更新其库存
  • 未经授权的访问尝试被拒绝

这些事件中的每一个都可能触发一个或多个作为响应的操作或进程。一种响应可能是简单地记录事件以便进行监控。其他可能是:

  • 向客户发送重置密码的电子邮件
  • 售票票据已结清
  • 下单订更多的生菜(或任何不足的材料)
  • 账户被锁定并通知安全人员

使用事件驱动架构,当发送事件通知时,系统会捕捉发生的事情,例如发生了状态变化,并等待向发出请求的人发送回复,无论他们何时请求回复。收到该消息的应用程序可以做出响应,也可以等待响应,直到正在等待的状态发生变化。

围绕事件驱动架构构建的应用程序可实现更敏捷、可扩展、符合情境且响应迅速的数字化业务应用程序。

通过情境事件处理进行实时操作
通过情境事件处理进行实时操作
在我们最新的解决方案简介中,了解 5 种事件处理方法,以及如何做出更好、更快、更明智的决策。

事件驱动架构如何运作?

事件驱动架构的组成可以包括三个部分:生产者、消费者、经纪商。经纪商是可选的,特别是当您有一个单一生产商和单一消费者彼此直接沟通,而生产者只是将事件发送给消费者时。例如,生产者只发送到数据库或数据仓库,以便收集和存储事件以供分析。在企业中,最常见的是,您有多个来源发送所有类型的活动,其中一个或多个消费者对部分或全部事件感兴趣。

让我们来看一个例子。如果您是零售商,您可能会收集您在世界各地所有商店发生的所有购买行为的信息。您正在将它们输入到事件驱动架构中,该架构正在监视欺诈行为,将它们发送到信用卡处理器或接下来需要采取的任何操作。对于制造商来说,您的设备中有各种数据会告诉您温度和压力等事实,因此您可以根据数据告知的内容,实时监控这些事件,并采取预测故障或计划维护等措施。