基本概念
CAP理論
一個分布式系統(tǒng)不可能同時滿足一致性(C:Consistency)间聊、可用性(A:Availability)和分區(qū)容錯性(P:Partition tolerance)這三個基本需求躬贡,最多只能同時滿足其中兩項
- 一致性 :分布式環(huán)境下氢妈,一致性是指數(shù)據(jù)在多個副本之間能否保持一致的特性
- 可用性 :可用性是指系統(tǒng)提供的服務必須一直處于可用的狀態(tài),對于用戶的每一個操作請求總是能夠在有限的時間內(nèi)返回結(jié)果
- 分區(qū)容錯性:分布式系統(tǒng)在遇到任何網(wǎng)絡分區(qū)故障的時候仙辟,仍然需要能夠保證對外提供滿足一致性和可用性的服務同波,除非是整個網(wǎng)絡環(huán)境都發(fā)生了故障
BASE理論
BASE是Basically Available(基本可用)、Soft state(軟狀態(tài))和Eventually consistent(最終一致性)三個短語的縮寫
- 基本可用:基本可用是指分布式系統(tǒng)在出現(xiàn)不可預知故障的時候叠国,允許損失部分可用性,比如雙十一大促淘寶修改地址的功能沒了戴尸。
- 軟狀態(tài):軟狀態(tài)指允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài)粟焊,并認為該中間狀態(tài)的存在不會影響系統(tǒng)的整體可用性,即允許系統(tǒng)在不同節(jié)點的數(shù)據(jù)副本之間進行數(shù)據(jù)同步的過程存在延時孙蒙。
- 最終一致性:最終一致性強調(diào)的是所有的數(shù)據(jù)副本项棠,在經(jīng)過一段時間的同步之后,最終都能夠達到一個一致的狀態(tài)挎峦。
ACID
數(shù)據(jù)庫事務正確執(zhí)行的四個基本要素的縮寫香追。包含:原子性(Atomicity)、一致性(Consistency)坦胶、隔離性(Isolation)透典、持久性(Durability)。一個支持事務(Transaction)的數(shù)據(jù)庫顿苇,必須要具有這四種特性
酸堿平衡
ACID能夠保證事務的強一致性峭咒,即數(shù)據(jù)是實時一致的。這在本地事務中是沒有問題的纪岁,在分布式事務中凑队,強一致性會極大影響分布式系統(tǒng)的性能,因此分布式系統(tǒng)中遵循BASE理論即可幔翰。但分布式系統(tǒng)的不同業(yè)務場景對一致性的要求也不同漩氨。如交易場景下,就要求強一致性遗增,此時就需要遵循ACID理論叫惊,而在注冊成功后發(fā)送短信驗證碼等場景下,并不需要實時一致贡定,因此遵循BASE理論即可赋访。因此要根據(jù)具體業(yè)務場景,在ACID和BASE之間尋求平衡。
分布式事務協(xié)議
XA規(guī)范
二階提交協(xié)議和三階提交協(xié)議就是根據(jù)這一思想衍生出來的蚓耽∏可以說二階段提交其實就是實現(xiàn)XA分布式事務的關(guān)鍵(確切地說:兩階段提交主要保證了分布式事務的原子性:即所有結(jié)點要么全做要么全不做)
2PC
二階段提交協(xié)議
即將事務的提交過程分為兩個階段來進行處理:
準備階段和提交階段
細致來說第一步投票,當所有事務參與者投票通過步悠,則進入第二步签杈,否則就回滾所有事務,第二步鼎兽,提交所有 commit
(事務的發(fā)起者稱協(xié)調(diào)者答姥,事務的執(zhí)行者稱參與者)
3PC
引入超時機制。同時在協(xié)調(diào)者和參與者中都引入超時機制谚咬。
在第一階段和第二階段中插入一個準備階段鹦付。保證了在最后提交階段之前各參與節(jié)點的狀態(tài)是一致的
分布式事務的解決方案
- 全局消息
- 基于可靠消息服務的分布式事務
- TCC
- 最大努力通知
全局事務(DTP模型)
全局事務基于DTP模型實現(xiàn)。DTP是由X/Open組織提出的一種分布式事務模型——X/Open Distributed Transaction Processing Reference Model择卦。它規(guī)定了要實現(xiàn)分布式事務敲长,需要三種角色:
- AP:Application 應用系統(tǒng)
- TM:Transaction Manager 事務管理器
- RM:Resource Manager 資源管理器
基于可靠消息服務的分布式事務
這種實現(xiàn)分布式事務的方式需要通過消息中間件來實現(xiàn)。(事務消息機制)
消息中間件扮演者分布式事務協(xié)調(diào)者的角色秉继。
系統(tǒng)A完成任務A后祈噪,到任務B執(zhí)行完成之間,會存在一定的時間差尚辑。在這個時間差內(nèi)辑鲤,整個系統(tǒng)處于數(shù)據(jù)不一致的狀態(tài),但這短暫的不一致性是可以接受的杠茬,因為經(jīng)過短暫的時間后月褥,系統(tǒng)又可以保持數(shù)據(jù)一致性,滿足BASE理論澈蝙。
具體來講
如果類似于 kafka 的消息吓坚,本身有事務消息
如果在 commit 失敗了,應該消息系統(tǒng)又一次主動檢查的過程
其他消息系統(tǒng)利用延遲消息完成
最大努力通知
建立消息重發(fā)機制灯荧,不斷重試
TCC
TCC 補償事務 將事務提交分為 Try - Confirm - Cancel 3個操作礁击。
- Try:預留業(yè)務資源/數(shù)據(jù)效驗
- Confirm:確認執(zhí)行業(yè)務操作
- Cancel:取消執(zhí)行業(yè)務操作
參考文獻
https://blog.csdn.net/u010425776/article/details/79516298
https://help.aliyun.com/document_detail/34480.html?spm=a2c4g.11186623.6.650.1811425b0G5yKZ