文章目录

  • 9.1.5 Before-or-After Atomicity: Coordinating Concurrent Threads
  • 9.1.6 Correctness and Serialization
  • 9.5.2 Simple Locking
  • 9.5.3 Two-Phase Locking
  • 9.6.3 Multiple-Site Atomicity: Distributed Two-Phase Commit多点原子性:分布式两阶段提交

9.1.5 Before-or-After Atomicity: Coordinating Concurrent Threads

9.1.6 Correctness and Serialization

1.多个并发操作正确性的概念:如果保证每个结果都可以通过纯串行应用这些相同的操作来获得。
2.保证(1)正确的旧状态 (2)正确的一些列操作 ——> 正确的新状态

3.before-or-after atomicity定义指的是每一个before-or-after 行为都在另一个before-or-after 行为完全结束或还未开始时运行。保证了操作的序列化

9.5.2 Simple Locking

1.Simple Locking类似于the mark-point discipline标记点原则的思想
2.Simple Locking有两个规则:(1)每个事务读写数据之前要先获取要读写数据的锁。(2)直到事务完成并提交/数据已完全保存并中止才能释放锁
3.the mark-point discipline:事务有一个lock point:第一个获得了所有锁的时刻。获得的所有锁叫做lock set。
4.lock manager强制Simple Locking每个事务在begin_transaction操作时,将它需要的lock set作为参数传入,如果有必要就等待锁可用。

9.5.3 Two-Phase Locking

1.第三种锁原则,两阶段锁,类似read-capture discipline,避免了事务需要提前知道获取哪些锁的要求。
2.两阶段锁允许事务在进行中获得锁,一个事务可以在获取对象的锁之后马上读写该数据对象。也允许事务释放锁,只要不再需要读取该对象。
3.两阶段锁名字来源于:一个事务获得的锁数量,在达到lock point之前是单调递增的,这是第一个阶段;超过了lock point,是单调递减的,这是第二个阶段

9.6.3 Multiple-Site Atomicity: Distributed Two-Phase Commit多点原子性:分布式两阶段提交

1.联合一个带有持续发送者的两阶段提交协议、复制压制和单点事务,我们可以创建一个正确的多点事务。
2.多点事务的难题:协调者和worker之间不能可靠的通信。
解决:构造可靠的两阶段提交协议的分布式版本,应用持久发送者和副本抑制。
3.阶段一:
A 为协调者, B C D 为worker
A ——>B : Please do X as part of my transaction.
B——>A: My part X is ready to commit.
A——>B:PREPARE to commit X.
B——>A: I am PREPARED to commit my part. Have you decided to commit yet? Regards.(准备消息)
(此时A作为协调者容易成为单点故障,如果A崩溃,其他worker都要等待A恢复)
如果此时所有的worker都回复了准备消息,两阶段提交的第一个阶段结束。
如果有一个worker回复了中止消息,或没回复,则A将中止整个事务或者试图将一个另外的worker点来操作这个组件事务。
4.阶段二:
当A标记她自己的输出日志committed时,A提交了整个事务,此时第二阶段开始。
A——>B:My transaction committed. Thanks for your help.
每个worker收到这个消息后,将它的状态从perpared改为committed,执行完需要的提交后置操作后,退出。
而A也可以去做其他的事务了,但是A必须永久记录完成事务的输出,为了防止有还在prepared状态的worker因网络等原因没收到完成的消息,它会重发,A收到后就会重新发送对应事务的输出记录。
5.因为worker作为他们prepared信息的persistent senders,所以A可以确信每个worker最终都会得到她committed的信息,但是却无法保证是实时的。
6.如下图所示,如果无故障,N个worker点的两阶段提交将在3N个消息完成:每一个worker点有prepare信息,prepared的回复信息 和 提交信息。

7.有的版本的两阶段协议还有第四种信息——从worker点到coordinator的确认信息,来统计worker是否收到committed信息。如果所有worker都已收到,coordinator可以安全的丢弃该事务的输出记录。
8.有些更关注输出记录存储空间和额外信息消耗的系统有些优化,叫做presumed commit(推测提交)
因为预期最多的信息是:committed,所以将committed的信息省略为non-existence。
9.两阶段提交未解决所有的多点原子性问题:如(1)coordinator的崩溃,导致worker们进度无法推进。(2)coordinator和worker之间实时性同步的问题.

分布式事务—Lec12课前资料相关推荐

  1. 2108 课前资料说明

    第一部分:课前资料说明 博客地址:https://blog.csdn.net/maitian_2008 天翼云盘:https://cloud.189.cn/t/MFJVf23u22Un 访问码:tw3 ...

  2. 2109课前资料及授课说明

    第一部分:课前资料说明 博客地址:https://yutian.blog.csdn.net/ 天翼云盘:https://cloud.189.cn/t/MFJVf23u22Un 访问码:tw3w (不限 ...

  3. 尚硅谷谷粒商城第六天 本地事务、分布式事务及seata

    1. 本地事务 商品新增功能非常复杂,商品管理微服务在service层中调用保存spu和sku相关的方法,为了保证数据的一致性,必然会使用事务. 在JavaEE企业级开发的应用领域,为了保证数据的完整 ...

  4. 2111-课前资料及授课说明

    第一部分:课前资料说明 博客地址:https://yutian.blog.csdn.net/ 天翼云盘:https://cloud.189.cn/t/MFJVf23u22Un 访问码:tw3w (不限 ...

  5. Jboot 2.0.1 发布,新增基于 Fescar 的分布式事务支持

    Jboot 是一个基于 JFinal.JFinal-Undertow.Dubbo 等开发的微服务框架,帮助开发者降低微服务开发门槛.同时完美支持在 idea.eclipse 下多 maven 模块,对 ...

  6. 分布式事务2PC、3PC模型

    工作中使用最多的是本地事务,但是在对单一项目拆分为 SOA.微服务之后,就会牵扯出分布式事务场景 文章以分布式事务为主线展开说明,并且针对 2PC.3PC 算法进行详细的讲解,最后通过一个 Demo ...

  7. 分布式事务与Seate框架:分布式事务理论

    推荐阅读: 这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试 毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题 给跪了!这套万人期待的 SQL ...

  8. SpringCloud Alibaba实战第九课 分布式事务理论、DevOps运维

    22 一致性挑战:微服务架构下的数据一致性解决方案 上一讲我们介绍了如何在微服务架构中设计统一的用户认证方案.本讲咱们填之前埋下的一个坑,如何在微服务架构下有效保障数据一致性问题.本讲咱们涉及三方面内 ...

  9. 分布式事务概述 (资料)

    2019独角兽企业重金招聘Python工程师标准>>> 什么是分布式系统 分布式系统是由一组通过网络进行通信.为了完成共同的任务而协调工作的计算机节点组成的系统.分布式系统的出现是为 ...

最新文章

  1. 数据还原到指定时间点的处理示例
  2. Android学习笔记之SoftReference软引用,弱引用WeakReference
  3. C 标准库 - string.h
  4. input type='file' 上传文件时显示文件名及上传进度
  5. linux的驱动开发——内核模块如何使用?
  6. ORACLE专有模式与共享模式
  7. imread读不到图片_家用水表怎么读?超强实用技能快速get
  8. IOS:游戏存档修改,替换
  9. 用tbtools基因家族分析《一》
  10. 织梦栏目地址使用栏目名称首字母
  11. 大学期间应当做的三件事
  12. PC端调用摄像头录制视频——vue标准写法
  13. 六度分离(hdu1869,floyd最短路)
  14. Tensorflow环境搭建
  15. 教你DIY中文增强版Geexbox,且安装为硬盘版
  16. Quartus II 11.0破解要点(与低版本的不同)
  17. (一看就会)让VM虚拟机之间联网并能相互ping通
  18. 路由器fast服务器没响应,FAST路由器复位常见问题解决方法
  19. HaaS轻应用(JavaScript)低功耗蓝牙案例
  20. Linux查看网络即时网速

热门文章

  1. 电机控制Clarke(α/β)等幅值变换推导
  2. 苹果CEO乔布斯脑子里怎么想的
  3. 2017-2018 ACM-ICPC, Asia Daejeon Regional Contest C题
  4. Oracle 的 表空间(Tablespace)、用户(User)、模式(Schema)
  5. 【JavaScript】 数组 重要方法详解篇(一)
  6. 欧拉是如何计算圆周率的
  7. 凤凰男,你若孤老终身,便是晴天
  8. Flask项目之手机端租房网站的实战开发(一)
  9. 顶级“黑客”能厉害到什么地步?无信号也能上网,专家:高端操作!
  10. 用python成为顶级黑客-python绝技:运用python成为顶级黑客 PDF 超清中文版