美文网首页
如何通俗的解释两阶段提交?

如何通俗的解释两阶段提交?

作者: elon_wen | 来源:发表于2020-05-16 09:25 被阅读0次

张大胖想跟几个朋友组个饭局一起吃饭。

这些人有几个特点:

一是、只能两两之间互相沟通,不能拉到一个群里交流。

二是、大家沟通时候还时不时收不到对方的消息。

三是、每个人都可能会突然失忆,所以每个人都有一个小本本,答应某个事情,或做某个事情之前都会现在小本本里记录一下。

四是、每个人对于答应过要做的是都会遵守约定。

五是、每个人都不会提供虚假信息。


Round1

张大胖准备协调大家定一个具体的时间,于是第一步,先挨个问问每个人:

张大胖:“喂,Bill,这周末晚上7点撸串你有空吗?”

Bill:“好啊。”

张大胖继续问第二个人。

张大胖:“喂,小强,这周末晚上7点撸串你有空吗?”

小强:“不好意思啊,我有约了。”

张大胖只好在小本本上记录下来:这周末晚上7点不能约饭了。

然后再挨个给大家打电话说这周末的饭局取消。

(存在任意参与者无法成功prepare,两阶段协议取消)


Round2

张大胖想了想觉得不甘心,又准备再试一次。于是他继续拿起电话打给小强。

可是,这时候小强的电话一直处于通话中,后来索性直接显示无人接听了。

原来那一头,小强正跟女朋友煲着电话粥呢,然后索性就一起出去约会去了,手机也没带在身上。

张大胖只好一遍遍的打着电话...

(有节点失效,两阶段协议阻塞)


Round3

终于,几个小时后,电话通了。

张大胖:“小强,下周末中午12点吃火锅你有空吗?”

小强:“有啊。”

张大胖:“刚怎么一直不接电话啊?”

小强:“这不是刚谈了女朋友嘛”(做委屈状~)。

张大胖:“那你可说好咯,约定了的事情不能变卦。”

小强:“那当然,那当然,咱哥几个也好久没见了…”

搞定小强后,张大胖继续打电话问Bill:“Bill,下周末中午12点吃火锅你有空吗?”

Bill:“好啊。”

挂完电话,刚想通知大家就定在下周末中午12点了,结果张大胖失忆了。

(第一阶段未持久化,代表第一阶段未完成,此时协调者失效,协议阻塞)


Round4

等张大胖清醒过来,他先去小本本上查了一下,只看到写了一句,“准备约大家在下周末中午12点”,其他什么都没有,只好把刚才的经历重来一遍,“喂,小强啊,...”、“喂,Bill啊,…”

此处省略500字…

等挨个确认了大家的时间之后,张大胖赶紧在小本本上写了一句:已经和所有人确认过,下周末中午12点吃火锅。

这时候,不巧张大胖又失忆了。

(第一阶段已持久化,代表第一阶段完成,此时协调者失效,协议虽然阻塞,但协调者恢复后,可以不再需要从第一阶段开始)


一段小插曲

这一次张大胖清醒过来的时间比较久。

期间小强心怡的女生也来找他,问他下周末中午12点有没有空。

碰巧小强也经历了一次失忆,于是他查了查自己的小本本

“原来刚才,我已经答应了张大胖”,小强虽然有点不愿意,但也只好忍着痛,婉言拒绝了。“可是这小子怎么还不通知我确认呢?”,小强嘀咕着,“万一又改时间,害我白白失去了跟妹子约会的机会,我可饶不了他!”

(参与者第一阶段完成后,此时协调者失效,协议阻塞,参与者只能等待)


Round5

张大胖终于清醒过来了,这一次他还是先去翻了翻自己的小本本,发现上面写的那句:已经和所有人确认过,下周末中午12点吃火锅。

这时候,他拿起电话,不再是挨个询问了,而是直接通知:伙计们,刚才你们都答应过啦,那就定下周末中午12点啦,不见不散哦。

(第一阶段完成后,协调者恢复,通知各个参与者协议commit,协议完成)

相关文章

  • 如何通俗的解释两阶段提交?

    张大胖想跟几个朋友组个饭局一起吃饭。 这些人有几个特点: 一是、只能两两之间互相沟通,不能拉到一个群里交流。 二是...

  • 分布式事务

    XA分布式事务协议 - 两阶段提交 & 三阶段提交 两阶段提交 两阶段提交存在的缺点 三阶段提交

  • 【leetcode】打卡题目-2020-03-21

    水壶问题: 提交结果: 实现代码 可能有人比较关心其中的数学问题,即是: 解释:通俗的解释是,两个容器互相注水,必...

  • 04、分布式事务-二阶段+三阶段提交协议

    二阶段提交的作用 二阶段提交是为了要保证分布式事务的原子性 二阶段提交的角色 概念解释比较抽象,边看边理解即可。 ...

  • 两阶段提交

    一、两阶段事务提交模型 二、实现方案1、数据库层实现 缺点:锁持有时间长、单点、阻塞等 2、业务层面实现 1、tc...

  • 分布式事务

    对分布式事务及两阶段提交、三阶段提交的理解 关于分布式事务、两阶段提交协议、三阶提交协议

  • 三阶段提交3PC(3-phase commit)

    三阶段提交3PC(3-phase commit) [TOC] 三阶段提交是为解决两阶段提交协议的缺点而设计的。与两...

  • 分布式事务解决方案之2PC(一)

    2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commi...

  • 两阶段提交协议(2PC)、三阶提交协议(3PC)

    两阶段提交协议(2PC)、三阶提交协议(3PC) 2PC 二阶段提交协议是将事务的提交过程拆分为两个阶段来执行,分...

  • docker

    如何通俗解释Docker是什么? https://www.zhihu.com/question/28300645 ...

网友评论

      本文标题:如何通俗的解释两阶段提交?

      本文链接:https://www.haomeiwen.com/subject/nmhlohtx.html