用途:帮助在分布式系统中按“要消除的具体约束”选择集成与演进模式,强调每个模式只换来一项保证,同时增加运维复杂度,应基于证据而非架构时尚采用。
主要能力:提供选择表,把观察到的约束映射到模式与需接受的代价。例如:写入需原子更新数据库并发布事件用事务性发件箱,代价是运行并监控中继(轮询或 CDC);读写模型分化用 CQRS,代价是两套模型、同步延迟与双倍测试;变更序列本身即产品(审计、重放、时态查询)用事件溯源,代价是投影、事件版本化、难以删除;跨服务业务事务无法持锁用带补偿的 Saga,代价是每步补偿且无隔离;仅一个实例可运行任务或拥有资源用基于租约的领导者选举,代价是隔离令牌与脑裂处理;横切关注点重复用边车或大使,代价是每 Pod 多一进程;遗留或第三方模型会污染领域用防腐层;不同客户端界面需不同聚合形状用 BFF;单体需无重写冻结地替换用绞杀者。
用法要点:绝不双写,先写自己的存储,再从发件箱或 CDC 流发布。Saga 编排把序列放在一个协调者,超过约 4 步或补偿需一起推理时使用;编舞让各服务对事件反应,适合 2-3 个已发布事件的服务间的短流程。每个 Saga 步骤须在实现前定义补偿;无补偿的步骤须移到末尾或改为幂等可重试。用同一 id 贯穿日志、事件与补偿。演进上,绞杀者一次路由一个切片,新旧并行,验证流量与数据后再退役旧路径;服务内用抽象分支;模式与事件变更遵循扩展-收缩。
限制与反模式:默认不用 CQRS,仅当单一模型明显无法服务两侧时才拆分;普通 CRUD 不用事件溯源,审计需求用审计日志;不双写;编舞不超过 4 步;热路径不用两阶段提交;分布式锁不作为正确性机制,租约在 GC 暂停下会过期,应使用隔离令牌或单一所有权。
资料未提供具体安装命令、代码示例、收费与平台信息。