Distributed Transactions分布式事务

Distributed Transactions

Concurrency Control

ACID

  • A: Atomic 原子性,事务要么全部完成,要么全部不完成
  • C: Consistent 一致性
  • I: Isolated Serializable,多个事务并发执行的结果和某一个顺序的事务线性执行的结果一致
  • D: Durable 一旦事务被提交,则事务被持久化,不会因为错误啥的丢失

Abort 事务中断

Atomic Commit

Two-Phase Locking

a. 在使用一条记录时获得对应的资源的锁

b. 持有该锁直到事务结束

get(x) // 执行前获得x锁

get(y) // 执行前获得y锁
  
  // 事务结束统一释放x y锁

该操作可能导致死锁,要引入一些机制处理

Atomic Commit Protocol or Two-phase Commit Protocol

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tzFfoEoA-1663511280433)(https://typora-1303830133.cos.ap-shanghai.myqcloud.com/typora/img/%25E6%2588%25AA%25E5%25B1%258F2022-09-12%252017.17.38.png)]

二阶段提交依赖Transactions Coordinator,由TC负责统筹各个分片,由TC决定提交或是撤销。

  • 事务在执行前会先获得锁,在事务提交后释放锁。即遵守Two-Phase Locking
  • 事务提交分为Prepare和Commit两个阶段
    • Prepare阶段,各个分片会执行事务,但是不会实际提交。这时读不到事务数据。
    • Commit阶段,当所有的分片都正确执行事务后进入该阶段,该阶段通知各个分片将事务提交。
错误处理
  • 分片在Pre阶段错误: 可以直接返回NO即可。这个区域分片有权直接abort事务。
  • 分片在确认Pre但确认Commit前错误:需要在确认PRE前持久化,恢复后接着做就好。这个区域分片无权直接丢弃事务,需要一直等待协调者确认。
  • 协调者错误:同样是需要持久化然后恢复。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值