日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

2PC协议(2-phase-commit protocol)

發(fā)布時(shí)間:2024/2/28 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2PC协议(2-phase-commit protocol) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、協(xié)議概述

兩階段提交協(xié)議(2-phase-commit protocol,2PC)可以保證數(shù)據(jù)的強(qiáng)一致性,許多分布式關(guān)系型數(shù)據(jù)管理系統(tǒng)采用此協(xié)議來(lái)完成分布式事務(wù)。它是協(xié)調(diào)所有分布式原子事務(wù)參與者,并決定提交或回滾的分布式算法。也是解決一致性問(wèn)題的一致性算法。為了能夠使參與者從故障在恢復(fù),采用日志記錄協(xié)議的狀態(tài),雖然使用日志降低了性能但是節(jié)點(diǎn)能從故障中恢復(fù)。

在2PC中,系統(tǒng)一般含兩類(lèi)節(jié)點(diǎn):

協(xié)調(diào)者 coordinator,通常一個(gè)系統(tǒng)中只有一個(gè)

參與者 workers,一般含多個(gè),在數(shù)據(jù)存儲(chǔ)系統(tǒng)中可以理解為數(shù)據(jù)副本的個(gè)數(shù)

協(xié)議中假設(shè):

① 每個(gè)節(jié)點(diǎn)都記錄寫(xiě)前日志并持久性存儲(chǔ),即使節(jié)點(diǎn)故障日志也不會(huì)丟失

② 節(jié)點(diǎn)不會(huì)發(fā)生永久性故障且任意兩個(gè)節(jié)點(diǎn)間可以相互通信

當(dāng)事務(wù)最后一步完成,協(xié)調(diào)者執(zhí)行協(xié)議,參與者根據(jù)本地事務(wù),能夠成功完成回復(fù)同意提交事務(wù)或者回滾事務(wù)。

?

二、執(zhí)行過(guò)程

兩階段提交由兩個(gè)階段組成:

1. 請(qǐng)求階段(commit-request phase)

在此階段,協(xié)調(diào)者通知事務(wù)參與者準(zhǔn)備提交回滾事務(wù),然后進(jìn)入表決過(guò)程:在表決過(guò)程中,參與者將告知協(xié)調(diào)者自己的決策:同意(事務(wù)參與者本地作業(yè)執(zhí)行成功)或回滾(本地作業(yè)執(zhí)行故障)

2. 提交階段(commit phase)

在該階段,協(xié)調(diào)者基于第一個(gè)階段的結(jié)果進(jìn)行決策:提交取消當(dāng)且僅當(dāng)所有參與者回復(fù)同意,才通知所有事務(wù)參與者提交事務(wù),否則協(xié)調(diào)者將通知事務(wù)參與者回滾事務(wù)。參與者在接收到協(xié)調(diào)者發(fā)來(lái)的消息后執(zhí)行相應(yīng)的操作。

?

三、協(xié)議的特點(diǎn)

兩階段提交系統(tǒng)通過(guò)阻塞完成協(xié)議,在節(jié)點(diǎn)等待消息的時(shí)候處于阻塞狀態(tài),節(jié)點(diǎn)中其他進(jìn)程需等待阻塞進(jìn)程釋放資源才能使用。如果協(xié)調(diào)器發(fā)生了故障,那么事務(wù)參與者則會(huì)一直等待。以下情況可能會(huì)導(dǎo)致節(jié)點(diǎn)發(fā)生永久阻塞

(1) 參與者發(fā)送同意提交消息給協(xié)調(diào)者,進(jìn)程將阻塞直到協(xié)調(diào)者發(fā)消息。若協(xié)調(diào)者永久故障,參與者將一直等待。此問(wèn)題可通過(guò)備份協(xié)調(diào)器解決。

(2)若協(xié)調(diào)器發(fā)送“請(qǐng)求提交”給所有參與者,它將被阻塞直到所有參與者回復(fù)。若某參與者永久故障,那么協(xié)調(diào)器也不會(huì)一直阻塞。在某一時(shí)間內(nèi)還未收到某參與者消息,它將通知其他參與者回滾事務(wù)。

2PL沒(méi)有容錯(cuò)機(jī)制,一個(gè)節(jié)點(diǎn)故障整個(gè)事務(wù)都回滾,代價(jià)較大。

?

四、工作過(guò)程

通過(guò)一個(gè)例子說(shuō)明兩階段提交協(xié)議的工作過(guò)程:

A是保險(xiǎn)公司銷(xiāo)售小組組長(zhǎng),負(fù)責(zé)召開(kāi)會(huì)議,B,C,D是苦逼的保險(xiǎn)推銷(xiāo)員。公司規(guī)定由組長(zhǎng)召開(kāi)小組會(huì)議,必須全員到場(chǎng)。A在星期六晚上發(fā)送下周一召開(kāi)會(huì)議的通知給B,C,D。如果所有人周一都有時(shí)間來(lái)開(kāi)會(huì),那么會(huì)議將如期開(kāi)展;若有任何一個(gè)有事不能在現(xiàn)場(chǎng),則會(huì)議取消另定時(shí)間。用2PC算法解決過(guò)程:

A是協(xié)調(diào)者,B,C,D是該會(huì)議的參與者:

(1)請(qǐng)求階段:

① A發(fā)送郵件給B,C,D,通知周一舉行會(huì)議,詢(xún)問(wèn)是否都能到場(chǎng)。A此時(shí)等待B,C,D的回復(fù)郵件

② B,C,D分別查看自己的日程按排。B,C發(fā)現(xiàn)周一沒(méi)有約見(jiàn)客戶(hù)的日程安排,身為苦逼的員工當(dāng)然得去開(kāi)會(huì)!于是發(fā)郵件告訴A,會(huì)按時(shí)到場(chǎng)。由于某種原因,D白天沒(méi)有查看郵件。那么此時(shí)A,B,C都需要等待。到晚上D發(fā)現(xiàn)了A的郵件,查看自己的日程安排,發(fā)現(xiàn)周一正好要去見(jiàn)客戶(hù),那么D就回復(fù)A:我要出外勤,無(wú)法參會(huì),會(huì)議能不能改天?

(2)提交階段(commit phase)

① A已經(jīng)收到所有參與者的郵件,發(fā)現(xiàn)D因?yàn)楣聼o(wú)法參加周一的會(huì)議,于是 A發(fā)郵件通知 B,C,D。下周一的會(huì)議取消。

② 此時(shí) B,C心里樂(lè)開(kāi)了花,不用開(kāi)會(huì)。至此事務(wù)結(jié)束。

?

通過(guò)上面的例子可以發(fā)現(xiàn),2PC存在一定問(wèn)題。如果D一直不回復(fù)郵件,那么A,B,C將一直處于等待狀態(tài)。而且B,C所持有的資源,即周一不可以安排其他活動(dòng)(見(jiàn)客戶(hù),上門(mén)推銷(xiāo)保險(xiǎn)...),一直不能釋放。其他等待該資源釋放的活動(dòng)也不得不處于等待狀態(tài)。

?

部分引用自:https://www.cnblogs.com/sunddenly/articles/4072882.html

總結(jié)

以上是生活随笔為你收集整理的2PC协议(2-phase-commit protocol)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。