feign屬于rpc框架嗎 分布式計(jì)算是如何控制事務(wù)的?
分布式計(jì)算是如何控制事務(wù)的?分布式事務(wù):指涉及操作多個(gè)數(shù)據(jù)庫(kù)的事務(wù)。事實(shí)上,同一個(gè)庫(kù)中的事務(wù)的概念被擴(kuò)展到多個(gè)庫(kù)中的事務(wù)。目的是確保分布式系統(tǒng)中的數(shù)據(jù)一致性。分布式事務(wù)處理的關(guān)鍵是必須有一種方法知道事
分布式計(jì)算是如何控制事務(wù)的?
分布式事務(wù):指涉及操作多個(gè)數(shù)據(jù)庫(kù)的事務(wù)。事實(shí)上,同一個(gè)庫(kù)中的事務(wù)的概念被擴(kuò)展到多個(gè)庫(kù)中的事務(wù)。目的是確保分布式系統(tǒng)中的數(shù)據(jù)一致性。分布式事務(wù)處理的關(guān)鍵是必須有一種方法知道事務(wù)在任何地方做什么。所有動(dòng)作,提交或回滾事務(wù)的決定必須產(chǎn)生統(tǒng)一的結(jié)果(全部提交或全部回滾)。
X/Open組織(現(xiàn)在的Open Group)定義了分布式事務(wù)處理模型。X/Open DTP模型(1994)包括應(yīng)用程序(AP)、事務(wù)管理器(TM)、資源管理器(RM)和通信。信息資源管理器(CRM)由四部分組成。通常,公共事務(wù)管理器(TM)是事務(wù)中間件,公共資源管理器(RM)是數(shù)據(jù)庫(kù),公共通信資源管理器(CRM)是消息中間件。XA是X/Open DT。P定義的交易中間件與數(shù)據(jù)庫(kù)之間的接口規(guī)范(即接口函數(shù)),交易中間件用它來(lái)通知數(shù)據(jù)庫(kù)交易的開始和結(jié)束,以及提交和回滾。XA接口函數(shù)由數(shù)據(jù)庫(kù)廠商提供。二階提交協(xié)議和三階提交協(xié)議都是從這個(gè)思想中衍生出來(lái)的。出去??梢哉f(shuō),兩階段提交實(shí)際上是實(shí)現(xiàn)XA分布式事務(wù)的關(guān)鍵(確切地說(shuō),兩階段提交主要是保證分布式事務(wù)的原子性,即所有節(jié)點(diǎn)要么做,要么根本不做)。
因此,大多數(shù)關(guān)系數(shù)據(jù)庫(kù)通過(guò)兩階段提交2pc算法完成分布式事務(wù)也就不足為奇了。
1.兩階段/三階段提交
2PC/3PC的全稱是:Two/Three Phase Commit,中文名是Two-Phase/Three Phase submission;需要引入一種算法,該算法旨在使基于分布式系統(tǒng)架構(gòu)的所有節(jié)點(diǎn)在事務(wù)處理過(guò)程中具有ACID特性。組件作為協(xié)調(diào)者統(tǒng)一控制所有節(jié)點(diǎn)(稱為參與者)的操作結(jié)果并最終指示這些節(jié)點(diǎn)是否應(yīng)該分兩個(gè)階段真正提交操作結(jié)果的算法如下:
第一階段:提交階段(投票階段)
第二階段:執(zhí)行交易提交(執(zhí)行階段)
這種有很多缺點(diǎn),在復(fù)雜場(chǎng)景下通常不推薦使用,除非是非常簡(jiǎn)單的場(chǎng)景,非常容易提供回滾,依賴的服務(wù)非常少。
2.本地方法表
這種實(shí)現(xiàn)的想法其實(shí)來(lái)自于ebay。其基本設(shè)計(jì)思想是將遠(yuǎn)程分布式事務(wù)分解成一系列本地事務(wù)。如果不考慮性能和優(yōu)雅的設(shè)計(jì),可以借助關(guān)系數(shù)據(jù)庫(kù)中的表來(lái)實(shí)現(xiàn)。舉一個(gè)跨行轉(zhuǎn)賬的經(jīng)典例子來(lái)描述一下。
第一步偽代碼如下:扣除1W,保證憑證消息通過(guò)本地事務(wù)插入消息表。
第二步,通知對(duì)方銀行賬戶已經(jīng)加了1W。如何通知對(duì)方:可以通過(guò)輪詢,也可以通過(guò)MQ。
方法
偽代碼如下,以跨行轉(zhuǎn)賬為例。
嘗試{1。在本地更新數(shù)據(jù)庫(kù)。如果更新成功,執(zhí)行第二部分。2.通過(guò)MQ }catch{rollback()}發(fā)送消息如果第一步失敗,消息將不會(huì)發(fā)送到MQ。如果第一步成功,第二步失敗,捕獲異常回滾數(shù)據(jù),并確保。數(shù)據(jù)一致性;
4.交易MQ
有些MQ直接支持分布式交易,比如阿里 s RocketMQ;RocketMQ處理事務(wù)消息的一般過(guò)程如下:
1.生產(chǎn)者發(fā)送待確認(rèn)的信息;
保存收到的消息,成功后將狀態(tài)返回給生產(chǎn)者;
3.如果生產(chǎn)者收到的返回是SEND_OK狀態(tài),則執(zhí)行本地事務(wù)操作;
4.根據(jù)本地事務(wù)執(zhí)行的結(jié)果,生產(chǎn)者是執(zhí)行提交還是回滾;;
5.如果生產(chǎn)者未能執(zhí)行第四步中的操作,服務(wù)器將在一段固定時(shí)間后對(duì)處于待確認(rèn)狀態(tài)的消息發(fā)起回溯請(qǐng)求;
6.生產(chǎn)者收到回溯請(qǐng)求后,返回commit或rollback根據(jù)本地事務(wù)的結(jié)果,對(duì)本地事務(wù)進(jìn)行處理;
7.服務(wù)器收到結(jié)果后執(zhí)行相關(guān)操作。
摘要
可以看出,第一種是保證絕對(duì)的一致性,這種在互聯(lián)網(wǎng)行業(yè)很少使用,主要是性能不好;最后四種情況都保證 "最終一致性 ",應(yīng)用廣泛;另外,分布式事務(wù)其實(shí)是一個(gè)數(shù)據(jù)一致性問(wèn)題,可以關(guān)注一下。上限理論和基礎(chǔ)理論;可以多關(guān)注我的相關(guān)文章。
rpc和feign區(qū)別?
聯(lián)邦調(diào)查局。Rpc無(wú)序的郵政業(yè)