把我的理解的幾個概念作了一個總結,更貼近開發工做,更直白通俗的總結(意味着不嚴謹,但能懂)。數據庫
單個關係型數據庫就是用這個模型來保障高一致性和可用性的。
Atomicity原子性:一個事務中全部操做都必須所有完成,要麼所有不完成。
Consistency一致性. 在事務開始或結束時,數據庫應該在一致狀態。
Isolation隔離層. 事務將假定只有它本身在操做數據庫,彼此不知曉。
Durability. 一旦事務完成,就不能返回。
直白,簡單的去理解
網絡
和ACID相反,分佈式事務中咱們沒法作到強一致。 雖然可能不一致,但每一個應用均可以根據自身的業務特色,採用適當的方式來使分佈式系統數據達到最終一致性。
分佈式系統中,數據一致性和響應速度是成反比的。 要想多個系統數據一致,就須要時間進行同步;要想盡快響應用戶,就要接受數據不一致的狀況(每每就是業務權衡)。
CAP定理是由加州大學伯克利分校Eric Brewer教授提出來的,他指出分佈式WEB服務沒法同時知足一下3個屬性:異步
若是系統對一個寫操做返回成功,那麼以後的讀請求都必須讀到這個新數據;若是返回失敗,那麼全部讀操做都不能讀到這個數據,對調用者而言數據具備強一致性。分佈式
1. 簡單理解: 要往十個系統裏每一個系統都增長一條數據,每一個子系統上面都進行修改爲功,這樣就保證了數據一致,可是時間也會延長;spa
全部讀寫請求在必定時間內獲得響應code
1. 簡單理解: 上面已經說到,爲了保證數據一致性,咱們須要延長時間。那爲了減小響應時間,咱們可能先在一個系統內增長一條數據,剩下的九個系統異步去添加,這就是犧牲數據一致性,換取可用性;圖片
在網絡分區的狀況下,被分隔的節點仍能正常對外服務,簡單可理解爲「可靠性」(兩個系統外界看來就是總體,若是系統不能通訊了,成爲分區。 若是不能保證分區容錯性,則節點不能正常服務,不能服務就談不上什麼事務了,因此分區容錯性是確定要保證的);事務
1. 分區容錯性 的理解:多個系統組成一個分佈式系統,外界看來這個系統是一個總體,一個區域。ci
2. 可是內部若是出現網絡不通的問題,多個子系統就變成了孤島,變成了多個分區,分區容錯性就是指這種狀況是,每一個子系統要可以適應這種問題,能正常提供服務,雖然數據可能沒同步到其餘子系統,但總比系統不能訪問要好 。
開發
分佈式事務會結合上面三個概念進行實現,在實際開發中,就是根據具體業務在 數據一致性 和 服務可用性 二者之間進行權衡。