天天看點

【分布式篇】分布式事務(3PC)

分布式系統如何保證事物(3PC,點我)
  • 第一階段: 稱為準備(prepare)階段:
    • 協調者向所有參與者發送消息,準備送出
    • 所有參與者開始事務執行的準備工作:如:為資源上鎖。
    • 如果事務的準備工作成功,則回應“可以送出”,否則回應“拒絕送出”。
  • 第二階段: 稱為送出(commit)/復原(rollback)階段:
    • 所有的參與者都回應“可以送出”,協調者向所有的參與者發送“正式送出”的指令。參與者完成正式送出,并釋放所有資源,然後回應“完成”,協調者收集各個服務的“完成”回應後結束事務。
    • 如果有一個參與者回應“拒絕送出”協調者向所有的參與者發送“復原操作”,并釋放所有資源,然後回應“復原完成”,取消整體的分布式事務。
  • 三階段送出(如果問到,參與者當機如何避免阻塞就說3PC):
    • 3PC增加了一個中間狀态,友善判斷事務狀态,新的協調者不用等當機者恢複 就能決定事務狀态,準确的送出事務或者終止事務。
    • 新協調者如果發現存活的節點的狀态是[預送出],說明各執行節點的狀态肯定都是"可以送出",協調者直接送出事務,能保證資料一緻性 。
    • 如果發現存活的節點狀态是[能否送出]狀态,說明事務被中斷了,協調者繼續中斷事務就行。

繼續閱讀