理論很少說,談起事務,必然就繞不過ACID。然而傳統的分佈式事務在當下的分佈式、微服務結構中中並不太合適,數據在傳統的分佈式事務中會被鎖住,並且還要應對XA協議帶來的開銷(創建和關閉與資源管理器的鏈接、預提交、提交和回滾一個本地事務等等)。分佈式
與之相對的,是更符合當下業務需求的基於BASE理論的柔性事務。微服務
【ACID(A,I)::原子性,隔離性】與【BASE(S)::柔性狀態】:好比說在支付系統中,有一個支付業務系統和積分系統,若是要知足原子性與隔離性,那麼邏輯確定是這樣的:事務
可是在BASE的柔性狀態中,容許出現資源
這樣的狀況,柔性事務中,容許數據短暫的不一致,以及非隔離性的操做。秒殺
【ACID(A,D)::原子性,持久性】與【BASE(E)最終一致性】:最終一致性指的是系統中的全部數據副本通過必定時間後,最終可以達到一致的狀態。支付
基本可用有兩個層面,即,call
好比說我有一個秒殺商品的業務,有些用戶會獲取到一個假的秒殺頁,而且秒殺一定失敗...之類的。數據