知识卡片

引入命令总线改同步为异步

普通读书笔记卡 · 1976.v

内容

若命令执行时间长、或需承受高并发、又无须实时结果,可引入命令总线(常用消息队列)把同步命令改为异步。命令服务作为中转站,收到请求后不做处理、立刻转发给消息队列;命令处理器作为订阅者收到后再调领域模型执行。这使架构变化:接收请求的远程服务与命令处理器逻辑上属同一上下文,物理上却部署在不同节点。引入命令总线增加复杂度,即使同一上下文内也引入分布式通信,但提高了响应能力。发散:其本质是用”异步+排队”削平峰值压力,代价是牺牲实时结果与部署简单性。

参考来源

- 位置:《解构领域驱动设计》第18章《领域驱动设计的战略考量》18.3.3(源文件:_epub-src/OEBPS/031.xhtml) - 结论依据:原文说明命令总线将同步命令改为异步、命令服务只做中转、命令处理器订阅执行,并指出其提升响应能力的代价是复杂度上升。 - 原始内容:就可以引入命令总线,将同步的命令请求改为异步方式……命令服务相当于是命令请求的中转站,在接收到调用者的命令请求后,不做任何处理,立刻将命令消息转发给消息队列。