分布式事务

BASE: 通过牺牲强一致性来获得可用性

  • Basically Available(基本可用): 分布式系统在出现故障时,允许损失部分可用功能,保证核心功能可用。
  • Soft state(软状态): 允许系统中存在中间状态,这个状态不影响系统可用性。
  • Eventually consistent(最终一致): 经过一段时间后,所有节点数据都将会达到一致。

2PC:

  • XA: 数据库层面
  • Seata: 分布式事务框架

3PC:在2PC中,participant在发送PREPARED消息后,收到coodinator最终决定(COMMIT / ABORT)前,无法单独决定要提交还是回滚事务,如果此时coodinator宕机,participant的事务状态无法确定,导致阻塞。3PC为解决此问题,多引入了一轮沟通,并引入超时机制。即一是把2PC的Commit阶段拆成了PreCommit和DoCommit两个阶段. 通过增加的这个PreCommit阶段, participant可以得到Propose阶段的投票结果,但不会commit; 而通过进入DoCommit阶段,participant可以盘出其他每个participant也都打算commit了,从而可以放心地commit。二是为participant也添加超时机制后,participant可以在到达超时时间时,自动进行本地commit从而释放资源。

TCC:是2PC的一个变种,为业务层编写代码实现两阶段提交。该编程模式下一个业务操作要对应写Try、Confirm、Cancel这三个方法。以下单扣库存为例,Try 阶段占库存,Confirm阶段实际扣库存,如果库存扣减失败Cancel阶段进行回滚,释放库存。TCC不存在资源阻塞的问题,因为每个方法都直接进行事务的提交,一旦出现异常通过则Cancel进行回滚补偿,这也就是常说的补偿性事务

本地消息表:

MQ消息事务

最大努力通知:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值