分佈式事務的基本知識

分佈式事務的基礎知識
1.產生背景
分佈式事務的產生其實是相對本地事務而言的,在之前的章節關於事務的ACID特性以及事務隔離級別做了詳細的解說,再加上數據庫的redo和undo特性使得本地事務的處理變得簡單。然而隨着分佈式應用的不斷增加,本地事務的那一套理論已經不能適應分佈式事務的應用場景,最本質的原因就是因爲本地事務是在同一個進程、同一個數據庫種進行,而對於分佈式應用來說一個事務的產生涉及到了多個數據庫和多個進程,使得分佈式事務難以控制。分佈式事務的最主要的問題就是數據的不一致性,所以目前大家討論的關於分佈式事務的問題其本質也是爲了保證數據的一致性。
2.常用的理論
2.1 CAP理論
CAP定理是由加州大學伯克利分校Eric Brewer教授提出來的,他指出WEB服務無法同時滿足一下3個屬性:
一致性(Consistency) : 客戶端知道一系列的操作都會同時發生(生效)
可用性(Availability) : 每個操作都必須以可預期的響應結束
分區容錯性(Partition tolerance) : 即使出現單個組件無法可用,操作依然可以完成
具體地講在分佈式系統中,在任何數據庫設計中,一個Web應用至多隻能同時支持上面的兩個屬性。顯然,任何橫向擴展策略都要依賴於數據分區。因此,設計人員必須在一致性與可用性之間做出選擇。關於這個理論的證明可以自行百度,網上有許多相關資料。
2.2 BASE理論
BASE是Basically Available(基本可用)、Soft state(軟狀態)和Eventually consistent(最終一致性)三個短語的縮寫。BASE理論是對CAP中一致性和可用性權衡的結果,其來源於對大規模互聯網系統分佈式實踐的總結, 是基於CAP定理逐步演化而來的。BASE理論的核心思想是:即使無法做到強一致性,但每個應用都可以根據自身業務特點,採用適當的方式來使系統達到最終一致性。接下來看一下BASE中的三要素:
1、基本可用
基本可用是指分佈式系統在出現不可預知故障的時候,允許損失部分可用性----注意,這絕不等價於系統不可用。比如:
(1)響應時間上的損失。正常情況下,一個在線搜索引擎需要在0.5秒之內返回給用戶相應的查詢結果,但由於出現故障,查詢結果的響應時間增加了1~2秒
(2)系統功能上的損失:正常情況下,在一個電子商務網站上進行購物的時候,消費者幾乎能夠順利完成每一筆訂單,但是在一些節日大促購物高峯的時候,由於消費者的購物行爲激增,爲了保護購物系統的穩定性,部分消費者可能會被引導到一個降級頁面
2、軟狀態
軟狀態指允許系統中的數據存在中間狀態,並認爲該中間狀態的存在不會影響系統的整體可用性,即允許系統在不同節點的數據副本之間進行數據同步的過程存在延時
3、最終一致性
最終一致性強調的是所有的數據副本,在經過一段時間的同步之後,最終都能夠達到一個一致的狀態。因此,最終一致性的本質是需要系統保證最終數據能夠達到一致,而不需要實時保證系統數據的強一致性。
總的來說,BASE理論面向的是大型高可用可擴展的分佈式系統,和傳統的事物ACID特性是相反的,它完全不同於ACID的強一致性模型,而是通過犧牲強一致性來獲得可用性,並允許數據在一段時間內是不一致的,但最終達到一致狀態。但同時,在實際的分佈式場景中,不同業務單元和組件對數據一致性的要求是不同的,因此在具體的分佈式系統架構設計過程中,ACID特性和BASE理論往往又會結合在一起
3總結
總的來說分佈式事務是由於分佈式架構導致的,在進行單體項目的開發時我們根據事務的ACID特性可保證數據的強一致性,當採用分佈式架構時可能導致分佈式事務問題,目前解決分佈式事務問題大致有4種常用方案,兩階段提交、TCC補償、可靠消息異步確保、最大努力通知,在後面的章節將詳細介紹。
參考鏈接:
https://www.cnblogs.com/aigongsi/archive/2012/10/11/2718313.html
https://www.cnblogs.com/savorboard/p/distributed-system-transaction-consistency.html
https://www.cnblogs.com/monkeyblog/p/10449363.html
https://www.cnblogs.com/szlbm/p/5588543.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章