分布式事务

本地事务(单机事务)四个原则:

原子性:事务中所有操作,要么全成功,要么全失败

一致性:保证数据的一致性

隔离性:对同一资源操作的事务不能同时发生

持久性:对数据库做的一切操作将永久保存,无论是否出现故障


CAP定理:

Consistency(一致性):对某个指定的客户端来说,读操作能返回最新的数据。如果读操作时,正在进行写操作,此时读操作会等待,当写操作完后,读操作再进行并返回最新的数据。

Availability(可用性):客户端的请求,服务端并会有响应,此动作不会关系数据有没有同步,所有客户端获得的数据可能不是最新的数据。

Partition tolerance(分区容错性):在分布式系统中,由于网络等不稳定因素,导致系统服务间的数据没有同步,此时会出现数据上的错误,而这种数据上出错误是可以容忍存在。不稳定因素解决后,服务间的数据最终会同步。


BASE理论(Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent (最终一致性)):

基本可用:分布式系统在出现故障时,允许损失部分可用功能,保证核心功能可用。如,电商网站交易付款出现问题了,商品依然可以正常浏览。

软状态:允许系统中存在中间状态,这个状态不影响系统可用性,如订单的"支付中"状态、不同节点数据副本同步延迟等。

最终一致:最终一致是指经过一段时间后,所有节点数据都将会达到一致。如订单的"支付中"状态,早晚会变为“支付成功”或者"支付失败",使订单状态与实际交易结果达成一致,但需要一定时间的延迟、等待。


分布式事务--解决思路:

方法一:AP模式:各子事务分别执行和提交,允许出现结果不一致,然后采用弥补措施恢复数据即可,实现**最终一致**。

方法二:CP模式:各个子事务执行后互相等待,同时提交,同时回滚,达成**强一致**。但事务等待过程中,处于**弱可用**状态。


分布式事务--解决方案:

2PC两阶段提交:

一阶段:
    事务协调者通知每个事物参与者执行本地事务
    本地事务执行完成后报告事务执行状态给事务协调者,此时事务不提交,继续持有数据库锁
二阶段:
    事务协调者基于一阶段的报告来判断下一步操作
        如果一阶段都成功,则通知所有事务参与者,提交事务
        如果一阶段任意一个参与者失败,则通知所有事务参与者回滚事务

TCC事务补偿:

TCC 其实就是采用的补偿机制,其核心思想是:针对每个操作,都要注册一个与其对应的确认和补偿(撤销)操作


TCC事务补偿的三个阶段

Try:预留业务资源/数据效验-尝试检查当前操作是否可执行


Confirm:确认执行业务操作,实际提交数据,不做任何业务检查。try成功,confirm必定成功

Cancel:执行业务出错时,需要回滚数据的状态下执行的业务逻辑


Seata事务管理中有三个重要的角色

TC (Transaction Coordinator)事务协调者

用来维护全局和分支事务的状态,协调全局事务提交或回滚。

TM (Transaction Manager)事务管理器:

定义全局事务的范围、开始全局事务、提交或回滚全局事务。

RM (Resource Manager)资源管理器:

管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。


Seata提供的四种分布式事务解决方案

XA模式:

强一致性分阶段事务模式,牺牲了一定的可用性,无业务侵入

TCC模式:

最终一致的分阶段事务模式,有业务侵入

AT模式:

最终一致的分阶段事务模式,无业务侵入,也是**Seata的默认模式**

SAGA模式:

长事务模式,有业务侵入

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值