什么是事件驱动型架构?

事件驱动型架构 (EDA) 是一种软件设计模式,它使系统能够对事件进行实时检测、处理、传递和响应。EDA 会在事件发生时立即传递事件,让需要了解事件的任何人员、服务或事件驱动型应用程序能够实时作出响应。

异步消息传递和松散耦合是事件驱动型架构的两个重要方面。异步通信取代了传统的“请求和响应”架构,在这种架构中,服务必须等待回复,然后再继续执行任务。这可以实现更轻松的集成,并提高系统的可扩展性,因为它们能够以低延迟处理更多的实时数据。它还允许相关系统分离或松散耦合。这意味着应用程序和服务可以通过发布事件及使用事件来相互通信,而无需了解有关其他系统的更多信息。因此,事件驱动系统可以快速扩展并且具有很强的故障恢复能力,因为即使一个组件不可用,系统也可以继续运行。EDA 也非常适合实时处理和管理大量数据,因为组件可以对事件做出反应并在数据到达时处理数据,而无需等待完整的数据集。

什么是事件?

事件是业务系统中某个对象的状态发生的任何变化:对象被添加到存储桶中、新纪录被添加到数据库中、商品被放入购物车中或密码被重置。这是过去发生的事情,通常采用 JSON 或 YAML 格式。

事件驱动型架构为何必不可少?

所有业务流程都由事件驱动,并且对事件做出快速反应的能力对于保持生产力、效率和竞争力至关重要。应用程序、服务和人员获得事件相关信息的速度越快,企业的运营效率就越高。

在这种环境中,事件驱动型架构非常重要,因为它会在事件发生后立即传递事件,而相比之下,API 等架构方法会等待系统定期更新。

事件驱动型架构有哪些组成部分?

事件驱动型架构包括所部署和连接的软件及硬件组件,可以针对事件进行实时传递和消息传递。这些组件包括:

  • 事件发布方:这些事件来源(也称为事件生产方)生成事件,然后将其发布到事件渠道或事件总线。
  • 事件总线:这包括事件代理、消息队列和事件渠道。它是事件从事件生产方传递给事件使用方的路径。事件渠道实现了 EDA 的异步和分离特性,从而提升了系统的灵活性和可扩展性,并优化了相关消息传递组的组织结构。

事件订阅方:事件订阅方也称为事件使用方或事件侦听方,负责对事件进行接收、处理和响应。响应可能涉及更新数据库、执行任务、启动进程或生成新事件等操作。

事件驱动型架构的工作原理是什么?

在事件驱动型架构中,传递事件所涉及的步骤如下:

  1. 事件发布方生成事件,并将该数据发布到事件总线上的一个渠道(或多个渠道)。
  2. 事件订阅方会“侦听”其关注的渠道上的事件,并在相关事件发布时作出响应。它可能会触发其他工作流程、操作或事件。

事件驱动型架构通常采用发布/订阅 (pub/sub) 模式或事件流式传输模式进行部署。

  • 发布/订阅:在此模式(也称为事件消息传递模式)中,事件使用方订阅由事件生产方发布的一类消息。当生产方发布事件时,该信息会传递给所有想使用该事件的订阅方。此操作通常通过消息代理执行,该代理负责接收事件消息、在需要时对其进行翻译、管理消息顺序、为订阅方提供消息,以及在消息使用完毕后删除消息。
  • 事件流式传输:此模式中,事件使用方订阅发布方发送给代理并记录在日志中的事件流。使用方可以在任何时间点进入事件流并且仅使用它们关注的事件,而不是在每个事件发布时接收并使用该事件。事件可能会保留一段时间,让使用方可以随时接收。一些事件流式传输进程使用 Apache Kafka 等数据流平台来管理事件流的提取、处理和转换。事件流式传输还可用于复杂的事件处理,在这种处理中,使用方可以同时处理大量事件。

事件驱动型架构有哪些好处?

事件驱动型架构可以为各个行业的企业带来许多好处。

  • 提高了系统灵活性:事件驱动型架构的松散耦合特性使企业能够轻松修改、添加或移除组件,而不会影响整个系统,从而使其能够适应不断变化的需求。对开发人员来说,EDA 可通过将单体工作流分解为一系列简单的分离服务来降低复杂性,这些服务能够独立进行管理并通过事件消息进行异步传递。
  • 提高了可扩展性:EDA 支持轻松的横向扩展,使企业能够根据需要添加更多组件或服务实例来处理更多工作负载或流量。
  • 提升了系统恢复能力:EDA 的异步传递和分离组件有助于提高容错能力,因为一个组件发生故障不一定会导致整个系统中断。
  • 实时处理能力:EDA 能够对海量数据和复杂的事件模式进行实时处理,因此非常适合需要对快速变化的实际条件作出即时洞察或响应的企业。
  • 优化了资源使用:通过仅在事件发生时对其做出反应,EDA 能够帮助优化资源利用率并减少对持续运行流程的需求,从而可能节省成本并提高效率。
  • 提升速度:EDA 可以加快您的系统速度,因为不同的组件无需相互等待。

事件驱动型架构的应用场景有哪些?

事件驱动型架构的最常见应用场景包括:

  • 实时监控:EDA 让应用程序、服务和团队能够接收与系统的任何异常、更改和更新相关的即时告警,而不用等待定期检入和更新的结果。
  • 数据复制:EDA 可轻松在多项服务之间共享单个事件,这些服务可以将其事件数据复制到不同的数据库中。EDA 还可以协调在不同地区和帐户运行的系统。
  • 冗余:当一项服务中断时,事件可能会持续存在于路由器中,直到该服务恢复并能够再次使用事件。
  • 并行处理:通过 EDA,单个事件可以同时触发多个进程。
  • 集成和互操作性:事件驱动型架构使不同堆栈上运行的系统能够共享信息,而无需紧密耦合。

 

事件驱动型架构的示例有哪些?

事件驱动型架构广泛用于各行各业和各种系统。

  • 电商:EDA 使电商公司能够在商品被放入购物车中、用户进行购买、处理付款或配送包裹时立即作出响应。
  • 物联网:事件驱动型架构对于在物联网 (IoT) 系统中收集数据至关重要,它会在物联网设备检测到某些条件或指标时触发操作。
  • 股票市场:当市场状况发生变化时,EDA 可以触发自动交易策略。
  • 实时分析:EDA 可以立即触发对实时事件的分析,以检测欺诈、监控流量并根据实时条件做出更明智的决策。
  • 在线游戏:EDA 使在线游戏能够识别和响应玩家行为、移动角色或完成任务等事件。
  • 智能家居:家中的传感器和智能设备可以响应温度、动作、照明和其他事件的变化。
  • 工作流程自动化:EDA 使企业能够在复杂的工作流程中实现多个步骤的自动化,其中一个事件会触发流程中的新步骤。

常见问题

作为云原生 架构的重要组成部分,微服务是由松散耦合、可独立部署的服务构建的应用程序。微服务通常通过轻量级协议(如 HTTP、消息传递队列或事件流)相互进行通信。事件驱动型架构通常是实施微服务的最佳方式,因为它可以提升模块化程度、容错能力和可扩展性。

在事件驱动系统中,分离和松散耦合是两个相关的概念。分离是消除系统内不同组件之间依赖关系的过程,使每个组件都不再依赖于另一个组件。这使得组件更加独立,并创建了一个更灵活、恢复能力更强的系统。松散耦合是一种分离形式,可最大限度地减少依赖性,同时不会完全分离组件。组件可能仍然会相互交互,但交互方式不会产生持久的依赖关系。

无服务器计算是一种计算范式,在此范式下,开发人员可以按需访问后端服务,使他们能够专注于编写代码,而不必担心如何管理底层服务器和基础架构。它基于事件驱动型架构,其中功能由 HTTP 请求、文件上传和数据库更新等事件触发,以简化应用程序架构并提高可扩展性。

客户为什么选择 Akamai

Akamai 是一家致力于支持并保护在线商业活动的网络安全和云计算公司。我们卓越的安全解决方案、出色的威胁情报和全球运营团队可提供深度防御,保护各地的企业数据和应用程序。Akamai 的全栈云计算解决方案可在海外分布广泛的平台上提供高性能且经济实惠的服务。众多全球企业信赖 Akamai,凭借我们卓越的可靠性、扩展性和专业技术,企业能够从容拓展业务。

相关博文

Akamai Inference Cloud 赋能 AI 无处不在
全新推出 Akamai Inference Cloud,这是我们携手 NVIDIA 打造的专用平台,旨在重新定义 AI 的部署边界与应用模式。
AI 破局,抓住边缘
深入探索 Akamai Inference Cloud 如何继承并发展我们近 30 年来在分布式架构领域的开创性成果,将 AI 推理能力进一步延伸至网络边缘。
400 位高管揭示 AI 应用的未来
Forrester 研究揭示,大多数企业已洞察先机,利用 AI 在竞争中脱颖而出、实现个性化体验并高效锁定客户。