日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

分布式事务学习

發(fā)布時(shí)間:2024/1/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式事务学习 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

分布式事務(wù)全套解決方案

1.分布式場(chǎng)景中數(shù)據(jù)一致性問(wèn)題如何解決?
2.分布式事務(wù)問(wèn)題的回答思路,在面試中如何把握?
3.完整介紹一下兩階段提交協(xié)議、三階段提交協(xié)議?
4.組合存儲(chǔ)組件(Redis、Mysql),如何解決數(shù)據(jù)一致性?
5.什么是TCC(Try Confirm Cancel)解決方案?
6.如何利用本地事件表實(shí)現(xiàn)分布式事務(wù)?
7.最大努力通知方案是什么?

分布式場(chǎng)景

  • 支付回調(diào)場(chǎng)景

  • 下單業(yè)務(wù)

  • 什么是事務(wù)

    事務(wù):
    用戶定義的一系列數(shù)據(jù)庫(kù)操作,
    這些操作可以視為一個(gè)完整的邏輯處理工作單元,
    要么全部執(zhí)行,要么全部不執(zhí)行,
    是不可分割的工作單元。


    BEGIN TRANSACTION
    業(yè)務(wù)邏輯
    COMMIT/ROLLBACK
    BEGIN TRANSACTION表示事務(wù)的開(kāi)啟標(biāo)記
    COMMIT表示事務(wù)的提交操作,表示該事務(wù)的結(jié)束,此時(shí)將事務(wù)中處理的數(shù)據(jù)刷到磁盤中物理數(shù)據(jù)庫(kù)磁盤中去。
    ROLLBACK表示事務(wù)的回滾操作,表示事務(wù)異常結(jié)束,此時(shí)將事務(wù)中己經(jīng)執(zhí)行的操作撤銷回原來(lái)的狀態(tài)。

    @Transaction

    分布式事務(wù)


    分布式事務(wù)是指會(huì)涉及到操作多個(gè)數(shù)據(jù)庫(kù)(服務(wù))的事務(wù)。
    其實(shí)就是將對(duì)同一數(shù)據(jù)庫(kù)(服務(wù))事務(wù)的概念擴(kuò)大到了對(duì)
    多個(gè)數(shù)據(jù)庫(kù)(服務(wù))的事務(wù)

    目的是為了保證分布式系統(tǒng)中的數(shù)據(jù)一致性。

    分析原因:事情做了無(wú)法后悔。

    解決方案:彩排

    思路分析
    分布式事務(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ù)庫(kù)之間的接口規(guī)范(即接口函數(shù)),事務(wù)協(xié)調(diào)者用它來(lái)通知數(shù)據(jù)庫(kù)事務(wù)的開(kāi)始、結(jié)束以及提交、回滾等。
    XA 接口函數(shù)由數(shù)據(jù)庫(kù)廠商提供
    XA規(guī)范的實(shí)現(xiàn):
    分布式集群的情況下,一般加代理層來(lái)充當(dāng)TM的角色,實(shí)現(xiàn)對(duì)事務(wù)的支持。
    二階提交協(xié)議(2PC)和三階提交協(xié)議(3PC)就是根據(jù)這一思想衍生出來(lái)的。
    兩階段提交主要保證了分布式事務(wù)的原子性:即所有結(jié)點(diǎn)要么全做要么全不做)

    2PC 兩階段提交協(xié)議

    實(shí)際中:西式婚禮
    2pc生活中例子:西式婚禮:1PC
    我愿意
    你愿意娶這個(gè)女人嗎?愛(ài)她、忠誠(chéng)于她,無(wú)
    論她貧困、患病或者殘疾,直至死亡。
    你愿意嗎?
    我愿意
    你愿意嫁給這個(gè)男人嗎?愛(ài)他、忠誠(chéng)于他,
    無(wú)論他貧困、患病或者殘疾,直至死亡。
    你愿意嗎?

    既然如此:現(xiàn)在請(qǐng)你們面向?qū)Ψ?#xff0c;握住對(duì)方的
    我們將一起面對(duì)人生的一切,去分享我們的夢(mèng)想,作
    為平等的忠實(shí)伴侶,度過(guò)今后的一生。
    雙手,作為妻子和丈夫向?qū)Ψ揭烁媸难?/p>

    我一一某某某,全心全意娶你做我的妻子,無(wú)論是順
    境或逆境,富裕或貧窮,健康或疾病,快樂(lè)或優(yōu)憂愁,
    我都將毫無(wú)保留地愛(ài)你,我將努力去理解你,完完全
    全信任你。我們將成為一個(gè)整體,互為彼此的一部分,
    我們將一起面對(duì)人生的一切,去分享我們的夢(mèng)想,
    作為平等的忠實(shí)伴侶,度過(guò)今后的一生。

    我全心全意嫁給你作為你的妻子,無(wú)論是順境或逆
    境,富裕或貧窮,健康或疾病,快樂(lè)或憂愁,我都
    將毫無(wú)保留的愛(ài)你,我將努力去理解你,完完全全
    信任你,我們將成為一個(gè)整體,互為彼此的一部分,
    我們將一起面對(duì)人生的一切,去分享我們的夢(mèng)想,
    作為平等的忠實(shí)伴侶,度過(guò)今后的一生。


    2pc:提交
    第一階段操作都為同意時(shí)

    2pc:回滾
    1.有一個(gè)參與者返回no。
    2.協(xié)調(diào)者在規(guī)定時(shí)間內(nèi),沒(mé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é)開(kāi)啟一個(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.參與者沒(méi)收到協(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é)

    以上是生活随笔為你收集整理的分布式事务学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。