SuperAPI AI 工具集

saga-patterns

部署与运维

查看项目

更新于 10-16 04:30

技能介绍

用途:在微服务架构中维护跨服务业务事务的一致性,无需分布式锁。适用于多服务业务事务(如订单→支付→库存→发货)、必须最终成功或整体回滚的操作、长时业务流程(分钟到天级),以及希望避免两阶段提交(2PC)的微服务。不适用于单数据库操作(用事务)、需要实时一致性的场景(用同步调用),或无法接受最终一致性的情况。

主要能力:提供编排与协同两种模式。编排由中心编排器控制,服务依赖编排器,观测点单一,适合复杂有序工作流;协同基于分布式事件,松耦合,需分布式追踪,适合简单并行流程。资料给出 SagaStatus 状态枚举、SagaStep、SagaContext、SagaOrchestrator 的 execute 与 _compensate 实现,以及订单 Saga 示例(预留库存、处理支付、创建发货及对应补偿)。协同模式给出事件处理器示例,如 handle_order_created、handle_inventory_reserved、handle_payment_failed、handle_shipment_created。还包含超时与恢复(recover_stuck_sagas、retry_failed_step,含指数退避)、幂等步骤(IdempotentSagaStep,基于幂等键与 TTL 存储)。

关键决策:复杂流程用编排,简单流程用协同;Saga 状态持久化存储(如 PostgreSQL);所有步骤必须幂等;每步设置超时并支持恢复;必须实现并充分测试补偿;跨服务追踪 Saga ID。

限制与禁止:不得跳过补偿逻辑;不得依赖跨服务同步调用;不得忽略幂等;不得使用内存态 Saga 状态(重启即丢失)。必须持久化 Saga 状态并测试补偿路径。相关技能包括 temporal-io、event-sourcing、idempotency-patterns。