微服务框架
【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】
分布式事务
文章目录
- 微服务框架
- 分布式事务
- 38 动手实践
- 38.9 Saga 模式
- 38.9.1 Saga 模式
- 38.9.2 四种模式对比
38 动手实践
38.9 Saga 模式
38.9.1 Saga 模式
Saga模式是SEATA提供的长事务解决方案。也分为两个阶段:
- 一阶段:直接提交本地事务
- 二阶段:成功则什么都不做;失败则通过编写补偿业务来回滚
【执行流程】
Saga模式优点:
- 事务参与者可以基于事件驱动实现异步调用,吞吐高
- 一阶段直接提交事务,无锁,性能好
- 不用编写TCC中的三个阶段,实现简单
缺点:
- 软状态持续时间不确定,时效性差
- 没有锁,没有事务隔离,会有脏写【没有保护措施】
OK,鉴定完毕,这种模式不怎么好,黑马老师直接不想进行实现了,那笔者也跳过了
38.9.2 四种模式对比
XA | AT | TCC | SAGA | |
---|---|---|---|---|
一致性 | 强一致 | 弱一致 | 弱一致 | 最终一致 |
隔离性 | 完全隔离 | 基于全局锁隔离 | 基于资源预留隔离 | 无隔离 |
代码侵入 | 无 | 无 | 有,要编写三个接口 | 有,要编写状态机和补偿业务 |
性能 | 差 | 好 | 非常好 | 非常好 |
场景 | 对一致性、隔离性有高要求的业务 | 基于关系型数据库的大多数分布式事务场景都可以 | •对性能要求较高的事务。 •有非关系型数据库要参与的事务。 | •业务流程长、业务流程多 •参与者包含其它公司或遗留系统服务,无法提供 TCC 模式要求的三个接口 |
追求极致性能,就选TCC
好家伙,高可用还没讲就到分布式缓存 了…
笔者就简单看一下PPT 吧,没看懂就算了,视频里没有