事件驱动理论(深析事件驱动架构模式)

事件驱动架构(EDA)是一种软件架构范例,它促进事件的产生、检测、消费和反应。

这种架构模式可以通过在松散耦合的软件组件和服务之间传输事件的应用程序和系统的设计和实现来应用。

https://en.wikipedia.org/wiki/Event-driven_architecture

通过维基百科,我们可以看到:

事件驱动架构是软件架构的一种范式,它可以促进事件的生成、检测和使用。架构模式是通过松耦合在应用程序之间传输数据。

事件驱动架构是如何工作的?

在事件驱动架构中,当一个微服务执行其他微服务可能感兴趣的操作时,它会将事件发布到事件代理。微服务被称为生产者。系统中的其他微服务称为消费者,可以处理事件。

有两种类型的消息模式:消息队列和发布与订阅。两者的区别在于,消息队列中只有一个消费者可以处理事件,而发布-订阅模式下可以有多个消费者,消费者可以订阅自己感兴趣的事件。

一旦消费者成功处理了一个事件,他们将向事件代理发送一个ACK。代理商是生产者和消费者之间的中介,这样生产者就不用管哪个消费者在消费,反之亦然。

事件驱动架构的优势

耦合

生产者和消费者不必知道对方是谁,这使得服务非常松散地耦合,并且易于修改、测试和部署。

易于伸缩

通过横向扩展生产者和消费者,可以快速实现可伸缩性(无需重新设计系统),并且可以允许生产者和消费者之间的速率不匹配,从而实现较小的增量缩放改进。

强大的容错能力

如果使用者由于处理事件过程中的异常而停止工作,并且没有向事件代理发送ACK,则事件不会丢失,其他使用者实例将再次使用该消息,或者等待使用者恢复后再再次使用该消息。

易于扩展

因为生成的数据可以被多个消费者使用,所以存在一对多的关系。您只需要添加一个额外的消费者来使用新函数的事件。

数据重放

可以消费过去的数据(一般用于数据恢复)。

事件驱动架构的挑战

难以推理

如上所述,事件驱动架构是松散耦合的。生产者和消费者不知道对方是谁,所以很难一眼看出谁在消费数据,谁在生产数据。

事件很难设计。

因为一个事件可以被任何消费者消费,所以它必须是可重用的,而不是为一个消费者定制的。

很难改变事件。

系统会随着时间而变化,这意味着事件也会发生变化,从而促使系统产生新的行为。很难在不影响其他微服务的情况下改变事件,尤其是在扩展的系统中,尤其是当团队无法跟踪谁在使用他们的数据时。当事件被持久化和回放时,系统还需要能够解析事件的所有版本历史,随着时间的推移,这可能会导致极大的复杂性。

同步事件流

从上面的描述可以看出,事件驱动架构具有特定的异步特性。如果要用这种架构体系来同步事件流,可能不太合适。您可以使用其他模式来实现这一点,比如REST(请求-响应)。

集中

我们上面说过,事件代理是生产者和消费者之间的中介,是连接所有其他组件的组件,所以非常重要。一旦事件代理挂起,所有其他相关模块都将停止,因此事件代理必须保持高度可用。

摘要

本文介绍了事件驱动架构的定义及其工作原理。深入分析了这种架构的优势和挑战,希望对大家有所帮助。

(0)
上一篇 2022年7月17日
下一篇 2022年7月17日

相关推荐