CAP:數據庫
- Consistency(一致性)
- Available(可用性)
- Partition tolerance(分區容錯性)
BASE:網絡
- Basically Available(基本可用)
- Soft state(軟狀態)
- Eventually consistent (最終一致性)
XA 是 X/Open CAE Specification (Distributed Transaction Processing)模型,它定義的 TM(Transaction Manager)與 RM(Resource Manager)之間進行通訊的接口。併發
具體依賴於數據庫廠商對jdbc-driver的實現。分佈式
在 XA 規範中,數據庫充當 RM 角色,應用須要充當 TM 的角色,即生成全局的 txId ,調用 XAResource 接口,把多個本地事務協調爲全局統一的分佈式事務。性能
1PC也叫弱XA。如上圖,接口
2PC也叫強XA,是XA的標準實現。分爲兩個階段,如上圖。事務
開啓XA事務以後,全部子事務會按照本地默認的隔離級別鎖定資源。這時會記錄數據庫的undo和redo log。ci
當全部子事務反饋的結果爲 「yes」 時,TM 再發起 commit 。資源
若其中任何一個子事務反饋的結果爲「no」,TM 則發起 rollback 。it
若是在prepare階段反饋「yes」,可是在commit階段數據庫宕機,可根據XA recover再次進行commit進行補償,保證數據一致性。