傳統的基于
數據庫本地事務的解決方案只能保障單個服務的一次處理具備原子性、隔離性、一致性與持久性,但無法保障多個分布服務間處理的一致性。因此,我們必須建立一套分布式服務處理之間的協調機制,保障分布式服務處理的原子性、隔離性、一致性與持久性。
支付寶為什么需要分布式事務
基于SOA架構,整個支付寶系統會拆分成一系列獨立開發、自包含、自主運行的業務服務,并將這些服務通過各種機制靈活地組裝成最終用戶所需要的產品與解決方案。
在多個服務協同完成一次業務時,由于業務約束(如紅包不符合使用條件、賬戶余額不足等)、系統故障(如網絡或系統超時或中斷、數據庫約束不滿足等),都可能造成服務處理過程在任何一步無法繼續,使數據處于不一致的狀態,產生嚴重的業務后果,所以我們需要一個分布式事務的解決方案,用來協調多個服務的業務一致性。
支付寶的分布式事務框架
支付寶開發的分布式事務是基于兩階段提交的理論(Two Phase Commit),首先給出兩階段提交的邏輯圖: