事件驱动架构(EDA)是关于使用事件作为系统内通信的方式。通常,利用消息代理异步发布和使用事件。发布者不知道谁在消费事件,消费者也不知道彼此。事件驱动架构只是实现系统内服务之间松散耦合的一种方法。
什么是事件?
事件是表示系统中状态变化的数据点。它没有指定应该发生什么以及更改会如何修改系统,它只通知系统特定的状态更改。当用户做出一个动作时,它们触发一个事件。
组件
事件驱动架构有三个关键组件:
- 事件生产者(Event producers):将事件发布到路由器。
- 事件路由器(Event routers):过滤并将事件推送给消费者。
- 事件消费者(Event consumers):使用事件反映系统中的更改。
注:图中的点表示系统中的不同事件。
模式
有几种方法可以实现事件驱动架构,我们使用哪种方法取决于使用场景,以下是一些常见示例:
- Sagas
- 发布订阅(Publish-Subscribe)
- 事件源(Event Sourcing)
- 命令和查询责任分离(Command and Query Responsibility Segregation,CQRS)
注:这些方法后续会分别讨论。
优点
让我们讨论它的一些优点:
- 使生产者和消费者解耦。
- 高度可扩展和分布式。
- 易于添加新消费者。
- 提高敏捷性。
使用场景
以下是一些适合使用事件驱动架构的常见场景:
- 元数据和度量。
- 服务器和安全日志。
- 集成异构系统。
- 扇出和并行处理。
例子
以下是一些广泛用于实现事件驱动架构的技术: