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:接收事件并反映系统状态变化。

图中的点表示不同事件。
Patterns
事件驱动架构的实现方式很多,具体取决于 use case,常见模式包括:
以上模式后续单独展开。
Advantages
- Producer 与 consumer 解耦
- 高 scalability 与分布式能力
- 易于新增 consumers
- 更高 agility
Challenges
- 消息投递保证
- 错误处理困难
- 系统整体复杂度高
- Exactly-once 与 in-order 处理难
Use cases
- Metadata 与 metrics
- Server 与 security logs
- 异构系统集成
- Fanout 与并行处理