(1). Saga模式

在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务都由业务开发实现. 从这句话里也能看到:Saga也是业务层进行处理,和TCC类似,只是相对TCC少了一个接口.

(2). Saga的实现

  1. 通过状态图来定义服务调用的流程并生成 json 状态语言定义文件.
  2. 状态图中一个节点可以是调用一个服务,节点可以配置它的补偿节点.
  3. 状态图 json 由状态机引擎驱动执行,当出现异常时状态引擎反向执行已成功节点对应的补偿节点将事务回滚.
  4. 可以实现服务编排需求,支持单项选择、并发、子流程、参数转换、参数映射、服务执行状态判断、异常捕获等功能.
  5. 有木有感觉有点像BPMN?

(3). 优缺点

优点: 针对一些遗留系统服务,无法提供TCC模式要求的三个接口. 缺点: 一阶段正向服务和二阶段补偿服务都由业务开发实现,对开发人员,依然是不透明.
现在暂时只支持:Dubbo/SoftRpc,不支持Spring Cloud.