分散式事務解決方案-2pc/3pc
阿新 • • 發佈:2022-04-13
什麼是2pc?
2PC 即兩階段提交協議,將整個事務流程分為兩個階段:準備階段、提交階段
1.準備階段本地事務向協調者傳送處理結果
2.提交階段階段協調者根據結果執行提交或回滾
有一個問題:如果傳送者傳送的請求因為網路原因,導致本地事務沒有接收到,後果就是
本地事務一直阻塞,所以誕生了3pc
什麼是3pc?
將2pc的提交階段進行拆分(確認所有本地事務能夠接受到commit),核心是預提交pre-commit返回ACK
什麼是tcc?
補償機制
tcc:try,confirm,cancel
try:預處理 寫業務檢查的邏輯程式碼(一致性),預留必須的業務資源(準隔離性) 鎖定資源
confirm:確認(如果成功了,執行confirm)
cancel:取消(如果失敗了,執行cancel)釋放Try階段預留的業務資源
缺點:
需要寫大量的補償程式碼
在訊息中介軟體中可能出現問題(A傳送以後就不管了,B可能收到多個訊息,也可能收不到資訊)