知识卡片

事件驱动架构以协同而非编排实现最大松耦合

普通读书笔记卡 · 1980.y

内容

采用事件驱动模型时,限界上下文间的协作应优先遵循事件驱动架构(event-driven architecture)风格——以事件为媒介实现组件/服务间最大松耦合,协作采用发布者/订阅者模式,事件经事件总线(消息中间件)异步并发传递。Sam Newman指出上下文协作有两种风格:编排(orchestration)以一个上下文的应用服务作中心控制器协调多方,流程清晰但主服务承担过多职责、带来耦合;协同(choreography)以发布/订阅事件方式,主服务异步发事件到总线,相关上下文各自订阅处理,上下文间被总线隔离、唯一耦合点是事件。事件驱动架构采用协同风格,是发布者/订阅者上下文映射模式的运用。发散:中心编排易读但脆;事件协同松耦合但整体流程「看不见」,取舍看你更怕耦合还是更怕可观测性下降。

参考来源

- 位置:《解构领域驱动设计》附录B B.3.1(源文件:_epub-src/OEBPS/035.xhtml) - 结论依据:原文定义事件驱动架构、编排与协同两种协作风格及其取舍,指出采用协同。 - 原始内容:事件驱动架构……实现组件或服务之间最大松耦合的架构风格……编排(orchestration)与协同(choreography)……事件驱动架构采用了协同协作风格。