mcpField
C
cqrs-implementation

cqrs-implementation

github.com/wshobson开发41.9k11.1k 次安装2 周前更新
代码仓库

关于 cqrs-implementation

cqrs-implementation 是面向开发者的 CQRS 实施指南,介绍命令与查询分离的架构及关键组件,并提供最佳实践指引。详细模板和示例位于 references/details.md。

主要功能

  1. 01分离命令与查询模型
  2. 02说明命令、事件和查询组件
  3. 03介绍读模型投影
  4. 04涵盖事件版本管理
  5. 05提供详细模板与示例

适用场景

  1. 01独立扩展读写负载
  2. 02构建事件溯源系统
  3. 03优化复杂查询与报表
  4. 04设计不同的读写数据模型

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wshobson/agents --skill cqrs-implementation

安装后在 Claude Code 中输入/cqrs-implementation确认已加载。

附带文件references/details.md

详细介绍

CQRS 实现

实现 CQRS(命令查询职责分离)模式的全面指南。

何时使用此技能

  • 分离读写关注点
  • 独立于写入扩展读取
  • 构建事件溯源系统
  • 优化复杂查询场景
  • 需要不同的读/写数据模型
  • 高性能报告需求

核心概念

1. CQRS 架构
                    ┌─────────────┐
                    │   Client    │
                    └──────┬──────┘
                           │
              ┌────────────┴────────────┐
              │                         │
              ▼                         ▼
       ┌─────────────┐          ┌─────────────┐
       │  Commands   │          │   Queries   │
       │    API      │          │    API      │
       └──────┬──────┘          └──────┬──────┘
              │                         │
              ▼                         ▼
       ┌─────────────┐          ┌─────────────┐
       │  Command    │          │   Query     │
       │  Handlers   │          │  Handlers   │
       └──────┬──────┘          └──────┬──────┘
              │                         │
              ▼                         ▼
       ┌─────────────┐          ┌─────────────┐
       │   Write     │─────────►│    Read     │
       │   Model     │  Events  │   Model     │
       └─────────────┘          └─────────────┘
2. 关键组件
组件职责
命令更改状态的意图
命令处理器验证并执行命令
事件状态变更的记录
查询数据请求
查询处理器从读取模型检索数据
投影器从事件更新读取模型

模板和详细工作示例

完整的模板库和详细工作示例位于 references/details.md。当您需要具体模板时,请阅读该文件。

最佳实践

应该做的
  • 分离命令和查询模型 - 不同需求
  • 使用最终一致性 - 接受传播延迟
  • 在命令处理器中验证 - 在状态变更之前
  • 反规范化读取模型 - 为查询优化
  • 为事件添加版本 - 用于模式演变
不应该做的
  • 不要在命令中查询 - 仅用于写入
  • 不要耦合读/写模式 - 独立演变
  • 不要过度设计 - 从简单开始
  • 不要忽视一致性 SLA - 定义可接受的延迟

评论

支持 Markdown