天天看點

簡述分布式一緻性協定---2pc、3pc

2pc     ----就是将一個事務的送出分為兩個部分

階段一:送出事務請求--投票

  協調者發送請求,參與者(結點)執行事務操作傳回yes,一階段後資源鎖死,必須等待commit或者roolback;

階段二:執行事務送出--執行

    收到都為yes,發送送出請求commit,成功傳回ack

   收到no,roolback;

簡述分布式一緻性協定---2pc、3pc

可以看出,這個模式下,協調者是關鍵,一旦資源鎖死(一階段完成),協調者出現故障了,那麼參與者收不到了commit或者roolback指令,那麼資源就會一直處于鎖死狀态,這種情況稱之為單點問題;并且協調者與參與者之間的網絡是不可靠的,總是會有網絡故障的時候,那麼其他的節點受到了coomit指令,調教了操作,這個時候就會造成資料的不一緻,這種情況成為腦裂;

為了解決這種問題,于是有了3pc協定

3Pc協定--将事務的處理分成了3個階段

CanCommit

PreCoomit

DoCommit

簡述分布式一緻性協定---2pc、3pc

簡單的說呢,就是協調者和參與者都有一個逾時機制,那麼參與者在收不到消息(網絡或者協調者出現了問題),一定時間後就會觸發逾時操作,去送出事務,是以來釋放資源,就不會出現資源鎖死的情況,但是,如果是因為網絡問題,那麼一個參與者沒有收到協調者發出的roolback指令,但是逾時了,參與者去送出了事務,其他參與者收到了消息,roolback了事務,這樣就會照成了資料的不一緻了,是以3pc也并非完美;

繼續閱讀