四十、Saga模式

2023-12-13 23:49:07

目录

一、定义

二、流程

三、优点

四、缺点

五、四种模式的对比


一、定义

  • Saga模式是一种用于处理复杂异步操作流的模式,通常用于React/Redux的应用程序中。
  • 在这种模式中,业务逻辑被分成多个离散步骤,每个步骤都是一个Generator函数,它们可以被以顺序、并发或条件分支方式执行。
  • 在Saga模式中,流程被控制在一个中心位置,称为Saga。
  • Saga是一个长期运行的进程,它进行异步操作,监视动作并根据其触发器来执行某些操作。
  • 它们是纯粹的JavaScript函数,可以派发动作、调用异步API并处理响应。

Saga模式能够让应用程序变得更加可预测、可控,对于解决复杂的并发问题非常有用,同时也可以简化代码的编写。

二、流程

  • 一阶段:直接提交本地事务
  • 二阶段:成功则什么都不做;失败则通过编写补偿业务来回滚

三、优点

  1. 事务参与者可以基于事件驱动实现异步调用,吞吐高
  2. 一阶段直接提交事务,无锁,性能好
  3. 不用编写TCC中的三个阶段,实现简单

四、缺点

  1. 软状态持续时间不确定,时效性差
  2. 没有锁,没有事务隔离,会有脏写

五、四种模式的对比

XA

AT

TCC

SAGA

一致性

强一致

弱一致

弱一致

最终一致

隔离性

完全隔离

基于全局锁隔离

基于资源预留隔离

无隔离

代码侵入

有,要编写三个接口

有,要编写状态机和补偿业务

性能

非常好

非常好

场景

对一致性、隔离性有高要求的业务

基于关系型数据库的大多数分布式事务场景都可以

? 对性能要求较高的事务。
? 有非关系型数据库要参与的事务。
? 业务流程长、业务流程多
? 参与者包含其它公司或遗留系统服务,无法提供 TCC 模式要求的三个接口

文章来源:https://blog.csdn.net/icbbm/article/details/134876829
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。