用途:Saga 模式用于在分布式事务场景下管理跨微服务的数据一致性,不依赖两阶段提交(2PC)。它把一次业务操作拆成一系列本地事务,任一步骤失败时按逆序执行补偿事务进行语义回滚。
主要能力:提供编排(Orchestration)与协同(Choreography)两种协调方式;支持补偿事务设计,如 ReserveStock 对应 ReleaseStock、ChargeCreditCard 对应 RefundCreditCard、CreateShipmentLabel 对应 CancelShipmentLabel;包含编排器状态机示例,跟踪流程进度并在出错时触发补偿。
必要用法:定义带 name、execute、compensate 的 SagaStep 接口,按顺序执行步骤,失败后对已执行步骤逆序调用补偿。示例命令与代码保持原样,如 runSaga、OrderSagaOrchestrator.execute、inventoryService.reserve、paymentService.charge、shippingService.schedule。建议为每步传入幂等键(idempotencyKey),避免重试造成重复扣款或重复下单;持久化记录 Saga 状态;补偿事务须幂等;复杂多分支流程优先使用工作流编排器(Temporal、AWS Step Functions)。
适用场景:跨微服务的多步业务事务、电商结算与履约、运行数秒至数小时的长时间业务流程、部分完成后的失败恢复与状态回退。
限制与注意:不要假设补偿事务不会失败,需为失败补偿设置告警和人工干预队列,并写入死信队列(DLQ);避免跨 Saga 使用分布式锁;服务数超过 4 个时避免使用协同模式,事件驱动会难以追踪和推理。常见问题包括 Saga 卡在 PENDING、补偿失败、步骤重复执行,对应措施为持久化状态机与超时重试、人工复核、强制唯一幂等键。官方页面未提供收费、价格或具体平台信息,暂未提供。