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,才能提交,階段越多,性能越差;
特別是對於互聯網高併發的系統來說是不合適的,全局事務一般適合併發量小的系統。
對於互聯網高併發的系統一般採用柔性事務。