真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

怎么理解MySQL的2PC和3PC

這篇文章主要介紹“怎么理解MySQL的2PC和3PC”,在日常操作中,相信很多人在怎么理解MySQL的2PC和3PC問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么理解MySQL的2PC和3PC”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

東鄉(xiāng)網站建設公司創(chuàng)新互聯,東鄉(xiāng)網站設計制作,有大型網站制作公司豐富經驗。已為東鄉(xiāng)超過千家提供企業(yè)網站建設服務。企業(yè)網站搭建\外貿網站建設要多少錢,請找那個售后服務好的東鄉(xiāng)做網站的公司定做!

分布式系統(tǒng)和分布式一致性問題

分布式系統(tǒng),即運行在多臺不同的網絡計算機上的軟硬件系統(tǒng),并且僅通過消息傳遞來進行通信和協(xié)調。

分布式一致性問題,即相互獨立的節(jié)點之間如何就一項決議達成一致的問題。

2PC(Two-Phase Commit 二階段提交)

二階段提交,是指將事務提交分成兩個部分:準備階段和提交階段。事務的發(fā)起者稱之為協(xié)調者,事務的執(zhí)行者稱為參與者。

階段一:準備階段

             由協(xié)調者發(fā)起并傳遞帶有事務信息的請求給各個參與者,詢問是否可以提交事務,并等待返回結果。

             個 參與者執(zhí)行事務操作,將Undo和Redo放入事務日志中(但是不提交)

              如果參與者執(zhí)行成功就返回YES(可以提交事務),失敗NO(不能提交事務)

階段二:提交階段

              此階段分兩種情況:所有參與者均返回YES,有任何一個參與者返回NO

               所有參與者均反饋YES時,即提交事務。

               任何一個參與者反饋NO時,即中斷事務。

提交事務:(所有參與者均反饋YES)

1、協(xié)調者向所有參與者發(fā)出正式提交事務的請求(即Commit請求)。

2、參與者執(zhí)行Commit請求,并釋放整個事務期間占用的資源。

3、各參與者向協(xié)調者反饋Ack完成的消息。

4、協(xié)調者收到所有參與者反饋的Ack消息后,即完成事務提交。

中斷事務:(任何一個參與者反饋NO)

1、協(xié)調者向所有參與者發(fā)出回滾請求(即Rollback請求)。

2、參與者使用階段1中的Undo信息執(zhí)行回滾操作,并釋放整個事務期間占用的資源。

3、各參與者向協(xié)調者反饋Ack完成的消息。

4、協(xié)調者收到所有參與者反饋的Ack消息后,即完成事務中斷。

2PC的缺陷

1、同步阻塞:最大的問題即同步阻塞,即:所有參與事務的邏輯均處于阻塞狀態(tài)。

2、單點:協(xié)調者存在單點問題,如果協(xié)調者出現故障,參與者將一直處于鎖定狀態(tài)。

3、腦裂:在階段2中,如果只有部分參與者接收并執(zhí)行了Commit請求,會導致節(jié)點數據不一致。

由于2PC存在如上同步阻塞、單點、腦裂問題,因此又出現了2PC的改進方案,即3PC。

3PC(Three-Phase Commit 三階段提交協(xié)議)

3PC,三階段提交協(xié)議,是2PC的改進版本,即將事務的提交過程分為CanCommit、PreCommit、do Commit三個階段來進行處理。

階段一:CanCommit

             1、協(xié)調者向所有參與者發(fā)出包含事務內容的CanCommit請求,詢問是否可以提交事務,并等待所有參與者答復。

             2、參與者收到CanCommit請求后,如果認為可以執(zhí)行事務操作,則反饋YES并進入預備狀態(tài),否則反饋NO。

階段二:PreCommit

               此階段分為兩種情況:

                1.所有參與者均受到請求并返回YES。

                2.有任何一個參與者返回NO,或者有任何一個參與者超時,協(xié)調者無法收到反饋,則事務中斷

事務預提交:(所有參與者均反饋YES時)

1、協(xié)調者向所有參與者發(fā)出PreCommit請求,進入準備階段。

2、參與者收到PreCommit請求后,執(zhí)行事務操作,將Undo和Redo信息記入事務日志中(但不提交事務)。

3、各參與者向協(xié)調者反饋Ack響應或No響應,并等待最終指令。

中斷事務:(任何一個參與者反饋NO,或者等待超時后協(xié)調者尚無法收到所有參與者的反饋時)

1、協(xié)調者向所有參與者發(fā)出abort請求。

2、無論收到協(xié)調者發(fā)出的abort請求,或者在等待協(xié)調者請求過程中出現超時,參與者均會中斷事務。

階段3:do Commit

此階段也存在兩種情況:

1、所有參與者均反饋Ack響應,即執(zhí)行真正的事務提交。

2、任何一個參與者反饋NO,或者等待超時后協(xié)調者尚無法收到所有參與者的反饋,即中斷事務。

提交事務:(所有參與者均反饋Ack響應時)

1、如果協(xié)調者處于工作狀態(tài),則向所有參與者發(fā)出do Commit請求。

2、參與者收到do Commit請求后,會正式執(zhí)行事務提交,并釋放整個事務期間占用的資源。

3、各參與者向協(xié)調者反饋Ack完成的消息。

4、協(xié)調者收到所有參與者反饋的Ack消息后,即完成事務提交。

中斷事務:(任何一個參與者反饋NO,或者等待超時后協(xié)調者尚無法收到所有參與者的反饋時)

1、如果協(xié)調者處于工作狀態(tài),向所有參與者發(fā)出abort請求。

2、參與者使用階段1中的Undo信息執(zhí)行回滾操作,并釋放整個事務期間占用的資源。

3、各參與者向協(xié)調者反饋Ack完成的消息。

4、協(xié)調者收到所有參與者反饋的Ack消息后,即完成事務中斷。

注意:進入階段三后,無論協(xié)調者出現問題,或者協(xié)調者與參與者網絡出現問題,都會導致參與者無法接收到協(xié)調者發(fā)出的         do Commit請求或abort請求。此時,參與者都會在等待超時之后,繼續(xù)執(zhí)行事務提交。

3PC的優(yōu)點和缺陷

優(yōu)點:降低了阻塞范圍,在等待超時后協(xié)調者或參與者會中斷事務。避免了協(xié)調者單點問題,階段3中協(xié)調者出現問題時,參與者會繼續(xù)提交事務。

缺陷:腦裂問題依然存在,即在參與者收到PreCommit請求后等待最終指令,如果此時協(xié)調者無法與參與者正常通信,會導致參與者繼續(xù)提交事務,造成數據不一致。

到此,關于“怎么理解MySQL的2PC和3PC”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
本文名稱:怎么理解MySQL的2PC和3PC
標題URL:http://weahome.cn/article/gsgcse.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部