技能 saga-orchestration
📦

saga-orchestration

安全

实现分布式事务的 Saga 模式

也可从以下获取: wshobson

在发生故障时通过可靠的补偿处理,协调跨微服务的多步骤业务流程。

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

下载技能 ZIP

2

在 Claude 中上传

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

3

开启并开始使用

测试它

正在使用“saga-orchestration”。 为订单处理创建一个包含支付和库存步骤的 saga 编排器

预期结果:

一个实现 SagaOrchestrator 的 Python 类,包含返回 SagaStep 对象的 define_steps 方法,以及用于 start、handle_step_completed 和 handle_step_failed 的异步方法,具有正确的状态转换

正在使用“saga-orchestration”。 展示如何在订单 saga 中处理支付失败的补偿

预期结果:

补偿逻辑按相反顺序遍历已完成的步骤,发布补偿事件(如 RefundPayment 和 ReleaseInventory)以撤销成功步骤的效果

安全审计

安全
v1 • 2/24/2026

All 19 static findings are false positives. The pattern-matching scanner misidentified Python code templates as Ruby shell execution, markdown text as cryptographic algorithms, and service names in diagrams as C2 indicators. The skill contains legitimate saga orchestration patterns for distributed systems with no security risks.

2
已扫描文件
526
分析行数
3
发现项
1
审计总数
中风险问题 (3)
Pattern Matching False Positives
Scanner flagged Python code blocks as 'Ruby/shell backtick execution'. The code uses legitimate Python syntax (import, dataclass, async/await) for saga templates.
Misidentified Markdown Content
Scanner flagged text patterns as 'weak cryptographic algorithm' and 'C2 keywords'. These are normal text: best practices, table headers, and service names in ASCII diagrams.
Hardcoded URLs - Legitimate References
Two URLs referenced in the resources section are legitimate technical references: microservices.io pattern documentation and a published book.
审计者: claude

质量评分

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

你能构建什么

电子商务订单处理

实现多步骤订单履行,包括库存预留、支付处理和配送编排,故障时自动回滚。

金融交易工作流

创建可靠的金融流程,为多步骤转账、退款和对账任务提供原子补偿。

跨服务审批系统

构建跨多个服务的审批工作流,当审批被撤销或过期时自动补偿。

试试这些提示

基础 Saga 结构
创建一个 Python saga 编排器基类,管理 saga 状态(Started、Pending、Compensating、Completed、Failed),包含启动 saga、处理步骤完成以及在故障时按相反顺序执行补偿的方法。
订单履行工作流
实现一个 OrderFulfillmentSaga,协调 reserve_inventory、process_payment、create_shipment 和 send_confirmation 步骤,并为每个步骤提供适当的补偿操作。
基于编排的事件
创建一个事件驱动的编排 saga,使用事件总线发布和订阅事件(如 OrderCreated、InventoryReserved、PaymentProcessed 和 ShipmentCreated),无需中央编排器。
带超时处理的 Saga
扩展 saga 编排器以包含每个步骤的超时处理。添加计划的超时检查,如果步骤在配置的时间窗口内未完成则触发补偿。

最佳实践

  • 始终在设计正向操作之前设计补偿操作——补偿必须可靠
  • 为所有命令使用幂等键,安全处理重复消息而不产生副作用
  • 在所有事件和日志中存储关联 ID,以跨服务边界跟踪 saga 执行

避免

  • 不要假设 saga 步骤会立即完成——始终实现异步处理和状态持久化
  • 不要跳过补偿测试——模拟每个步骤的故障并验证回滚有效
  • 不要直接耦合服务——使用异步事件消息保持松耦合

常见问题

编排和编排 saga 模式有什么区别?
编排使用中央协调器指导所有步骤。编排使用事件,每个服务响应来自其他服务的事件。编排提供更好的可见性和控制;编排提供更低的耦合度。
saga 模式中的补偿如何工作?
补偿是撤销已完成步骤效果的逆向操作。当步骤失败时,它们按相反顺序运行。例如,如果支付成功但配送失败,补偿将退款。
如果补偿也失败会发生什么?
补偿完成后,saga 进入 Failed 状态。应通知操作员进行手动干预。设计补偿时要使其幂等且可靠,以最小化这种情况。
saga 模式中的超时如何工作?
每个步骤都跟踪超时。如果步骤在超时窗口内未完成,saga 将其视为故障并触发补偿。使用调度器检查超时的步骤。
saga 模式可以处理重复消息吗?
可以,通过使用幂等键。每个命令包含一个唯一的键,处理程序在执行操作之前检查该键是否已被处理。这可以防止重复扣款或重复发货。
什么时候不应该使用 saga 模式?
当需要强一致性(ACID 事务)时、当操作非常短且可以使用本地事务时、或当业务流程简单到单个服务可以处理时,避免使用 saga。