基于 XA 協(xié)議的應(yīng)用場(chǎng)景
XA 協(xié)議在架構(gòu)上與 TCC 模型相比,最大的不同是 XA 直接作用于資源層,而后者作用于服務(wù)層番枚。
資源層更普適,并且對(duì)業(yè)務(wù)幾乎沒有侵入损敷,但為了適應(yīng)各種業(yè)務(wù)場(chǎng)景使用葫笼,需要嚴(yán)格遵循事務(wù) ACID 特性;服務(wù)層更接近業(yè)務(wù)拗馒,可以針對(duì)不同業(yè)務(wù)做特定的優(yōu)化處理路星,追求更高的極限性能。
當(dāng)然诱桂,并不是說(shuō) XA 協(xié)議只能作用于單個(gè)服務(wù)內(nèi)部的多資源場(chǎng)景洋丐,跨服務(wù)的多資源場(chǎng)景也是可以的,只不過(guò)同樣需要額外的事務(wù)傳遞機(jī)制挥等。
XA 協(xié)議通過(guò)每個(gè) RM(Resource Manager友绝,資源管理器)的本地事務(wù)隔離性來(lái)保證全局隔離,并且需要通過(guò)串行化隔離級(jí)別來(lái)保證分布式事務(wù)一致性肝劲。但是迁客,串行化隔離級(jí)別存在一定的性能問(wèn)題,如下所示:
在串行化隔離級(jí)別下辞槐,會(huì)為本來(lái)不加鎖的 Select 快照讀操作都加上讀鎖掷漱,導(dǎo)致鎖持有時(shí)間增加,并發(fā)性能進(jìn)一步降低催蝗。當(dāng)實(shí)現(xiàn)了無(wú)鎖的全局一致性讀取后切威,比如分布式 MVCC育特,可以大幅減少鎖持有時(shí)間丙号,并發(fā)性能會(huì)獲得較大提升。
但不管怎么優(yōu)化實(shí)現(xiàn)缰冤,分布式事務(wù)的熱點(diǎn)數(shù)據(jù)并發(fā)性能最高就是趨近于單機(jī)本地事務(wù)犬缨。所以,無(wú)論是基于 XA 協(xié)議實(shí)現(xiàn)的分布式事務(wù)棉浸,還是單機(jī)本地事務(wù)怀薛,都是存在熱點(diǎn)數(shù)據(jù)并發(fā)性能極限的。
那么 XA 協(xié)議最大的作用是什么呢迷郑?其最大的作用在于數(shù)據(jù)庫(kù)資源橫向擴(kuò)展時(shí)枝恋,能保證多資源訪問(wèn)的事務(wù)屬性创倔。
當(dāng)單臺(tái) RM 機(jī)器達(dá)到資源性能瓶頸,無(wú)法滿足業(yè)務(wù)增長(zhǎng)需求時(shí)焚碌,就需要橫向擴(kuò)展 RM 資源畦攘,形成 RM 集群。通過(guò)橫向擴(kuò)展資源十电,提升非熱點(diǎn)數(shù)據(jù)的并發(fā)性能知押,這對(duì)于大體量的互聯(lián)網(wǎng)產(chǎn)品來(lái)說(shuō),是至關(guān)重要的鹃骂。
以上圖為例台盯,假設(shè)單臺(tái) RM 的非熱點(diǎn)數(shù)據(jù)并發(fā)性能為 100 TPS,那么 5臺(tái) RM 就是 500 TPS畏线,就算一個(gè)分布式事務(wù)平均涉及 2 臺(tái) RM静盅,也有 250 TPS,提升了 2.5 倍的非熱點(diǎn)并發(fā)能力寝殴。
綜上所述温亲,基于 XA 協(xié)議實(shí)現(xiàn)的分布式事務(wù)并不能提升熱點(diǎn)并發(fā)性能,其意義在于橫向擴(kuò)展資源提升非熱點(diǎn)數(shù)據(jù)并發(fā)性能時(shí)杯矩,能嚴(yán)格保證對(duì)多資源訪問(wèn)的事務(wù) ACID 特性栈虚。
至于熱點(diǎn)數(shù)據(jù)并發(fā)性能問(wèn)題,對(duì)于一般的應(yīng)用來(lái)說(shuō)史隆,經(jīng)過(guò) SQL 層面一定的性能優(yōu)化之后,其并發(fā)性能基本能夠滿足業(yè)務(wù)的需求泌射。如果經(jīng)過(guò)優(yōu)化粘姜,達(dá)到性能極限之后,還不能滿足熔酷,就需要上升到業(yè)務(wù)層面孤紧,根據(jù)業(yè)務(wù)特點(diǎn),通過(guò)專門的業(yè)務(wù)邏輯或業(yè)務(wù)架構(gòu)優(yōu)化來(lái)實(shí)現(xiàn)拒秘。
直接在資源層實(shí)現(xiàn)分布式事務(wù)的另一點(diǎn)好處是其普適性号显,可以對(duì)上層業(yè)務(wù)屏蔽底層實(shí)現(xiàn)細(xì)節(jié)。這一點(diǎn)在云服務(wù)時(shí)代特別有用躺酒,云服務(wù)面對(duì)的是大量的中小企業(yè)押蚤,甚至是個(gè)人開發(fā)者,業(yè)務(wù)訴求不盡相同羹应,普適揽碘、標(biāo)準(zhǔn)的分布式事務(wù)產(chǎn)品是非常有必要的,可以讓開發(fā)者從底層技術(shù)細(xì)節(jié)中脫離出來(lái),更專注于業(yè)務(wù)邏輯的實(shí)現(xiàn)雳刺,從而獲得更高效劫灶、快速的業(yè)務(wù)發(fā)展。
基于 TCC 模型的應(yīng)用場(chǎng)景
TCC 分布式事務(wù)模型直接作用于服務(wù)層掖桦。不與具體的服務(wù)框架耦合浑此,與底層 RPC 協(xié)議無(wú)關(guān),與底層存儲(chǔ)介質(zhì)無(wú)關(guān)滞详,可以靈活選擇業(yè)務(wù)資源的鎖定粒度凛俱,減少資源鎖持有時(shí)間,可擴(kuò)展性好料饥,可以說(shuō)是為獨(dú)立部署的 SOA 服務(wù)而設(shè)計(jì)的蒲犬。
TCC 模型優(yōu)勢(shì)
對(duì)于 TCC 分布式事務(wù)模型,筆者認(rèn)為其在業(yè)務(wù)場(chǎng)景應(yīng)用上岸啡,有兩方面的意義原叮。
1、跨服務(wù)的分布式事務(wù)
這一部分的作用與 XA 類似巡蘸,服務(wù)的拆分也可以認(rèn)為是資源的橫向擴(kuò)展奋隶,只不過(guò)方向不同而已。
橫向擴(kuò)展可能沿著兩個(gè)方向發(fā)展:
功能擴(kuò)展悦荒。根據(jù)功能對(duì)數(shù)據(jù)進(jìn)行分組唯欣,并將不同的功能組分布在多個(gè)不同的數(shù)據(jù)庫(kù)上,這實(shí)際上就是 SOA 架構(gòu)下的服務(wù)化搬味。
數(shù)據(jù)分片境氢,在功能組內(nèi)部將數(shù)據(jù)拆分到多個(gè)數(shù)據(jù)庫(kù)上,為橫向擴(kuò)展增加一個(gè)新的維度碰纬。
下圖簡(jiǎn)要闡釋了橫向數(shù)據(jù)擴(kuò)展策略:
橫向擴(kuò)展的兩種方法可以同時(shí)進(jìn)行運(yùn)用:用戶信息(Users)萍聊、產(chǎn)品信息(Products)與交易信息(Trans)三個(gè)不同功能組可以存儲(chǔ)在不同的數(shù)據(jù)庫(kù)中。
另外悦析,每個(gè)功能組內(nèi)根據(jù)其業(yè)務(wù)量可以再拆分到多個(gè)數(shù)據(jù)庫(kù)中寿桨,各功能組可以相互獨(dú)立地進(jìn)行擴(kuò)展。
因此强戴,TCC 的其中一個(gè)作用就是在按照功能橫向擴(kuò)展資源時(shí)亭螟,保證多資源訪問(wèn)的事務(wù)屬性。
2酌泰、兩階段拆分
TCC 的另一個(gè)作用就是把兩階段拆分成了兩個(gè)獨(dú)立的階段媒佣,通過(guò)資源業(yè)務(wù)鎖定的方式進(jìn)行關(guān)聯(lián)匕累。資源業(yè)務(wù)鎖定方式的好處在于陵刹,既不會(huì)阻塞其它事務(wù)在第一階段對(duì)于相同資源的繼續(xù)使用,也不會(huì)影響本事務(wù)第二階段的正確執(zhí)行。
XA模型的并發(fā)事務(wù)
TCC 模型的并發(fā)事務(wù)
可以發(fā)現(xiàn) 衰琐,TCC 模型進(jìn)一步減少了資源鎖的持有時(shí)間也糊。同時(shí)從理論上來(lái)說(shuō),只要業(yè)務(wù)允許羡宙,事務(wù)的第二階段什么時(shí)候執(zhí)行都可以狸剃,反正資源已經(jīng)業(yè)務(wù)鎖定,不會(huì)有其它事務(wù)動(dòng)用該事務(wù)鎖定的資源狗热。
這對(duì)業(yè)務(wù)有什么好處呢钞馁?
拿支付寶的擔(dān)保交易場(chǎng)景來(lái)說(shuō),簡(jiǎn)化情況下匿刮,只需要涉及兩個(gè)服務(wù)僧凰,交易服務(wù)和賬務(wù)服務(wù)。交易作為主業(yè)務(wù)服務(wù)熟丸,賬務(wù)作為從業(yè)務(wù)服務(wù)训措,提供 Try、Commit光羞、Cancel 接口:
Try 接口扣除用戶可用資金绩鸣,轉(zhuǎn)移到預(yù)凍結(jié)資金。預(yù)凍結(jié)資金就是業(yè)務(wù)鎖定方案纱兑,每個(gè)事務(wù)第二階段只能使用本事務(wù)的預(yù)凍結(jié)資金呀闻,在第一階段執(zhí)行結(jié)束后,其他并發(fā)事務(wù)也可以繼續(xù)處理用戶的可用資金潜慎。
Commit 接口扣除預(yù)凍結(jié)資金总珠,增加中間賬戶可用資金(擔(dān)保交易不能立即把錢打給商戶,需要有一個(gè)中間賬戶來(lái)暫存)勘纯。
假設(shè)只有一個(gè)中間賬戶的情況下局服,每次調(diào)用支付服務(wù)的 Commit 接口,都會(huì)鎖定中間賬戶驳遵,中間賬戶存在熱點(diǎn)性能問(wèn)題淫奔。
但在擔(dān)保交易場(chǎng)景中,七天以后才需要將資金從中間賬戶劃撥給商戶堤结,中間賬戶并不需要對(duì)外展示唆迁。因此,在執(zhí)行完支付服務(wù)的第一階段后竞穷,就可以認(rèn)為本次交易的支付環(huán)節(jié)已經(jīng)完成唐责,并向用戶和商戶返回支付成功的結(jié)果,并不需要馬上執(zhí)行支付服務(wù)二階段的 Commit 接口瘾带,等到低鋒期時(shí)鼠哥,再慢慢消化,異步地執(zhí)行。
可能部分讀者認(rèn)為擔(dān)保交易比較特殊朴恳,其實(shí)直付交易(直接把錢打到商戶賬戶的交易模式抄罕,Commit 接口扣除預(yù)凍結(jié)資金以后,不是轉(zhuǎn)移到中間賬務(wù)于颖,而是直接轉(zhuǎn)移到商戶賬戶)也可以這樣使用呆贿,只要提前告知商戶,高峰期交易資金不是實(shí)時(shí)到賬森渐,但保證在一定時(shí)間之內(nèi)結(jié)算完成做入,商戶應(yīng)該也是可以理解的。
這就是 TCC 分布式事務(wù)模型的二階段異步化功能同衣,從業(yè)務(wù)服務(wù)的第一階段執(zhí)行成功母蛛,主業(yè)務(wù)服務(wù)就可以提交完成,然后再由框架異步的執(zhí)行各從業(yè)務(wù)服務(wù)的第二階段乳怎。
通用型 TCC 解決方案
通用型 TCC 解決方案就是最典型的 TCC 分布式事務(wù)模型實(shí)現(xiàn)彩郊,所有從業(yè)務(wù)服務(wù)都需要參與到主業(yè)務(wù)服務(wù)的決策當(dāng)中。
- 適用場(chǎng)景
由于從業(yè)務(wù)服務(wù)是同步調(diào)用蚪缀,其結(jié)果會(huì)影響到主業(yè)務(wù)服務(wù)的決策秫逝,因此通用型 TCC 分布式事務(wù)解決方案適用于執(zhí)行時(shí)間確定且較短的業(yè)務(wù),比如互聯(lián)網(wǎng)金融企業(yè)最核心的三個(gè)服務(wù):交易询枚、支付违帆、賬務(wù):
當(dāng)用戶發(fā)起一筆交易時(shí),首先訪問(wèn)交易服務(wù)金蜀,創(chuàng)建交易訂單刷后;然后交易服務(wù)調(diào)用支付服務(wù)為該交易創(chuàng)建支付訂單,執(zhí)行收款動(dòng)作渊抄,最后支付服務(wù)調(diào)用賬務(wù)服務(wù)記錄賬戶流水和記賬尝胆。
為了保證三個(gè)服務(wù)一起完成一筆交易,要么同時(shí)成功护桦,要么同時(shí)失敗含衔,可以使用通用型 TCC 解決方案,將這三個(gè)服務(wù)放在一個(gè)分布式事務(wù)中二庵,交易作為主業(yè)務(wù)服務(wù)贪染,支付作為從業(yè)務(wù)服務(wù),賬務(wù)作為支付服務(wù)的嵌套從業(yè)務(wù)服務(wù)催享,由 TCC 模型保證事務(wù)的原子性杭隙。
支付服務(wù)的 Try 接口創(chuàng)建支付訂單,開啟嵌套分布式事務(wù)因妙,并調(diào)用賬務(wù)服務(wù)的 Try 接口痰憎;賬務(wù)服務(wù)在 Try 接口中凍結(jié)買家資金票髓。一階段調(diào)用完成后,交易完成信殊,提交本地事務(wù)炬称,由 TCC 框架完成分布式事務(wù)各從業(yè)務(wù)服務(wù)二階段的調(diào)用汁果。
支付服務(wù)二階段先調(diào)用賬務(wù)服務(wù)的 Confirm 接口涡拘,解凍買家資金;增加賣家可用資金据德。調(diào)用成功后鳄乏,支付服務(wù)修改支付訂單為完成狀態(tài),完成支付棘利。
當(dāng)支付和賬務(wù)服務(wù)二階段都調(diào)用完成后橱野,整個(gè)分布式事務(wù)結(jié)束。
異步確保型 TCC 解決方案
異步確保型 TCC 解決方案的直接從業(yè)務(wù)服務(wù)是可靠消息服務(wù)善玫,而真正的從業(yè)務(wù)服務(wù)則通過(guò)消息服務(wù)解耦水援,作為消息服務(wù)的消費(fèi)端,異步地執(zhí)行茅郎。
可靠消息服務(wù)需要提供 Try蜗元、Confirm、Cancel 三個(gè)接口系冗。Try 接口預(yù)發(fā)送奕扣,只負(fù)責(zé)持久化存儲(chǔ)消息數(shù)據(jù);Confirm 接口確認(rèn)發(fā)送掌敬,這時(shí)才開始真正的投遞消息惯豆;Cancel 接口取消發(fā)送,刪除消息數(shù)據(jù)奔害。
消息服務(wù)的消息數(shù)據(jù)獨(dú)立存儲(chǔ)楷兽,獨(dú)立伸縮,降低從業(yè)務(wù)服務(wù)與消息系統(tǒng)間的耦合华临,在消息服務(wù)可靠的前提下拄养,實(shí)現(xiàn)分布式事務(wù)的最終一致性。
此解決方案雖然增加了消息服務(wù)的維護(hù)成本银舱,但由于消息服務(wù)代替從業(yè)務(wù)服務(wù)實(shí)現(xiàn)了 TCC 接口瘪匿,從業(yè)務(wù)服務(wù)不需要任何改造,接入成本非常低寻馏。
- 適用場(chǎng)景
由于從業(yè)務(wù)服務(wù)消費(fèi)消息是一個(gè)異步的過(guò)程棋弥,執(zhí)行時(shí)間不確定,可能會(huì)導(dǎo)致不一致時(shí)間窗口增加诚欠。因此顽染,異步確保性 TCC 分布式事務(wù)解決方案只適用于對(duì)最終一致性時(shí)間敏感度較低的一些被動(dòng)型業(yè)務(wù)(從業(yè)務(wù)服務(wù)的處理結(jié)果不影響主業(yè)務(wù)服務(wù)的決策漾岳,只被動(dòng)的接收主業(yè)務(wù)服務(wù)的決策結(jié)果)。比如會(huì)員注冊(cè)服務(wù)和郵件發(fā)送服務(wù):
當(dāng)用戶注冊(cè)會(huì)員成功粉寞,需要給用戶發(fā)送一封郵件尼荆,告訴用戶注冊(cè)成功,并提示用戶激活該會(huì)員唧垦。但要注意兩點(diǎn):
如果用戶注冊(cè)成功捅儒,一定要給用戶發(fā)送一封郵件;
如果用戶注冊(cè)失敗振亮,一定不能給用戶發(fā)送郵件巧还。
因此,這同樣需要會(huì)員服務(wù)和郵件服務(wù)保證原子性坊秸,要么都執(zhí)行麸祷,要么都不執(zhí)行。不一樣的是褒搔,郵件服務(wù)只是一種被動(dòng)型的業(yè)務(wù)阶牍,并不影響用戶是否能夠注冊(cè)成功,它只需要在用戶注冊(cè)成功以后發(fā)送郵件給用戶即可星瘾,郵件服務(wù)不需要參與到會(huì)員服務(wù)的活動(dòng)決策中走孽。
對(duì)于此種業(yè)務(wù)場(chǎng)景,可以使用異步確保型TCC分布式事務(wù)解決方案死相,如下:
由可靠消息服務(wù)來(lái)解耦會(huì)員和郵件服務(wù)融求,會(huì)員服務(wù)與消息服務(wù)組成 TCC 事務(wù)模型,保證事務(wù)原子性算撮。然后通過(guò)消息服務(wù)的可靠特性生宛,確保消息一定能夠被郵件服務(wù)消費(fèi),從而使得會(huì)員與郵件服務(wù)在同一個(gè)分布式事務(wù)中肮柜。同時(shí)陷舅,郵件服務(wù)也不會(huì)影響會(huì)員服務(wù)的執(zhí)行過(guò)程,只在會(huì)員服務(wù)執(zhí)行成功后被動(dòng)接收發(fā)送郵件的請(qǐng)求审洞。
補(bǔ)償型 TCC 解決方案
補(bǔ)償型 TCC 解決方案與通用型 TCC 解決方案的結(jié)構(gòu)相似莱睁,其從業(yè)務(wù)服務(wù)也需要參與到主業(yè)務(wù)服務(wù)的活動(dòng)決策當(dāng)中。但不一樣的是芒澜,前者的從業(yè)務(wù)服務(wù)只需要提供 Do 和 Compensate 兩個(gè)接口仰剿,而后者需要提供三個(gè)接口。
Do 接口直接執(zhí)行真正的完整業(yè)務(wù)邏輯痴晦,完成業(yè)務(wù)處理南吮,業(yè)務(wù)執(zhí)行結(jié)果外部可見;Compensate 操作用于業(yè)務(wù)補(bǔ)償誊酌,抵消或部分抵消正向業(yè)務(wù)操作的業(yè)務(wù)結(jié)果部凑,Compensate操作需滿足冪等性露乏。
與通用型解決方案相比,補(bǔ)償型解決方案的從業(yè)務(wù)服務(wù)不需要改造原有業(yè)務(wù)邏輯涂邀,只需要額外增加一個(gè)補(bǔ)償回滾邏輯即可瘟仿,業(yè)務(wù)改造量較小。但要注意的是比勉,業(yè)務(wù)在一階段就執(zhí)行完整個(gè)業(yè)務(wù)邏輯劳较,無(wú)法做到有效的事務(wù)隔離,當(dāng)需要回滾時(shí)敷搪,可能存在補(bǔ)償失敗的情況兴想,還需要額外的異常處理機(jī)制幢哨,比如人工介入赡勘。
- 適用場(chǎng)景
由于存在回滾補(bǔ)償失敗的情況,補(bǔ)償型 TCC 分布式事務(wù)解決方案只適用于一些并發(fā)沖突較少或者需要與外部交互的業(yè)務(wù)捞镰,這些外部業(yè)務(wù)不屬于被動(dòng)型業(yè)務(wù)闸与,其執(zhí)行結(jié)果會(huì)影響主業(yè)務(wù)服務(wù)的決策,比如機(jī)票代理商的機(jī)票預(yù)訂服務(wù):
該機(jī)票服務(wù)提供多程機(jī)票預(yù)訂服務(wù)岸售,可以同時(shí)預(yù)訂多趟行程航班機(jī)票践樱,比如從北京到圣彼得堡,需要第一程從北京到莫斯科凸丸,以及第二程從莫斯科到圣彼得堡拷邢。
當(dāng)用戶預(yù)訂機(jī)票時(shí),肯定希望能同時(shí)預(yù)訂這兩趟航班的機(jī)票屎慢,只預(yù)訂一趟航班對(duì)用戶來(lái)說(shuō)沒有意義瞭稼。因此,對(duì)于這樣的業(yè)務(wù)服務(wù)同樣提出了原子性要求腻惠,如果其中一趟航班的機(jī)票預(yù)訂失敗环肘,另外一趟需要能夠取消預(yù)訂。
但是集灌,由于航空公司相對(duì)于機(jī)票代理商來(lái)說(shuō)屬于外部業(yè)務(wù)悔雹,只提供訂票接口和取消預(yù)訂接口,想要推動(dòng)航空公司改造是極其困難的欣喧。因此腌零,對(duì)于此類業(yè)務(wù)服務(wù),可以使用補(bǔ)償型 TCC 分布式事務(wù)解決方案唆阿,如下:
網(wǎng)關(guān)服務(wù)在原有邏輯基礎(chǔ)上增加 Compensate 接口益涧,負(fù)責(zé)調(diào)用對(duì)應(yīng)航空公司的取消預(yù)訂接口。
在用戶發(fā)起機(jī)票預(yù)訂請(qǐng)求時(shí)酷鸦,機(jī)票服務(wù)先通過(guò)網(wǎng)關(guān) Do 接口饰躲,調(diào)用各航空公司的預(yù)訂接口牙咏,如果所有航班都預(yù)訂成功,則整個(gè)分布式事務(wù)直接執(zhí)行成功嘹裂;一旦某趟航班機(jī)票預(yù)訂失敗妄壶,則分布式事務(wù)回滾,由 TCC 事務(wù)框架調(diào)用各網(wǎng)關(guān)的 Compensate 補(bǔ)償接口寄狼,其再調(diào)用對(duì)應(yīng)航空公司的取消預(yù)訂接口丁寄。通過(guò)這種方式,也可以保證多程機(jī)票預(yù)訂服務(wù)的原子性泊愧。
總結(jié)
對(duì)于現(xiàn)在的互聯(lián)網(wǎng)應(yīng)用來(lái)說(shuō)伊磺,資源橫向擴(kuò)展提供了更多的靈活性,是一種比較容易實(shí)現(xiàn)的向外擴(kuò)展方案删咱,但是同時(shí)也明顯增加了復(fù)雜度屑埋,引入一些新的挑戰(zhàn),比如資源之間的數(shù)據(jù)一致性問(wèn)題痰滋。
橫向數(shù)據(jù)擴(kuò)展既可以按數(shù)據(jù)分片擴(kuò)展摘能,也可以按功能擴(kuò)展。XA 與 TCC 模型在這一點(diǎn)上的作用類似敲街,都能在橫向擴(kuò)展資源的同時(shí)团搞,保證多資源訪問(wèn)的事務(wù)屬性,只不過(guò)前者作用于數(shù)據(jù)分片時(shí)多艇,后者作用于功能擴(kuò)展時(shí)逻恐。
XA 模型另外一個(gè)意義在于其普適性,拋開性能問(wèn)題的情況下峻黍,幾乎可以適用于所有業(yè)務(wù)模式复隆,這對(duì)于一些基礎(chǔ)性的技術(shù)產(chǎn)品來(lái)說(shuō)是非常有用的,比如分布式數(shù)據(jù)庫(kù)奸披、云服務(wù)的分布式事務(wù)框架等昏名。
TCC 模型除了跨服務(wù)的分布式事務(wù)這一層作用之外,還具有兩階段劃分的功能阵面,通過(guò)業(yè)務(wù)資源鎖定轻局,允許第二階段的異步執(zhí)行,而異步化思想正是解決熱點(diǎn)數(shù)據(jù)并發(fā)性能問(wèn)題的利器之一样刷。
本文結(jié)合具體的業(yè)務(wù)場(chǎng)景和例子仑扑,對(duì)比分析了各分布式事務(wù)解決方案在性能、熱點(diǎn)沖突置鼻、接入復(fù)雜度和適用場(chǎng)景等方面的能力镇饮,希望能幫助各位讀者對(duì)分布式事務(wù)有更深一層的理解。
業(yè)務(wù)各有各的不同箕母,有些業(yè)務(wù)能容忍短期不一致储藐,有些業(yè)務(wù)的操作可以冪等俱济,無(wú)論什么樣的分布式事務(wù)解決方案都有其優(yōu)缺點(diǎn),沒有一個(gè)銀彈能夠適配所有钙勃。因此蛛碌,業(yè)務(wù)需要什么樣的解決方案,還需要結(jié)合自身的業(yè)務(wù)需求辖源、業(yè)務(wù)特點(diǎn)蔚携、技術(shù)架構(gòu)以及各解決方案的特性,綜合分析克饶,才能找到最適合的方案酝蜒。