技能 cqrs-implementation
📦

cqrs-implementation

安全

实现CQRS架构

也可从以下获取: wshobson

使用传统CRUD模式构建需要独立扩展读写操作的应用程序具有挑战性。本技能提供可直接使用的CQRS模板和模式,用于分离命令和查询职责,从而针对写密集型和读密集型工作负载实现优化的性能。

支持: Claude Codex Code(CC)
🥉 75 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“cqrs-implementation”。 如何在我的Python应用程序中分离读写操作?

预期结果:

  • CQRS将您的应用程序分成两个不同的模型:命令(改变状态的写操作)和查询(返回数据的读操作)。该技能提供Python模板,展示了如何实现命令和查询处理程序、用于分派的命令总线,以及针对特定查询模式优化的单独读模型。
  • 关键组件包括:带验证的命令基类、CommandHandler接口、用于路由的CommandBus、查询基类、用于数据检索的QueryHandler,以及用于保持视图更新的ReadModelSynchronizer。

正在使用“cqrs-implementation”。 展示如何处理写入数据与读取数据之间的延迟

预期结果:

  • 这称为最终一致性。该技能包含一种ConsistentQueryHandler模式,可以在写入后等待读模型追赶。它轮询投影版本并重试直到达到预期版本,并带有可配置的超时。
  • 如果超时过期,它会返回带有警告标志的过期数据,以便您的应用程序可以决定是否继续或通知用户。

安全审计

安全
v1 • 2/24/2026

Static analysis detected 30 potential issues, but all are false positives. The scanner misidentified markdown code fences as shell execution, database queries as network fetches, documentation URLs as suspicious, and sort order strings as weak cryptography. This is a legitimate CQRS educational skill with Python code templates. No actual security risks identified.

2
已扫描文件
579
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
100
规范符合性

你能构建什么

构建高性能电子商务平台

将订单处理(写入)与产品目录浏览(读取)分离,以使用不同的扩展策略处理黑色星期五流量峰值。

实施实时分析仪表板

为复杂聚合查询创建优化的读模型,同时为数据 ingestion 管道保持简单的写入操作。

将单体应用迁移到事件溯源架构

逐步引入CQRS以分离关注点,为未来的事件溯源能力做准备。

试试这些提示

基础CQRS设置
帮助我在Python中设置基本的CQRS结构。我需要命令和查询基类、命令总线,以及用于用户管理域的简单处理程序。
读模型投影
展示如何实现读模型投影,使非规范化的用户配置与领域事件保持同步。包括用于恢复力的检查点管理。
使用FastAPI的CQRS
创建一个FastAPI应用程序,为命令使用单独的POST/DELETE端点,为查询使用GET端点,使用依赖注入来处理命令和查询总线。
最终一致性处理器
实现在写入操作后等待读模型同步的查询处理器,包含超时和针对读写一致性的过期数据警告。

最佳实践

  • 从清晰区分命令和查询边界开始——不要在同一个处理程序中混合读写逻辑
  • 针对查询模式专门设计读模型,而不是尝试创建一刀切的视图
  • 实现幂等的命令处理程序,以在网络故障时实现安全的重试

避免

  • 在命令处理程序中查询写数据库——命令应该只验证和持久化,绝不能为业务逻辑读取数据
  • 创建试图满足所有查询模式的单一读模型——这违背了优化读模型的目的
  • 忽略最终一致性,假设即时的读写可用性而没有适当的处理

常见问题

什么是CQRS?
CQRS代表命令查询职责分离。它是一种架构模式,将读操作(查询)与写操作(命令)分离,允许各自独立优化。
何时应该使用CQRS?
当您对读写有不同的扩展需求、复杂的查询模式受益于非规范化视图,或构建事件溯源系统时,使用CQRS。
CQRS是否需要事件溯源?
不,CQRS可以独立于事件溯源使用。事件溯源是一种补充模式,将状态变更存储为事件,而CQRS专注于分离命令和查询模型。
CQRS中的最终一致性是什么?
最终一致性意味着在命令修改数据后,读模型反映该变更可能存在延迟。这是CQRS中的正常现象,需要设计应用程序来处理过期数据。
CQRS可以与REST API一起使用吗?
是的,该技能包含FastAPI模板,展示了如何将POST、PUT、DELETE用于命令,将GET用于查询,并正确分离命令和查询总线。
CQRS的主要组件是什么?
主要组件包括:Command(改变状态的意图)、Command Handler(验证和执行)、Event(变更记录)、Query(数据请求)、Query Handler(检索数据),以及Projector(更新读模型)。