logo
Architecture Patterns

Event-Driven Architecture (EDA)

事件驱动架构

Event-Driven Architecture (EDA) 通过事件来驱动系统内的通信。通常会借助 message broker 异步发布与消费事件。Publisher 不知道谁在消费事件,consumers 也不知道彼此的存在。EDA 的核心是实现服务之间的 loose coupling。

What is an event?

Event 是系统状态变化的一个 data point。它不指定要怎么处理,只是通知系统发生了变化。当用户执行操作时,就会触发 event。

Components

事件驱动架构的三个核心组件:

  • Event producers:发布事件到 router。
  • Event routers:过滤并把事件推送给 consumers。
  • Event consumers:接收事件并反映系统状态变化。

event-driven-architecture

图中的点表示不同事件。

Patterns

事件驱动架构的实现方式很多,具体取决于 use case,常见模式包括:

以上模式后续单独展开。

Advantages

  • Producer 与 consumer 解耦
  • 高 scalability 与分布式能力
  • 易于新增 consumers
  • 更高 agility

Challenges

  • 消息投递保证
  • 错误处理困难
  • 系统整体复杂度高
  • Exactly-once 与 in-order 处理难

Use cases

  • Metadata 与 metrics
  • Server 与 security logs
  • 异构系统集成
  • Fanout 与并行处理

Examples

相关练习题

Event-Driven Architecture (EDA)

暂无相关练习题