多案分库分表带来的问题-分布式事务
比如在一個(gè)貸款的流程里面,合同系統(tǒng)登記了數(shù)據(jù),放款系統(tǒng)也必須生成放款記錄,如果兩個(gè)動(dòng)作不是同時(shí)成功或者同時(shí)失敗,就會(huì)出現(xiàn)數(shù)據(jù)一致性的問題。如果在一個(gè)數(shù)據(jù)庫(kù)里面,我們可以用本地事務(wù)來控制,但是在不同的數(shù)據(jù)庫(kù)里面就不行了。所以分布式環(huán)境里面的事務(wù),我們也需要通過一些方案來解決。
復(fù)習(xí)一下。分布式系統(tǒng)的基礎(chǔ)是CAP 理論。
1.C (一致性) Consistency:對(duì)某個(gè)指定的客戶端來說,讀操作能返回最新的寫操作。對(duì)于數(shù)據(jù)分布在不同節(jié)點(diǎn)上的數(shù)據(jù)來說,如果在某個(gè)節(jié)點(diǎn)更新了數(shù)據(jù),那么在其他節(jié)點(diǎn)如果都能讀取到這個(gè)最新的數(shù)據(jù),那么就稱為強(qiáng)一致,如果有某個(gè)節(jié)點(diǎn)沒有讀取到,那就是分布式不一致。
2.A (可用性) Availability:非故障的節(jié)點(diǎn)在合理的時(shí)間內(nèi)返回合理的響應(yīng)(不是錯(cuò)誤和超時(shí)的響應(yīng))。可用性的兩個(gè)關(guān)鍵一個(gè)是合理的時(shí)間,一個(gè)是合理的響應(yīng)。
合理的時(shí)間指的是請(qǐng)求不能無限被阻塞,應(yīng)該在合理的時(shí)間給出返回。合理的響應(yīng)指的是系統(tǒng)應(yīng)該明確返回結(jié)果并且結(jié)果是正確的
3.P (分區(qū)容錯(cuò)性) Partition tolerance:當(dāng)出現(xiàn)網(wǎng)絡(luò)分區(qū)后,系統(tǒng)能夠繼續(xù)工作。打個(gè)比方,這里集群有多臺(tái)機(jī)器,有臺(tái)機(jī)器網(wǎng)絡(luò)出現(xiàn)了問題,但是這個(gè)集群仍然可以正工作。
CAP 三者是不能共有的,只能同時(shí)滿足其中兩點(diǎn)。基于AP,我們又有了BASE 理論。
基本可用(Basically Available):分布式系統(tǒng)在出現(xiàn)故障時(shí),允許損失部分可用功能,保證核心功能可用。
軟狀態(tài)(Soft state):允許系統(tǒng)中存在中間狀態(tài),這個(gè)狀態(tài)不影響系統(tǒng)可用性,這里指的是CAP 中的不一致。
最終一致(Eventually consistent):最終一致是指經(jīng)過一段時(shí)間后,所有節(jié)點(diǎn)數(shù)據(jù)都將會(huì)達(dá)到一致。
分布式事務(wù)有幾種常見的解決方案:
1、全局事務(wù)(比如XA 兩階段提交;應(yīng)用、事務(wù)管理器(TM)、資源管理器(DB)),例如Atomikos
2、基于可靠消息服務(wù)的分布式事務(wù)
3、柔性事務(wù)TCC(Try-Confirm-Cancel)tcc-transaction
4、最大努力通知,通過消息中間件向其他系統(tǒng)發(fā)送消息(重復(fù)投遞+定期校對(duì))
?
總結(jié)
以上是生活随笔為你收集整理的多案分库分表带来的问题-分布式事务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多案分库分表带来的问题-跨库关联查询
- 下一篇: 排序、翻页、函数计算问题