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

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

作者: 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,协议完成)

    相关文章

      网友评论

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

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