分布式事务——分布式事务简介、分布式事务框架 Seata(AT模式、Tcc模式、Tcc Vs AT)、分布式事务—MQ

本文详细介绍了分布式事务的背景、理论基础,包括CAP定理、BASE理论,以及分布式事务的解决方案如2PC、TCC补偿机制和基于消息中间件的一致性。重点讲解了分布式事务框架Seata的AT模式和TCC模式的实现原理,包括Seata的事务管理机制、一阶段和二阶段提交流程。同时,对比分析了TCC与AT模式的区别。最后,探讨了基于MQ的分布式事务处理方案,分析了其在高并发场景下的优势和挑战,并展示了具体的业务流程和实施步骤。
摘要由CSDN通过智能技术生成

分布式事务——分布式事务简介、分布式事务框架 Seata(AT模式、Tcc模式、Tcc Vs AT)、分布式事务——MQ

一、分布式事务简介

如果不是分布式环境的话一般不会接触到这种,一旦是微服务这种,分布式事务是必须要处理的一个问题。

1、分布式事务引言和介绍

a、什么是分布式事务

在这里插入图片描述

b、分布式事务架构

最早的分布式事务应用架构很简单,不涉及服务间的访问调用,仅仅是服务内操作涉及到对多个数据库资源的访问。
在这里插入图片描述
当一个服务操作访问不同的数据库资源,又希望对它们的访问具有事务特性时,就需要采用分布式事务来协调所有的事务参与者。

对于上面介绍的分布式事务应用架构,尽管一个服务操作会访问多个数据库资源,但是毕竟整个事务还是控制在单一服务的内部。如果一个服务操作需要调用另外一个服务,这时的事务就需要跨越多个服务了。在这种情况下,起始于某个服务的事务在调用另外一个服务的时候,需要以某种机制流转到另外一个服务,从而使被调用的服务访问的资源也自动加入到该事务当中来。下图反映了这样一个跨越多个服务的分布式事务:

在这里插入图片描述
如果将上面这两种场景(一个服务可以调用多个数据库资源,也可以调用其他服务)结合在一起,对此进行延伸,整个分布式事务的参与者将会组成如下图所示的树形拓扑结构。在一个跨服务的分布式事务中,事务的发起者和提交均系同一个,它可以是整个调用的客户端,也可以是客户端最先调用的那个服务。
在这里插入图片描述

2、分布式相关理论

a、CAP 定理

在这里插入图片描述
在这里插入图片描述

b、分区容错性

分布式系统集群中, 一个机器坏掉不应该影响其他机器
在这里插入图片描述

b、可用性

一个请求, 必须返回一个响应, 意思是只要收到用户的请求,服务器就必须给出回应
在这里插入图片描述

c、一致性

一定能读取到最新的数据, 意思是,写操作之后的读操作,必须返回该值。
在这里插入图片描述

d、 一致性和可用性的矛盾

在这里插入图片描述

3、BASE 理论

在这里插入图片描述

a、基本可用

在这里插入图片描述

b、软状态

在这里插入图片描述

c、最终一致性

在这里插入图片描述

4、分布式事务解决方案

1、通过消息中间件,将分布式事务转为本地事务(技术比较简单,业务比较复杂)
2、Seata:AT、TCC、XA、Saga

对上面的 1 举例子:
在这里插入图片描述
在 MQ 搞一个成功队列和失败队列,失败了就回滚。用户服务需要调用到物流服务和订单服务时,就向 MQ 发送一个消息,物流服务和订单服务则监听,有消息了就去消费,成功或者失败都去告诉 MQ。这么一来,用户服务即便要调用到另外两个服务,也不需要在同一个项目中,因为有消息中间件负责传输消息;意味着用户服务无需亲自去调用到数据库即可获取到数据。

a、基于XA协议的两阶段提交(2PC方案)

在这里插入图片描述

b、TCC补偿机制

在这里插入图片描述

c、消息最终一致性(最多使用)

在这里插入图片描述

二、分布式事务框架 Seata

1、Seata 介绍

在这里插入图片描述
在这里插入图片描述
四种模式,

下载地址:https://github.com/seata/seata/releases

在这里插入图片描述
下载 Seata Server Docker 镜像和 NacOS Server Docker 镜像令如下 :

[root@localhost ~]# docker pull seataio/seata-server:1.4.0
[root@localhost ~]# docker pull nacos/nacos-server:1.2.0

Seata是什么?
在这里插入图片描述

2、Seata 理论概念

在这里插入图片描述

三、分布式框架——AT模式

1、AT模式介绍

AT 模式适用前提:

  • 基于支持本地 ACID 事务的关系型数据库。
  • Java 应用,通过 JDBC 访问数据库。

.两阶段提交协议的演变:

  • 一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。
  • 二阶段:
    • 提交异步化,非常快速地完成。
    • 回滚通过一阶段的回滚日志进行反向补偿。

2、前期准备

首先需要修改配置文件:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值