有這樣一個需求:
專注于為中小企業(yè)提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)新邵免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。小明有兩個賬戶,分別位于A、B兩個數(shù)據(jù)庫中,小明需要將A中的資金轉(zhuǎn)到B中。
我們?nèi)绾螌?shí)現(xiàn)?
按照下面的方式實(shí)現(xiàn)看看有沒有問題。
上面操作,正常情況是沒有問題。
考慮如下情況:
第7步執(zhí)行成功之后,網(wǎng)絡(luò)出問題了,第8步會提交失敗,此時的結(jié)果是:A庫資金減少了100,B庫資金卻沒有增加;這是一個網(wǎng)絡(luò)問題導(dǎo)致了我們業(yè)務(wù)失敗了,網(wǎng)絡(luò)因素是程序不可控的一些因素,還有其他的比如運(yùn)行到7之后,系統(tǒng)突然斷電了,也會出現(xiàn)同樣的結(jié)果。造成了數(shù)據(jù)錯誤,對業(yè)務(wù)影響也是比較大的。
分布式事務(wù)可以這么理解:一個業(yè)務(wù)操作中,會包含很多子業(yè)務(wù)的,每個子業(yè)務(wù)都是獨(dú)立的事務(wù),我們需要考慮的是如何保證這些子業(yè)務(wù)都成功,或者都失敗。
就拿上面的轉(zhuǎn)賬來說,A庫的資金減少了,由于網(wǎng)絡(luò)問題,操作B庫的connB連接斷開了,導(dǎo)致B庫資金沒有增加;網(wǎng)絡(luò)問題是可以恢復(fù)了,如果網(wǎng)絡(luò)恢復(fù)了,系統(tǒng)能夠給B中資金加上,這樣最終數(shù)據(jù)也是正確的;這中間有段時間AB庫的資金是不一致的(A庫減少了100,B庫應(yīng)該增加100卻沒有增加,數(shù)據(jù)是不一致的),但是最終某個時間點(diǎn)數(shù)據(jù)變?yōu)橐恢铝恕?strong>能夠?qū)⒉灰恢碌臅r間降到最低是系統(tǒng)需要考慮的問題。
分布式事務(wù)中,我們可以接受數(shù)據(jù)在某個時間段之內(nèi)不一致,但是數(shù)據(jù)最終在某個時間點(diǎn)是一致的。
分布式事務(wù)系列中主要講這2種方案,這兩種方案基本上可以解決大多數(shù)常見的分布式事務(wù)的問題,所以咱們必須把這兩種方式拿下。
下面我們介紹一下使用可靠消息如何實(shí)現(xiàn)?
兩個微服務(wù)
服務(wù)A:用于操作A庫中的賬戶
服務(wù)B:用于操作B庫中的賬戶
兩個服務(wù)都是鏈接獨(dú)立的數(shù)據(jù)庫,依靠數(shù)據(jù)庫提供的功能,能夠保證各自的事務(wù)。
對于用戶來說過程如下:
接著
上面整個轉(zhuǎn)賬過程中有幾點(diǎn)我們需要考慮一下:
依靠消息模式實(shí)現(xiàn)分布式事物,比較適合消費(fèi)者一定會處理成功的場景。比如用戶注冊發(fā)送郵件、發(fā)送短信、送積分等。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。