分佈式事務之理論基礎

1、什麼是事務?

事務(Transaction)是關係型數據庫中,由一組sql組成的一個執行單元,該單元要麼整體成功,要麼整體失敗;

2、事務的ACID特性

事務ACID特性:原子性,一致性,隔離性,持久性。這4個屬性統稱爲ACID特性。

原子性:指事務包含的左右操作sql,要麼整體成功,要麼整體失敗。

一致性:事務前的狀態和事務後的狀態一致;

持久性:指一個事務一旦被提交,那麼數據就儲存在磁盤裏,不丟失;

隔離性:指多個併發獨立事務,相互獨立、相互隔離、互不影響;

            如果事務沒有隔離,會出現3種嚴重的問題:

             2.1髒讀

                       指一個事務的處理過程中,讀到了另外一個未提交的事務的數據

                 

           2.2不可重複讀

                指多次查詢卻返回了不同的數據值,這是由於查詢間隔時,被另外一個事務修改了數據並提交;

              

            2.3幻讀

                    指當A事務在讀取某個範圍內的記錄時,B事務又在該範圍內插入了新的記錄,當A事務再次讀取該範圍內的記錄,就產生了幻讀;

             

                髒讀和不可重複讀有什麼區別?

                           髒讀:讀到的數據是前一個事務未提交的數據

                           不可重複讀:讀到的是前一個事務已提交的數據

                幻讀和不可重複讀有什麼區別?

                           相同點:讀到是都是前一個事務已經提交的數據

                          不同點:不可重複讀:讀的是一個數據值

                                         幻讀:讀的是一批數據

3、本地事務和分佈式事務的區別?

     本地事務:關係型數據庫中,由一組sql組成的一個執行單元,該單元要麼整體成功,要麼整體失敗;

    分佈式事務:指一個業務需要同時操作多個數據庫的情況下,而且必須保持ACID的特性,一般應用於微服務的多服務處理;

 

4、什麼是分佈式CAP定理

 

4.1zookeeper的cap原理

  

zookeeper是cp的原理,保證了數據一致性,犧牲了可用性

zk的數據同步原理:例:client1註冊給了server1,server1同步給了server2,server2廣播同步給了各個follower,爲了保證數據的一致性,只有整個過程都成功了,client1才收到註冊成功;

當leader故障,整個zk會重新選舉leader,在選舉期間,client不能註冊,即zk不可用,犧牲了可用性;

4.2eureka的cap原理

eureka是ap原理,保證了可用性,犧牲了一致性

eureka的數據同步原理:client1註冊給了server1,server1直接告訴client成功,server1的數據會同步給server2,爲了保證服務的可用性,他們是異步同步的

5什麼是分佈式BASE定理?

BASE是basically available(基本可用),soft state(軟狀態),eventually consistant(最終一致性)三個短語的縮寫

基本可用性:

             損失響應時間:cap可用性的服務響應時間可能是10ms,但base基本可用性的響應時間爲1s

              損失系統功能:允許某個服務出現故障時,採用服務降級等手段保證用戶的體驗

軟狀態:不完全符合ACID的原子性,可以通過mq方式進行異步同步;

最終一致性:數據不用即時同步;

 

6、什麼是分佈式事務DTP模型?

   

 

  分佈式通信協議XA規範

7、兩階段提交與三階段提交

2階段提交與3階段的區別?

1、增加了超時機制,同時爲協調者與參與者都引入了超時機制

2、在2階段的第一與第二中間插入一個提交準備的階段,插入的這個階段能保證最後提交階段之前,各個參與節點的狀態都是一致的

7.1  2階段的單點故障和網絡腦裂問題

 

7.2  3階段的單點故障與網絡腦裂問題

 

8、剛性事務的致命性問題

性能!!!!事務鎖住的時間太長。

因爲參與者不能提交事務,要等其他參與者都OK,才能提交,階段越多,性能越差;

特別是對於互聯網高併發的系統來說是不合適的,全局事務一般適合併發量小的系統。

對於互聯網高併發的系統一般採用柔性事務。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章