分布式事务学习
分布式事務(wù)全套解決方案
1.分布式場景中數(shù)據(jù)一致性問題如何解決?
2.分布式事務(wù)問題的回答思路,在面試中如何把握?
3.完整介紹一下兩階段提交協(xié)議、三階段提交協(xié)議?
4.組合存儲(chǔ)組件(Redis、Mysql),如何解決數(shù)據(jù)一致性?
5.什么是TCC(Try Confirm Cancel)解決方案?
6.如何利用本地事件表實(shí)現(xiàn)分布式事務(wù)?
7.最大努力通知方案是什么?
分布式場景
支付回調(diào)場景
下單業(yè)務(wù)
什么是事務(wù)
事務(wù):
用戶定義的一系列數(shù)據(jù)庫操作,
這些操作可以視為一個(gè)完整的邏輯處理工作單元,
要么全部執(zhí)行,要么全部不執(zhí)行,
是不可分割的工作單元。
BEGIN TRANSACTION
業(yè)務(wù)邏輯
COMMIT/ROLLBACK
BEGIN TRANSACTION表示事務(wù)的開啟標(biāo)記
COMMIT表示事務(wù)的提交操作,表示該事務(wù)的結(jié)束,此時(shí)將事務(wù)中處理的數(shù)據(jù)刷到磁盤中物理數(shù)據(jù)庫磁盤中去。
ROLLBACK表示事務(wù)的回滾操作,表示事務(wù)異常結(jié)束,此時(shí)將事務(wù)中己經(jīng)執(zhí)行的操作撤銷回原來的狀態(tài)。
@Transaction
分布式事務(wù)
分布式事務(wù)是指會(huì)涉及到操作多個(gè)數(shù)據(jù)庫(服務(wù))的事務(wù)。
其實(shí)就是將對(duì)同一數(shù)據(jù)庫(服務(wù))事務(wù)的概念擴(kuò)大到了對(duì)多個(gè)數(shù)據(jù)庫(服務(wù))的事務(wù)。
目的是為了保證分布式系統(tǒng)中的數(shù)據(jù)一致性。
分析原因:事情做了無法后悔。
解決方案:彩排
思路分析
分布式事務(wù)處理的關(guān)鍵是必須有一種方法可以知道事務(wù)在任何地方所做的所有動(dòng)作,提交或回滾事務(wù)的決定必須產(chǎn)生統(tǒng)一的結(jié)果(全部提交或全部
回滾)
分布式事務(wù):引入?yún)f(xié)調(diào)者
XA規(guī)范:總之一句話:
就X/Open DTP 定義的 事務(wù)協(xié)調(diào)者與數(shù)據(jù)庫之間的接口規(guī)范(即接口函數(shù)),事務(wù)協(xié)調(diào)者用它來通知數(shù)據(jù)庫事務(wù)的開始、結(jié)束以及提交、回滾等。
XA 接口函數(shù)由數(shù)據(jù)庫廠商提供
XA規(guī)范的實(shí)現(xiàn):
分布式集群的情況下,一般加代理層來充當(dāng)TM的角色,實(shí)現(xiàn)對(duì)事務(wù)的支持。
二階提交協(xié)議(2PC)和三階提交協(xié)議(3PC)就是根據(jù)這一思想衍生出來的。
兩階段提交主要保證了分布式事務(wù)的原子性:即所有結(jié)點(diǎn)要么全做要么全不做)
2PC 兩階段提交協(xié)議
實(shí)際中:西式婚禮
2pc生活中例子:西式婚禮:1PC
我愿意
你愿意娶這個(gè)女人嗎?愛她、忠誠于她,無
論她貧困、患病或者殘疾,直至死亡。
你愿意嗎?
我愿意
你愿意嫁給這個(gè)男人嗎?愛他、忠誠于他,
無論他貧困、患病或者殘疾,直至死亡。
你愿意嗎?
既然如此:現(xiàn)在請(qǐng)你們面向?qū)Ψ?#xff0c;握住對(duì)方的
我們將一起面對(duì)人生的一切,去分享我們的夢想,作
為平等的忠實(shí)伴侶,度過今后的一生。
雙手,作為妻子和丈夫向?qū)Ψ揭烁媸难?/p>
我一一某某某,全心全意娶你做我的妻子,無論是順
境或逆境,富裕或貧窮,健康或疾病,快樂或優(yōu)憂愁,
我都將毫無保留地愛你,我將努力去理解你,完完全
全信任你。我們將成為一個(gè)整體,互為彼此的一部分,
我們將一起面對(duì)人生的一切,去分享我們的夢想,
作為平等的忠實(shí)伴侶,度過今后的一生。
我全心全意嫁給你作為你的妻子,無論是順境或逆
境,富裕或貧窮,健康或疾病,快樂或憂愁,我都
將毫無保留的愛你,我將努力去理解你,完完全全
信任你,我們將成為一個(gè)整體,互為彼此的一部分,
我們將一起面對(duì)人生的一切,去分享我們的夢想,
作為平等的忠實(shí)伴侶,度過今后的一生。
2pc:提交
第一階段操作都為同意時(shí)
2pc:回滾
1.有一個(gè)參與者返回no。
2.協(xié)調(diào)者在規(guī)定時(shí)間內(nèi),沒有收到所有參與者反饋。
seata對(duì)兩階段的優(yōu)化
Transaction Coordinator (TC): 事務(wù)協(xié)調(diào)器,它是獨(dú)立的中間件,需要獨(dú)立部署運(yùn)行,它維護(hù)全局事務(wù)的運(yùn) 行狀態(tài),接收TM指令發(fā)起全局事務(wù)的提交與回滾,負(fù)責(zé)與RM通信協(xié)調(diào)各各分支事務(wù)的提交或回滾。
Transaction Manager ?: 事務(wù)管理器,TM需要嵌入應(yīng)用程序中工作,它負(fù)責(zé)開啟一個(gè)全局事務(wù),并最終 向TC發(fā)起全局提交或全局回滾的指令。
Resource Manager (RM): 控制分支事務(wù),負(fù)責(zé)分支注冊(cè)、狀態(tài)匯報(bào),并接收事務(wù)協(xié)調(diào)器TC的指令,驅(qū)動(dòng)分 支(本地)事務(wù)的提交和回滾。
3PC三階段提交協(xié)議
Can commit結(jié)果
Can commit所有參與者返回yes
pre commit:
Can commit結(jié)果
1.有參與者返回no。
2.協(xié)調(diào)者等待超時(shí)。
3.參與者沒收到協(xié)調(diào)者的指令
abort commit:
pre commit結(jié)果
Pre commit段都是yes
do commit
pre commit結(jié)果
1.有參與者返回no。
2.協(xié)調(diào)者等待超時(shí)。
abort commit
超時(shí)機(jī)制:參與者
pre commit:
回滾
do commit:
提交
TCC (Try Confirm Cancel)
消息隊(duì)列+本地事件表+定時(shí)任務(wù)
最大努力通知方案
1、重復(fù)通知機(jī)制。
2、消息校對(duì)機(jī)制。
總結(jié)
- 上一篇: DSP之TMS320F28335学习总结
- 下一篇: 默认路由消失