bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

分布式事務(wù)處理方案,微服事務(wù)處理方案-創(chuàng)新互聯(lián)

微服事務(wù)處理方案(分布式事務(wù)處理方案)

1. 什么是事務(wù)
由一組操作構(gòu)成的可靠、 獨立的工作單元。
事務(wù)具有以下特點:
?Atomicity(原子性)
?Consistency(一致性)
?Isolation(隔離性)
?Durability(持久性)

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊虛擬主機、營銷軟件、網(wǎng)站建設(shè)、港口網(wǎng)站維護(hù)、網(wǎng)站推廣。

2.事務(wù)的一致性
單體應(yīng)用可以在數(shù)據(jù)庫的事物管理器中獲得強一致性,這種本地事物可靠簡單。
而在微服或者SOA的場景下,我們的本地事物就不作用了。對于分布式系統(tǒng) Google 提出 CAP定理 ,
分布式的事物只能同時擁有以下三項中的兩個:
?Consistency(一致性): 所有 用戶看到一致的數(shù)據(jù)。
?Availability(可用性): 總能找 到一個可用的數(shù)據(jù)復(fù)本。
?Tolerance to Network Partition(分區(qū)容忍性): 即使 在系統(tǒng)被分區(qū)的情況下,仍然滿足上述兩點。

分布式系統(tǒng)的事物無法做到強一致性,只能做到最終一致性。

3.常見分布式事物的處理方案

  • 2pc 兩段提交方案
  • 3pc 三段提交方案,是兩段提交方案的進(jìn)化。
  • TCC 模式 try ,confirm ,cancel。
  • 可靠消息機制 ,可靠消息分為 非事物消息 和 事物消息。

事物消息,簡單的說就是消息投遞成功,你本地的數(shù)據(jù)庫事物肯定提交成功,消息投遞失敗你本地事物也肯定提交失敗。相當(dāng)于你投遞消息和操作數(shù)據(jù)庫是綁定在一起的,兩者是在同一個事物中。

非事物消息,簡單的說就是消息投遞成功,本地數(shù)據(jù)庫事物不一定執(zhí)行成功。

而現(xiàn)有的開源的MQ框架 大多數(shù)是不支持 事物消息的,也沒有和本地事物進(jìn)行配合。
RocketMQ 好像實現(xiàn)了這個事物消息功能,有興趣的同學(xué)可以去看看。

可靠消息機制保證數(shù)據(jù)一致性的解決方案(非事物消息)

先來看個案例:
假設(shè)我有一個 文章微服 負(fù)責(zé)發(fā)布文章,查詢文章列表等,還有一個 用戶微服 保持用戶的一些基本信息,如:用戶發(fā)文章的篇數(shù)等。

現(xiàn)在發(fā)文章在 文章微服,而用戶的發(fā)文篇數(shù)在 用戶微服。這種情況下我們怎么保證 發(fā)文的計數(shù) 不會多也不會少,保證其的一致性的呢?

大家先來看一段代碼:
假設(shè)這是 文章微服 發(fā)文代碼:

@Transactional
    public void saveArticle(Article article){
        try{
            //保存文章
            articleDao.saveArticle(article);
            MqEvent saveArticleEvent = new MqEvent();
            //消息ID 
            saveArticleEvent.setMsgId(UUIDUtil.mongoObjectId());
            //發(fā)送保存文章 事件個用戶服務(wù)
            sender.sendAddArticleMqEvent(saveArticleEvent);
        }catch (Exception e){
            //拋異常 讓事務(wù)回滾
            throw new RuntimeException();
        }
    }
}

看起來很正常呀!沒有什么問題! 我們來列舉一下可能會出現(xiàn)的情況;

  1. 保存文章正常,MQ發(fā)送也正常,好萬事大吉,數(shù)據(jù)都正常。

  2. 保存文章正常,MQ發(fā)送失敗,拋異常。這時數(shù)據(jù)回滾,雖然出了點問題 但是數(shù)據(jù)正常。這也沒問題。

  3. 文章保存失敗,這時肯定拋異常,MQ發(fā)送走不到,這時也是正常的。

  4. 文章保存成功,MQ發(fā)送成功,這時會不會有問題出現(xiàn)呢? 剛剛我們說了 我們的MQ是非事物性的,恰巧這個時候 MQ 回執(zhí)異常導(dǎo)致 MQ拋異常了。本地事物回滾,但是MQ雖然拋異常,消息卻發(fā)成功了。這時候 會導(dǎo)致 用戶發(fā)文計數(shù)多了一篇,數(shù)據(jù)不一致了導(dǎo)致。

雖然這種做法看起來沒有什么問題,但其實是有問題的。

為了解決這個問題,我們需要 增加一個本地事件表,專門存放 MQ事件 ,有定時器輪訓(xùn)去發(fā)送MQ消息,發(fā)送成功后做標(biāo)記,或者刪除。很多MQ都會有 消息回執(zhí)的。當(dāng)成功投遞到消息隊列是 就會得到回執(zhí)。

于是我們的代碼應(yīng)該改成這樣:

  @Transactional
    public void saveArticle(Article article) {
        articleDao.saveArticle(article);
        MqEvent saveArticleEvent = new MqEvent();
        //消息ID
        saveArticleEvent.setMsgId(UUIDUtil.mongoObjectId());
        // 保存事件到事件表
        mqEventDao.addMQEvent(saveArticleEvent);
    }

這樣在本地事物的強一致性下可以保證,發(fā)文的同事插入發(fā)文事件。

說說 用戶微服那邊的處理 , 用戶微服也應(yīng)該有一個這樣的事件表,保存接收的事件,通過輪訓(xùn)等方式處理這些事件,只有成功的接收了事件,事件才能從MQ隊列里面消失。MQ在消費消息的時候如果遇到異常會重新將消失重新發(fā)回到隊列中,很多MQ具有這個特性。

細(xì)心的同學(xué)可能會想到我同一個事件消息投遞了兩次怎么辦?這就涉及冪等性的設(shè)計了,看到上面的消息ID沒? 這就是為冪等性設(shè)計的 唯一ID;當(dāng)用戶微服收到兩個消息ID是一樣的時候,丟棄掉一個。

總結(jié)

我們的微服系統(tǒng) 只要涉及 增 刪 改 的操作都應(yīng)該通過可靠事件進(jìn)行操作,而不能直接通過 REST 接口,去操作,也不能直接的發(fā)送事件去操作。對于消防端,要做好冪等性的處理。可靠事件處理微服的事物算是比較靠譜的做法,2pc,3pc ,Tcc 在微服事物處理這一塊,基本上起不了什么作用。
本人的理解大概是這樣,歡迎大家提出疑問。


文末彩蛋

針對于上面所涉及到的知識點我總結(jié)出了有1到5年開發(fā)經(jīng)驗的程序員在面試中涉及到的絕大部分架構(gòu)面試題及答案做成了文檔和架構(gòu)視頻資料免費分享給大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并發(fā)等架構(gòu)技術(shù)資料),希望能幫助到您面試前的復(fù)習(xí)且找到一個好的工作,也節(jié)省大家在網(wǎng)上搜索資料的時間來學(xué)習(xí),也可以關(guān)注我一下以后會有更多干貨分享。

資料獲取方式 QQ群搜索“708-701-457” 即可免費領(lǐng)取

分布式事務(wù)處理方案,微服事務(wù)處理方案
分布式事務(wù)處理方案,微服事務(wù)處理方案
分布式事務(wù)處理方案,微服事務(wù)處理方案

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文名稱:分布式事務(wù)處理方案,微服事務(wù)處理方案-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://vcdvsql.cn/article2/cseeic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航做網(wǎng)站品牌網(wǎng)站設(shè)計企業(yè)網(wǎng)站制作定制開發(fā)電子商務(wù)

廣告

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

網(wǎng)站優(yōu)化排名