分布式事务—Lec12课前资料
创始人
2024-06-02 03:31:20

文章目录

  • 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之间实时性同步的问题.

相关内容

热门资讯

节能风电副总经理贾锐离任,年龄... 3月13日,节能风电公告,因工作调动,贾锐先生不再担任副总经理职务。资料显示,贾锐,男,1968年出...
赵乐际:在第十四届全国人民代表... 在第十四届全国人民代表大会第四次会议上的讲话(2026年3月12日)赵乐际各位代表:十四届全国人大四...
内幕交易!8人被抓! (来源:五道口江湖)香港证监会和廉政公署公布了昨天行动的详细内容,这次行动一共2天,3月10日和11...
风波中的“宇宙大所”盈科掌舵人... 融资担保风波爆发前,网络舆论场中流传更多的,是梅向荣早年励志的创业故事。1997年,月薪仅500元的...
两会世界观察|“中国发展规划法... 新华社北京3月12日电3月12日,十四届全国人大四次会议表决通过国家发展规划法,为在法治轨道上科学编...