52 事件驱动架构:利用异步事件解耦微服务(代码实操)
你好,欢迎来到第 52 讲。
在过去的几讲中,我们反复提到了一个概念——领域事件(Domain Event)。
- 在 CQRS 模式中,我们用它来同步“写库”和“读库”的数据。
- 在上下文映射中,我们用它来实现不同限界上下文之间的异步通信。
可以说,领域事件是实现限界上下文之间“低耦合”的关键所在。而以领域事件为核心,构建服务间协作关系的架构风格,就是我们今天要学习的事件驱动架构(Event-Driven Architecture, EDA)。
传统的服务间调用,是请求/响应(Request/Response)模式的。服务 A 需要服务 B 做某件事,它会直接通过 RPC 或 HTTP 调用服务 B 的接口,然后同步地等待B 返回结果。这种方式,就像打电话,A 必须等 B 接电话并说完,才能继续做自己的事。
而事件驱动架构,则是一种**发布/订阅(Publish/Subscribe)**模式。服务 A 在完成自己的工作后,只是在“公共广播”里喊一声:“我做完某件事了!”(发布一个事件)。其他任何关心这件事的服务(B、C、D…),自己去“收听”这个广播。当它们听到这个消息后,再各自独立地去执行自己的后续任务。
这种方式,就像发朋友圈。你只管发,不关心谁会看、谁会点赞、谁会评论。你的朋友们,可以随时看,也可以选择不看。你和