📜  事件驱动架构 (EDA) 概述(1)

📅  最后修改于: 2023-12-03 15:36:02.999000             🧑  作者: Mango

事件驱动架构 (EDA) 概述

什么是事件驱动架构

事件驱动架构 (Event-Driven Architecture,简称EDA) 是一种基于事件和事件数据的异步编程模式,它强调应用程序的异步事件通信和最终一致性。

在传统的架构中,系统通常是通过请求-响应方式进行交互,例如Web服务。当系统受到请求时,它会执行操作并返回响应。相比之下,EDA 强调系统内部组件之间的事件通信。当组件发生某些事情时,它将发出一个事件,然后其他组件可以选择响应这个事件,而无需等待请求。这使得系统更加松散耦合和高度可扩展。

EDA 架构的优点
可扩展性

EDA 架构的松耦合性使得其在处理大量并发请求方面非常有优势。与传统的请求-响应架构不同的是,EDA 提供了一种异步通信方式。这使得应用程序能够在处理请求时同时响应事件和其他请求。此外,EDA 使得系统的组件能够独立地扩展和升级,而无需考虑系统其他组件的运行状态。

可用性

EDA 架构在很大程度上依赖于异步事件通信,而异步通信能确保系统的可用性。当某个组件失效时,系统的其他组件仍能够继续响应事件和请求。通过使用异步消息传递机制,EDA 可以确保系统向前推进,并保持一致性。

灵活性

EDA 架构是一种模块化设计架构,并且是松散耦合的。该架构可以帮助开发人员构建易于修改和升级的系统。在传统架构中,更改一个组件通常需要重新构建整个系统。但在 EDA 架构中,如果您需要进行更改,则只需要升级和替换受影响组件即可。

EDA 架构的工作原理

EDA 架构强调事件和事件数据之间的异步通信。在 EDA 中,组件通常会发出事件,其他组件可以选择同步或异步响应这些事件。例如,当一个交易在银行中发生时,会触发多个事件,如从一个帐户中扣除资金,向另一个帐户添加资金,以及在交易历史记录中创建记录。其他组件可以选择同步或异步响应这些事件,例如,发送消息给客户,更新余额或生成其他报告。

EDA 架构使用以下功能来提高可扩展性、可用性和灵活性:

Message broker

Message broker 充当系统中组件之间的消息传递介质。当一个组件发出一个事件时,它将发送一个消息到 Message broker。然后,其他组件可以选择同步或异步地接收和处理该事件。

Event store

Event store 是一个可持久化存储系统,用于存储事件。它具有基本的 CRUD (Create、Read、Update、Delete(CRUD)) 操作,这使得系统在处理事务历史记录时变得更加容易。

EDA 架构的缺点

EDA 架构也存在一些缺点,包括:

Message ordering

EDA 中,如果事件的处理是有时间顺序要求的,那么就需要斟酌事件的顺序性或再考虑不使用 EDA 架构。

详细的错误处理

在使用 EDA 架构时,需要仔细考虑事件处理的错误处理。如果一个事件的处理器发生错误,那么其它处理器仍需要得到通知和响应,并要做出适当响应。

EDA 和微服务架构的关系

EDA 架构和微服务架构之间没有明显的边界。微服务是一种通过将单一应用程序分成小模块化应用程序来提高系统灵活性和可扩展性的架构模式。EDA 强调的是异步消息通信和事件驱动,而微服务则更强调在小型服务之间发送 REST、RPC 或其他消息类型的通信。EDA 可以为微服务提供一个独立的事件处理流程。微服务可以在自己的服务范围内响应事件,并运行其自己的子系统。然而,EDA 也可以被用作微服务架构中的一种消息风格。

所以,在微服务中使用事件架构,可以使得微服务间联动时能够更加优雅,设计更加灵活。当然也可以完全不采用EDA模式,根据项目的整体设计考虑是否使用。