Spring Cloud JAVA设计方案

微服务架构 | 11. 分布式事务

2022-02-08  本文已影响0人  多氯环己烷

前言

参考资料
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服务原理与实战》
《B站 尚硅谷 SpringCloud 框架开发教程 周阳》

分布式事务是指事务的参与者、支持事务的服务器、资源服务器及事务管理器分别位于分布式系统的不同节点上;


1. 基础知识

1.1 分布式事务问题的理论模型

1.1.1 X/Open 分布式事务模型(XA 协议)

分布式事务处理 DTP 模型.png

-TM 和多个 RM 之间的事务控制,是基于 XA 协议(XASpecification)来完成的。XA 协议是 X/Open 提出的分布式事务处理规范,也是分布式事务处理的工业标准,它定义了 xa_ 和 ax_ 系列的函数原型及功能描述、约束等。目前 Oracle、MySQL、DB2 都实现了 XA 接口,所以它们都可以作为 RM;

事务执行流程.png

1.1.2 两阶段提交协议

两阶段提交协议执行流程.png

1.1.3 三阶段提交协议

三阶段提交协议执行流程.png

1.2 分布式事务的两个理论模型

1.2.1 CAP 定理

1.2.2 BASE 理论

1.3 分布式事务问题的常见解决方案(事务模式)

在互联网场景中更多采用柔性事务,所谓的柔性事务是遵循 BASE 理论来实现的事务模型,它有两个特性:基本可用、柔性状态;

1.3.1 TCC 补偿型方案

1.3.2 基于可靠性消息的最终一致性方案

RocketMQ 的事件消息模型.png

1.3.3 最大努力通知型

最大努力通知型.png

1.3.4 AT 模式

Seata 的 AT 事务模式.png

1.3.5 Saga 模式

1.5 目前几种流行的分布式事务技术方案对比

名称 厂商 特点(优点) 缺点
Seata Alibaba 对业务无侵入、高性能 Seata 是工作在读未提交的隔离级别,Seata 本身存在一定的性能损耗

2. Seata

Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务;它提供了 AT、TCC、Saga 和 XA 事务模式,为开发者提供了一站式的分布式事务解决方案;


最后

\color{blue}{\rm\small{新人制作,如有错误,欢迎指出,感激不尽!}}

\color{blue}{\rm\small{欢迎关注我,并与我交流!}}

\color{blue}{\rm\small{如需转载,请标注出处!}}

上一篇下一篇

猜你喜欢

热点阅读