欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

分布式事務系列-解決跨庫轉賬問題

本文內容

  1. 什么是分布式事務
  2. 分布式事務中的難點
  3. 常見的解決方案
  4. 講解通過可靠消息來解決分布式事務

什么是分布式事務?

有這樣一個需求:

創(chuàng)新互聯(lián)專注于企業(yè)營銷型網站、網站重做改版、八公山網站定制設計、自適應品牌網站建設、H5頁面制作、商城網站定制開發(fā)、集團公司官網建設、成都外貿網站建設、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為八公山等各大城市提供網站開發(fā)制作服務。

小明有兩個賬戶,分別位于A、B兩個數(shù)據庫中,小明需要將A中的資金轉到B中。

我們如何實現(xiàn)?

按照下面的方式實現(xiàn)看看有沒有問題。

  1. 連接數(shù)據庫A,獲取connA連接
  2. connA打開事務
  3. A庫資金減少100
  4. 連接庫B,獲取connB連接
  5. connB打開事務
  6. B庫資金增加100
  7. connA.commit()
  8. connB.commit()

上面操作,正常情況是沒有問題。

考慮如下情況:

第7步執(zhí)行成功之后,網絡出問題了,第8步會提交失敗,此時的結果是:A庫資金減少了100,B庫資金卻沒有增加;這是一個網絡問題導致了我們業(yè)務失敗了,網絡因素是程序不可控的一些因素,還有其他的比如運行到7之后,系統(tǒng)突然斷電了,也會出現(xiàn)同樣的結果。造成了數(shù)據錯誤,對業(yè)務影響也是比較大的。

分布式事務可以這么理解:一個業(yè)務操作中,會包含很多子業(yè)務的,每個子業(yè)務都是獨立的事務,我們需要考慮的是如何保證這些子業(yè)務都成功,或者都失敗。

分布式事務中的難點

  1. 分布式事務中,分支可能是各種各樣的,可能存在各種異常情況導致有些成功有些卻失敗了,這些情況需要我們程序能夠處理,保證所有的分支要么都成功、要么都失敗,不能出現(xiàn)部分成功而部分失敗的情況。
  2. 分布式事務中,很難保證多個分支同時成功。每個分支可能都是提供遠程接口進行調用,之間存在網絡故障的問題,前面的分支調用成功了,但是其他分支由于網絡等不可控的因素而調用不成功,此時數(shù)據是很難做到同時一致性的。
  3. 實時一致性難以保證。那么我們可以做到最終一致性也是可以的。

什么是最終一致性?

就拿上面的轉賬來說,A庫的資金減少了,由于網絡問題,操作B庫的connB連接斷開了,導致B庫資金沒有增加;網絡問題是可以恢復了,如果網絡恢復了,系統(tǒng)能夠給B中資金加上,這樣最終數(shù)據也是正確的;這中間有段時間AB庫的資金是不一致的(A庫減少了100,B庫應該增加100卻沒有增加,數(shù)據是不一致的),但是最終某個時間點數(shù)據變?yōu)橐恢铝恕?strong>能夠將不一致的時間降到最低是系統(tǒng)需要考慮的問題。

分布式事務中,我們可以接受數(shù)據在某個時間段之內不一致,但是數(shù)據最終在某個時間點是一致的。

常見解決方案

  1. 可靠消息模式
  2. TCC模式實現(xiàn)

分布式事務系列中主要講這2種方案,這兩種方案基本上可以解決大多數(shù)常見的分布式事務的問題,所以咱們必須把這兩種方式拿下。

下面我們介紹一下使用可靠消息如何實現(xiàn)?

可靠消息模式實現(xiàn)轉賬操作

分布式事務系列 - 解決跨庫轉賬問題
兩個微服務
服務A:用于操作A庫中的賬戶
服務B:用于操作B庫中的賬戶

兩個服務都是鏈接獨立的數(shù)據庫,依靠數(shù)據庫提供的功能,能夠保證各自的事務。

對于用戶來說過程如下:

  1. 調用服務A,扣款100
  2. 發(fā)送扣款成功的消息到消息服務
  3. 返回用戶轉賬已受理

接著

  1. 服務B,拉取到轉賬消息
  2. B庫中給賬戶+100
  3. 調用消息服務將消息刪除
  4. 服務B消費的過程中,比如出現(xiàn)網絡、機器重啟等原因,導致消費失敗,等機器恢復之后,可以再次消費這條消息,重試多次最終會成功

上面整個轉賬過程中有幾點我們需要考慮一下:

  1. 如何確保A服務中扣款成功之后,消息一定能夠發(fā)送成功;如果消息發(fā)送失敗而丟失了,后面的業(yè)務將沒法進行。這塊涉及如何發(fā)送可靠消息,之前消息系列的文章有介紹,大家可以看一下:聊聊業(yè)務系統(tǒng)中投遞消息到mq的幾種方式
  2. 我們的服務一般都是集群的方式,消息消費的時候,可能會出現(xiàn)一條消息并發(fā)消費的情況,并發(fā)情況發(fā)生的時候,如何確保消費只能夠被消費成功一次。如果一條轉賬消息被成功消費兩次,最終B賬戶中將增加200,導致業(yè)務出錯。這塊可以參考如何保證消息消費的冪等性,這塊之前也有講過,大家也可以看一下:探討一下實現(xiàn)冪等性的幾種方式

依靠消息模式實現(xiàn)分布式事物,比較適合消費者一定會處理成功的場景。比如用戶注冊發(fā)送郵件、發(fā)送短信、送積分等。

總結

  1. 本文主要介紹了什么是分布式事務、其中的一些難點
  2. 常見的使用最多的解決方案:異步消息處理分布式事物、tcc模式
  3. tcc模式我們在后面的文章中介紹,目前在我們自己的系統(tǒng)中實現(xiàn)了通用的tcc,已經上線運行,運行也比較穩(wěn)定
  4. 對分布式事務有興趣、或有疑問的,可以加我微信itsoku交流
  5. 請關注公眾號javacode2018,更多好文及時推送給您

新聞標題:分布式事務系列-解決跨庫轉賬問題
瀏覽路徑:http://aaarwkj.com/article36/iijhpg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站內鏈、網站策劃網頁設計公司、網站排名用戶體驗、做網站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

手機網站建設
欧美日韩一区二区三区色拉拉| 精品毛片在线播放网站不卡| 欧美日韩专区一区二区三区| 日本免费在线不卡一区二区 | 日韩精品视频性色首页| 欧美十八一区二区三区| 中文字幕亚洲欧美日韩高清 | 亚洲精品欧美日韩久久| 亚洲特级黄色做啪啪啪| 国产三级三级三级三级| 国产免费一区二区福利| 黑丝美女国产精品久久久| 国产婷婷精品一区二区| 日麻批视频在线免费观看| 一区二区中文字幕日本韩国| 久草手机福利在线观看| 蜜桃视频在线中文字幕| 国产又黄又粗的视频| 亚洲熟妇丰满多毛的大昊| 久久精品亚洲国产成人av | 欧美精品福利一区二区| 欧美一级特黄大片做受| 成人黄色一级电影免费看| 亚洲情色精品国产一区| 国产91日韩欧美在线| 热门精品一区二区三区| 国产av综合一区二区| 九七青青草视频在线观看| 久久国产综合精品电影| 欧美日韩一区二区黄色| 五月天亚洲综合小说网| 亚洲视频在线男人天堂| 亚洲综合av一区二区| 在线欧美日韩一区二区三区| 日本韩国黄色三级三级| 91久久国产综合精品女同| 日本精品视频免费网| 日韩专区欧美二区国产| 未满18十八禁止观看| 久草免费福利视频资源站| 三级久久三级久久三级|