CQRS解构: 用读写分离设计API

本文讨论的是如何使用CQRS实现API设计。

概述
下面是名为Command / Query Responsibility Segregation(CQRS)的设计模式:


返回数据 做出改变
查询 ✔️ ❌
命令 ❌ ✔️

查询和命令是两种分离的API。

为何使用这种模式?我喜欢它有几个原因。作为API的消费者,我永远不必担心使用API出现异常了;相反,我能确切地知道哪些API调用会专门应付对系统的更改请求,没有含糊之处。这使得API 易于推理。

我曾经尝试创建一个统一的界面来完成两者,但是随着时间推移,出现“服务于两个主人“”的典型问题,单一界面变得更加混乱。

时间长了会发生:“我们不使用这个字段,为什么我们要更新它?。” 回应:“我不知道,但继续这样做或会出问题。”