《系统设计》课程学习笔记—事件驱动架构(EDA)

227 阅读2分钟

事件驱动架构(EDA)是关于使用事件作为系统内通信的方式。通常,利用消息代理异步发布和使用事件。发布者不知道谁在消费事件,消费者也不知道彼此。事件驱动架构只是实现系统内服务之间松散耦合的一种方法。

什么是事件?

事件是表示系统中状态变化的数据点。它没有指定应该发生什么以及更改会如何修改系统,它只通知系统特定的状态更改。当用户做出一个动作时,它们触发一个事件。

组件

事件驱动架构有三个关键组件:

  • 事件生产者(Event producers):将事件发布到路由器。
  • 事件路由器(Event routers):过滤并将事件推送给消费者。
  • 事件消费者(Event consumers):使用事件反映系统中的更改。

event-driven-architecture.webp

注:图中的点表示系统中的不同事件。

模式

有几种方法可以实现事件驱动架构,我们使用哪种方法取决于使用场景,以下是一些常见示例:

  • Sagas
  • 发布订阅(Publish-Subscribe)
  • 事件源(Event Sourcing)
  • 命令和查询责任分离(Command and Query Responsibility Segregation,CQRS)

注:这些方法后续会分别讨论。

优点

让我们讨论它的一些优点:

  • 使生产者和消费者解耦。
  • 高度可扩展和分布式。
  • 易于添加新消费者。
  • 提高敏捷性。

使用场景

以下是一些适合使用事件驱动架构的常见场景:

  • 元数据和度量。
  • 服务器和安全日志。
  • 集成异构系统。
  • 扇出和并行处理。

例子

以下是一些广泛用于实现事件驱动架构的技术: