事件驱动架构(EDA)是一种方法,其中系统组件通过事件进行交互:关于发生的变化或行动的消息。系统由事件生成器(producers),处理器(consumers)和消息总线(message bus,broker)组成,后者负责传递事件。
EDA 允许创建灵活可扩展、低耦合的系统。一个组件的更改不需要修改其他组件:只需生成和处理事件。
代码示例(在 Node.js 中生成和处理事件):
const EventEmitter = require('events'); class MyEmitter extends EventEmitter {} const emitter = new MyEmitter(); // 事件处理器 emitter.on('userCreated', (user) => { console.log('用户已创建:', user); }); // 生成事件 emitter.emit('userCreated', { id: 1, name: 'Ivan' });
关键特性:
EDA 是否是微服务架构的对立面?
不,这不是对立面。微服务通常使用 EDA 进行服务之间的通信。
是否可以仅使用消息代理来使用 EDA?
不一定。本地事件(例如,通过观察者模式)也实现 EDA,但代理允许构建分布式系统。
EDA 是否保证数据的不变性?
不。EDA 是关于组件之间的交互;对重复处理的鲁棒性(幂等性)和数据一致性需要明确实现。