跨服务时,你通常会用强一致性换取最终一致性,并依靠 CQRS 和事件溯源让这种取舍变得切实可行且正确。
最终一致性
变更发生后,各副本会“很快”收敛,而非瞬间收敛。这对大多数业务流程是可接受的(库存数量延迟一秒无妨),但对某些场景则不可接受(例如银行余额查询)。
CQRS(命令查询职责分离)
将写模型与一个或多个读模型分离。
text
Command ─▶ Write model ─emits events─▶ [ Read model(s) ]
Query ──────────────────────────────▶ Read model (denormalized, fast)
