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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

什么是ACID理论(二阶段、三阶段提交、TCC)

發布時間:2023/12/1 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是ACID理论(二阶段、三阶段提交、TCC) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 二階段提交協議
  • TCC(Try-Confirm-Cancel)
    • 預留成功
    • 預留失敗
  • 三階段提交協議
  • 總結
  • Some questions
    • reference

ACID理論時對事務特性的抽象和總結,想要實現ACID需要掌握二階段提交協議以及TCC
這里是有關協議的論文PDF鏈接:

CONCURRENCY CONTROLAND RECOVERY IN DATABASE
SYSTEMS

二階段提交協議

二階段提交協議:通過二階段的協商來完成一個提交操作

首先定義一個分布式事務操作,發起這個事務到分布式系統種的節點中。某一個節點收到消息后扮演協調者身份,與其他節點聯系,發送網絡消息,發起二階段提交。
然后協調者進入請求提交階段(即投票階段),其他節點進行評估,評估事務中需要操作的對象和對象狀態是否準備好、是否提交新操作,然后回復協調者,
協調者收到所有回復后,進入提交執行階段(即完成階段)。協調者先執行事務,然后通知其他節點,其他節點接收到通知后也執行事務,然后將事務結果返回給協調者。
協調者將總結果返回給客戶。

需要注意的是:
在第一階段,每個參與者投票表決事務是放棄還是提交。一旦參與者投票要求提交事務,那么就不允許放棄事務。即:
在一個參與者投票要求提交事務之前,它必須保證能夠執行提交協議中它自己的那一部分,即使參與者出現故障或者中途被替換。

不過二階段協議也存在問題:
1、在提交請求階段,需要預留資源,在資源預留期間,其他人不能操作(MySQL XA協議在第一階段會將相關資源鎖定)
2、數據庫是獨立的系統

所以無法根據業務特點彈性調整鎖的粒度,會影響到數據庫的并發性能。

TCC(Try-Confirm-Cancel)

TCC是預留、確認、撤銷三個操作的簡稱,包含了預留、確認or撤銷兩個階段。

預留成功

進入預留階段,步驟如下:

如果預留階段的執行都沒有問題,就進入確認階段,步驟如下:

預留失敗

假設節點2分配資源失敗了:

那么會進入撤銷階段:

TCC本質:補償事務
它的核心思想是針對每個操作都要注冊一個與其對應的確認操作和補償操作(也可以稱為撤銷操作)。
它是一個業務層面的協議,TCC的三個操作需要在業務代碼中編碼實現。為了實現一致性,確認操作和補償操作必須是冪等的,因為這2個操作可能會失敗重試。
Tips:冪等性是指同一操作對同一系統的任意多次執行,所產生的影響均與一次執行的影響相同,不會因為多次執行而產生副作用。常見的實現方法有Token、索引等。本質是通過唯一標識,標記同一操作的方式來消除多次執行的副作用。

三階段提交協議

三階段提交協議,針對二階段提交協議的痛點:協調者故障,參與者長期鎖定資源,引入了詢問階段超市機制,來減少資源被長時間鎖定的情況,但是會導致集群各個節點在正常運行的情況下,使用更多的消息進行協商,增加系統負載和響應延遲。所以三階段提交協議很少使用。

總結

Some questions

在兩階段提交協議中,如果一個節點在第一階段確認可以提交,但是它之后崩潰了,第二階段無法實現自己那部分事務,此時該如何是好?
需要將提交的相關信息持久化到磁盤,然后重啟,恢復到之前狀態

reference

ACID理論:CAP的酸,追求一致性

總結

以上是生活随笔為你收集整理的什么是ACID理论(二阶段、三阶段提交、TCC)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。