啥?分布式啥?啥事務(wù)?
二將軍問題
「情形1」:送信失敗,如下圖所示,左側(cè)白軍穿過山谷的時(shí)候被黑軍俘虜了,右側(cè)白軍仍舊不知道左側(cè)白軍的進(jìn)攻信息。

「情形2」:送信成功,回信失敗。如下圖所示,左側(cè)白軍穿過山谷將信息成功通知給右側(cè)白軍,但是右側(cè)白軍攜帶"收到命令"的信息,穿過山谷向左側(cè)白軍通知的時(shí)候被黑軍俘虜了,此時(shí)左側(cè)白軍不知道右側(cè)白軍是否接收到進(jìn)攻命令。

「情形3」:送信成功,回信成功,如下圖所示,白軍勝利毫無疑問。

面對(duì)不穩(wěn)定的信息傳輸通道(山谷中的黑軍),要完成兩股白軍的通信是有難度的,送信回信的過程就好比我們系統(tǒng)中Send和Ack 的過程,并且只要送信或者回信任意一次失敗,整個(gè)信息傳遞就標(biāo)志著失敗,無法完成進(jìn)攻,這像不像CAP的最佳打開方式 中提到的原子性,事務(wù)中的每個(gè)操作都成功,事務(wù)才會(huì)提交。 如果真的發(fā)生了情形1和情形2,如果你是左側(cè)白軍的統(tǒng)帥或者右側(cè)白軍的負(fù)責(zé)人,你該怎么辦呢?是不是應(yīng)該等等,看看有沒有回信,如果長時(shí)間沒有回信就認(rèn)為這個(gè)送信的人被俘虜了,再派1個(gè)人重復(fù)送信的過程,這就是我們?cè)谙到y(tǒng)中常見的超時(shí)重試。當(dāng)然 重試一定是有限制的,如果真的無限重試。那么左右側(cè)白軍人數(shù)有可能會(huì)清零(資源耗盡),戰(zhàn)爭自然失敗(系統(tǒng)自然崩潰)如果左側(cè)白軍派遣多名士兵同時(shí)發(fā)起送信的動(dòng)作,那么對(duì)于右側(cè)白軍來說不管收到多少次信息,都只進(jìn)攻一次。類比咱們系統(tǒng)來說,對(duì)于不管是一次請(qǐng)求還是多次請(qǐng)求,結(jié)果都是一樣的,這就是 系統(tǒng)冪等性這個(gè)二軍問題,像不像TCP鏈接的握手的過程呢?問題來了, 為什么是三次握手,而不是兩次握手?文章留言回復(fù)下,如果你不知道可要補(bǔ)課啦
本地事務(wù)
分布式事務(wù)
資源管理器(Resource Manager, RM)即事務(wù)參與者 事務(wù)管理器(Transaction Manager, TM)即事務(wù)協(xié)調(diào)者
一個(gè)TM會(huì)管理多個(gè)RM,就類似上面我們的超市促銷支付的邏輯去協(xié)調(diào)多方數(shù)據(jù)庫資源,從而協(xié)調(diào)各個(gè)本地事務(wù)的進(jìn)度,使其共同提交或回滾,最終達(dá)成一種全局的 ACID 特性。兩種事務(wù)的區(qū)別
分布式事務(wù)的場景
「資源主導(dǎo)」

「服務(wù)依賴主導(dǎo)」

「混合主導(dǎo)」

分布式事務(wù)的分類
有道無術(shù),術(shù)可成;有術(shù)無道,止于術(shù)
歡迎大家關(guān)注Java之道公眾號(hào)
好文章,我在看??
評(píng)論
圖片
表情
