中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

白城市住房建設(shè)局網(wǎng)站東莞百度seo電話

白城市住房建設(shè)局網(wǎng)站,東莞百度seo電話,怎么做網(wǎng)站策劃,供應(yīng)鏈系統(tǒng)有哪些一、SEATA是什么? Seata 是一款開源的分布式事務(wù)解決方案,致力于提供高性能和簡單易用的分布式事務(wù)服務(wù)。Seata 將為用戶提供了 AT、TCC、SAGA 和 XA 事務(wù)模式,為用戶打造一站式的分布式解決方案。 在繼續(xù)學(xué)習(xí)使用SEATA之前,對s…

一、SEATA是什么?

Seata 是一款開源的分布式事務(wù)解決方案,致力于提供高性能和簡單易用的分布式事務(wù)服務(wù)。Seata 將為用戶提供了 AT、TCC、SAGA 和 XA 事務(wù)模式,為用戶打造一站式的分布式解決方案。

在繼續(xù)學(xué)習(xí)使用SEATA之前,對seata介紹中提到的分布式事務(wù)、AT、TCC、SAGA 和 XA 事務(wù)模式這些名詞有必要介紹一下。

1.什么是分布式事務(wù)?

首先說下事務(wù),事務(wù)是應(yīng)用程序中一系列嚴(yán)密的操作,所有操作必須成功完成,否則在每個操作中所作的所有更改都會被撤消。

事務(wù)應(yīng)該具有 4 個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為 ACID 特性。

事務(wù)更多指的是單機(jī)版、單數(shù)據(jù)庫的概念。分布式事務(wù)用于在分布式系統(tǒng)中保證不同節(jié)點之間的數(shù)據(jù)一致性。

漫畫: 什么是分布式事務(wù)?

2. XA規(guī)范

有了分布式事務(wù)的場景,就會有解決該問題的方式規(guī)范,XA規(guī)范就是解決分布式事務(wù)的規(guī)范。分布式事務(wù)的實現(xiàn)方式有很多種,最具有代表性的是由Oracle Tuxedo系統(tǒng)提出的 XA分布式事務(wù)協(xié)議。XA協(xié)議包括兩階段提交(2PC)和三階段提交(3PC)兩種實現(xiàn)。

兩階段提交(2PC)

兩階段提交又稱2PC(two-phase commit protocol),2pc是一個非常經(jīng)典的強(qiáng)一致、中心化的原子提交協(xié)議。這里所說的中心化是指協(xié)議中有兩類節(jié)點:一個是中心化協(xié)調(diào)者節(jié)點(coordinator)和N個參與者節(jié)點(partcipant)。

準(zhǔn)備階段     事務(wù)協(xié)調(diào)者,向所有事務(wù)參與者發(fā)送事務(wù)內(nèi)容,詢問是否可以提交事務(wù),并等待參與者回復(fù)。     事務(wù)參與者收到事務(wù)內(nèi)容,開始執(zhí)行事務(wù)操作,講 undo 和 redo 信息記入事務(wù)日志中(但此時并不提交事務(wù))。     如果參與者執(zhí)行成功,給協(xié)調(diào)者回復(fù)yes,表示可以進(jìn)行事務(wù)提交。如果執(zhí)行失敗,給協(xié)調(diào)者回復(fù)no,表示不可提交。

XA一階段提交

提交階段     如果協(xié)調(diào)者收到了參與者的失敗信息或超時信息,直接給所有參與者發(fā)送回滾(rollback)信息進(jìn)行事務(wù)回滾,否則,發(fā)送提交(commit)信息。     參與者根據(jù)協(xié)調(diào)者的指令執(zhí)行提交或者回滾操作,釋放所有事務(wù)處理過程中使用的鎖資源。(注意:必須在最后階段釋放鎖資源) 。

[圖片上傳失敗…(image-a6b970-1618380177779)]

xa規(guī)范2pc異常提交階段

以下幾點是XA-兩階段提交協(xié)議中會遇到的一些問題:

  • 性能問題

從流程上我們可以看得出,其最大缺點就在于它的執(zhí)行過程中間,節(jié)點都處于阻塞狀態(tài)。各個操作數(shù)據(jù)庫的節(jié)點此時都占用著數(shù)據(jù)庫資源,只有當(dāng)所有節(jié)點準(zhǔn)備完畢,事務(wù)協(xié)調(diào)者才會通知進(jìn)行全局提交,參與者進(jìn)行本地事務(wù)提交后才會釋放資源。這樣的過程會比較漫長,對性能影響比較大。

  • 協(xié)調(diào)者單點故障問題

事務(wù)協(xié)調(diào)者是整個XA模型的核心,一旦事務(wù)協(xié)調(diào)者節(jié)點掛掉,會導(dǎo)致參與者收不到提交或回滾的通知,從而導(dǎo)致參與者節(jié)點始終處于事務(wù)無法完成的中間狀態(tài)。

  • 丟失消息導(dǎo)致的數(shù)據(jù)不一致問題

在第二個階段,如果發(fā)生局部網(wǎng)絡(luò)問題,一部分事務(wù)參與者收到了提交消息,另一部分事務(wù)參與者沒收到提交消息,那么就會導(dǎo)致節(jié)點間數(shù)據(jù)的不一致問題。

2PC 方案實現(xiàn)起來簡單,基于上面提到的兩階段提交協(xié)議中會遇到的問題,實際項目中使用的比較少。那么有沒有其他的方案來解決呢?

三階段提交(3PC)

三階段提交是在二階段提交上的改進(jìn)版本,其在兩階段提交的基礎(chǔ)上增加了 CanCommit階段,并加入了超時機(jī)制。同時在協(xié)調(diào)者和參與者中都引入超時機(jī)制。三階段將二階段的準(zhǔn)備階段拆分為2個階段,插入了一個preCommit階段,以此來處理原先二階段,參與者準(zhǔn)備后,參與者發(fā)生崩潰或錯誤,導(dǎo)致參與者無法知曉是否提交或回滾的不確定狀態(tài)所引起的延時問題。

階段 1:canCommit

  • 協(xié)調(diào)者向所有參與者發(fā)出包含事務(wù)內(nèi)容的 canCommit 請求,詢問是否可以提交事務(wù),并等待所有參與者答復(fù)。

  • 參與者收到 canCommit 請求后,如果認(rèn)為可以執(zhí)行事務(wù)操作,則反饋 yes 并進(jìn)入預(yù)備狀態(tài),否則反饋 no。

xa規(guī)范3pc-canCommit

階段 2:preCommit

階段一中,如果所有的參與者都返回Yes的話,那么就會進(jìn)入PreCommit階段進(jìn)行事務(wù)預(yù)提交。此時分布式事務(wù)協(xié)調(diào)者會向所有的參與者節(jié)點發(fā)送PreCommit請求,參與者收到后開始執(zhí)行事務(wù)操作,并將Undo和Redo信息記錄到事務(wù)日志中。參與者執(zhí)行完事務(wù)操作后(此時屬于未提交事務(wù)的狀態(tài)),就會向協(xié)調(diào)者反饋“Ack”表示我已經(jīng)準(zhǔn)備好提交了,并等待協(xié)調(diào)者的下一步指令。如果階段一中有任何一個參與者節(jié)點返回的結(jié)果是No響應(yīng),或者協(xié)調(diào)者在等待參與者節(jié)點反饋的過程中因掛掉而超時(2PC中只有協(xié)調(diào)者可以超時,參與者沒有超時機(jī)制)。整個分布式事務(wù)就會中斷,協(xié)調(diào)者就會向所有的參與者發(fā)送“abort”請求。

xa規(guī)范3pc-preCommit

階段 3:do Commit

該階段進(jìn)行真正的事務(wù)提交,在階段二中如果所有的參與者節(jié)點都可以進(jìn)行PreCommit提交,那么協(xié)調(diào)者就會從“預(yù)提交狀態(tài)” 轉(zhuǎn)變?yōu)?“提交狀態(tài)”。然后向所有的參與者節(jié)點發(fā)送"doCommit"請求,參與者節(jié)點在收到提交請求后就會各自執(zhí)行事務(wù)提交操作,并向協(xié)調(diào)者節(jié)點反饋“Ack”消息,協(xié)調(diào)者收到所有參與者的Ack消息后完成事務(wù)。

xa規(guī)范3pc-doCommit

相比較2PC而言,3PC對于協(xié)調(diào)者(Coordinator)和參與者(Partcipant)都設(shè)置了超時時間,而2PC只有協(xié)調(diào)者才擁有超時機(jī)制。這解決了一個什么問題呢?這個優(yōu)化點,主要是避免了參與者在長時間無法與協(xié)調(diào)者節(jié)點通訊(協(xié)調(diào)者掛掉了)的情況下,無法釋放資源的問題,因為參與者自身擁有超時機(jī)制會在超時后,自動進(jìn)行本地commit從而進(jìn)行釋放資源。而這種機(jī)制也側(cè)面降低了整個事務(wù)的阻塞時間和范圍。

另外,通過CanCommit、PreCommit、DoCommit三個階段的設(shè)計,相較于2PC而言,多設(shè)置了一個緩沖階段保證了在最后提交階段之前各參與節(jié)點的狀態(tài)是一致的。

以上就是3PC相對于2PC的一個提高(相對緩解了2PC中的前兩個問題),但是3PC依然沒有完全解決數(shù)據(jù)不一致的問題。假如在 DoCommit 過程,參與者A無法接收協(xié)調(diào)者的通信,那么參與者A會自動提交,但是提交失敗了,其他參與者成功了,此時數(shù)據(jù)就會不一致。

3. AT(Auto Transaction)模式

AT 模式是一種無侵入的分布式事務(wù)解決方案。在 AT 模式下,用戶只需關(guān)注自己的“業(yè)務(wù) SQL”,用戶的 “業(yè)務(wù) SQL” 作為一階段,Seata 框架會自動生成事務(wù)的二階段提交和回滾操作。

AT 模式如何做到對業(yè)務(wù)的無侵入

一階段

在一階段,Seata 會攔截“業(yè)務(wù) SQL”,首先解析 SQL 語義,找到“業(yè)務(wù) SQL”要更新的業(yè)務(wù)數(shù)據(jù),在業(yè)務(wù)數(shù)據(jù)被更新前,將其保存成“before image”,然后執(zhí)行“業(yè)務(wù) SQL”更新業(yè)務(wù)數(shù)據(jù),在業(yè)務(wù)數(shù)據(jù)更新之后,再將其保存成“after image”,最后生成行鎖。以上操作全部在一個數(shù)據(jù)庫事務(wù)內(nèi)完成,這樣保證了一階段操作的原子性。

以update語句為例:

update user set name = ‘name_1’ where name = ‘name_0’

首先 Seata 的 JDBC數(shù)據(jù)源代理通過對業(yè)務(wù) SQL 解析,提取 SQL 的元數(shù)據(jù),也就是得到 SQL 的類型(UPDATE),表(user),條件(where id= 1)等相關(guān)的信息。

提取表元數(shù)據(jù):

select id,name from user where name = ‘name_0’

img

將查詢到的結(jié)果如上圖所示保存為“before image”,執(zhí)行“業(yè)務(wù) SQL”更新業(yè)務(wù)數(shù)據(jù)SQL。根據(jù)前鏡像數(shù)據(jù)主鍵查詢出后鏡像數(shù)據(jù),查詢結(jié)果為:

select id,name from user where id = 1

把業(yè)務(wù)數(shù)據(jù)在更新前后的數(shù)據(jù)鏡像組織成回滾日志,將業(yè)務(wù)數(shù)據(jù)的更新和回滾日志在同一個本地事務(wù)中提交,分別插入到業(yè)務(wù)表和 UNDO_LOG 表中。

二階段提交

二階段如果是提交的話,因為“業(yè)務(wù) SQL”在一階段已經(jīng)提交至數(shù)據(jù)庫, 所以 Seata 框架只需將一階段保存的快照數(shù)據(jù)和行鎖刪掉,完成數(shù)據(jù)清理即可。

二階段回滾

二階段如果是回滾的話,Seata 就需要回滾一階段已經(jīng)執(zhí)行的“業(yè)務(wù) SQL”,還原業(yè)務(wù)數(shù)據(jù)。回滾方式便是用“before image”還原業(yè)務(wù)數(shù)據(jù);但在還原前要首先要校驗臟寫,對比“數(shù)據(jù)庫當(dāng)前業(yè)務(wù)數(shù)據(jù)”和 “after image”,如果兩份數(shù)據(jù)完全一致就說明沒有臟寫,可以還原業(yè)務(wù)數(shù)據(jù),如果不一致就說明有臟寫,出現(xiàn)臟寫就需要轉(zhuǎn)人工處理。

總結(jié)

AT 模式的一階段、二階段提交和回滾均由 Seata 框架自動生成,用戶只需編寫“業(yè)務(wù) SQL”,便能輕松接入分布式事務(wù),AT 模式是一種對業(yè)務(wù)無任何侵入的分布式事務(wù)解決方案。但AT模式存在的不足就是 當(dāng)操作的數(shù)據(jù) 是共享型數(shù)據(jù),會存在臟寫的問題,所以如果是 用戶獨有數(shù)據(jù)可以使用AT模式。

4.TCC(Try、Confirm、Cancel)模式

TCC方案其實是兩階段提交的一種改進(jìn)。分成了Try、Confirm、Cancel三個操作。事務(wù)發(fā)起方在一階段執(zhí)行 Try 方式,在二階段提交執(zhí)行 Confirm 方法,二階段回滾執(zhí)行 Cancel 方法。@TwoPhaseBusinessAction是TCC服務(wù)參與者必須加的注解,指定服務(wù)名稱,提交方法commitMethod及回滾方法rollbackMethod,SecondAction同理

  • Try部分完成業(yè)務(wù)的準(zhǔn)備工作

  • confirm部分完成業(yè)務(wù)的提交

  • cancel部分完成事務(wù)的回滾

    TCC 模式,不依賴于底層數(shù)據(jù)資源的事務(wù)支持:

  • 一階段 prepare 行為:調(diào)用 自定義 的 prepare 邏輯。

  • 二階段 commit 行為:調(diào)用 自定義 的 commit 邏輯。

  • 二階段 rollback 行為:調(diào)用 自定義 的 rollback 邏輯。 所謂 TCC 模式,是指支持把 自定義 的分支事務(wù)納入到全局事務(wù)的管理中。簡單點概括,SEATA的TCC模式就是手工的AT模式,它允許你自定義兩階段的處理邏輯而不依賴AT模式的undo_log。

  • @LocalTCC 適用于SpringCloud+Feign模式下的TCC

  • @TwoPhaseBusinessAction 注解try方法,其中name為當(dāng)前tcc方法的bean名稱,寫方法名便可(記得全局唯一),commitMethod指向提交方法,rollbackMethod指向事務(wù)回滾方法。指定好三個方法之后,seata會根據(jù)全局事務(wù)的成功或失敗,去幫我們自動調(diào)用提交方法或者回滾方法。

  • @BusinessActionContextParameter 注解可以將參數(shù)傳遞到二階段(commitMethod/rollbackMethod)的方法。

  • BusinessActionContext 便是指TCC事務(wù)上下文

TCC實踐,總結(jié)以下注意事項:

業(yè)務(wù)模型分2階段設(shè)計 并發(fā)控制 允許空回滾 防懸掛控制 冪等控制

用戶接入 TCC 模式,最重要的事情就是考慮如何將業(yè)務(wù)模型拆成 2 階段,實現(xiàn)成 TCC 的 3 個方法,并且保證 Try 成功 Confirm 一定能成功。相對于 AT 模式,TCC 模式對業(yè)務(wù)代碼有一定的侵入性,但是 TCC 模式無 AT 模式的全局行鎖,TCC 性能會比 AT 模式高很多。

5.SAGA模式

SAGA簡介

Saga模式是SEATA提供的長事務(wù)解決方案,在Saga模式中,業(yè)務(wù)流程中每個參與者都提交本地事務(wù),當(dāng)出現(xiàn)某一個參與者失敗則補償前面已經(jīng)成功的參與者,一階段正向服務(wù)和二階段補償服務(wù)都由業(yè)務(wù)開發(fā)實現(xiàn)。

Saga模式示意圖

如圖:T1-T3都是正向的業(yè)務(wù)流程,都對應(yīng)著一個沖正逆向操作C1-C3。

分布式事務(wù)執(zhí)行過程中,依次執(zhí)行各參與者的正向操作,如果所有正向操作均執(zhí)行成功,那么分布式事務(wù)提交。如果任何一個正向操作執(zhí)行失敗,那么分布式事務(wù)會退回去執(zhí)行前面各參與者的逆向回滾操作,回滾已提交的參與者,使分布式事務(wù)回到初始狀態(tài)。

Saga 正向服務(wù)與補償服務(wù)也需要業(yè)務(wù)開發(fā)者實現(xiàn)。因此是業(yè)務(wù)入侵的。

Saga 模式下分布式事務(wù)通常是由事件驅(qū)動的,各個參與者之間是異步執(zhí)行的,Saga 模式是一種長事務(wù)解決方案。

Saga 模式使用場景

Saga 模式適用于業(yè)務(wù)流程長且需要保證事務(wù)最終一致性的業(yè)務(wù)系統(tǒng),Saga 模式一階段就會提交本地事務(wù),無鎖、長流程情況下可以保證性能。

事務(wù)參與者可能是其它公司的服務(wù)或者是遺留系統(tǒng)的服務(wù),無法進(jìn)行改造和提供 TCC 要求的接口,可以使用 Saga 模式。

Saga模式的優(yōu)勢與缺點

優(yōu)勢

  • 一階段提交本地數(shù)據(jù)庫事務(wù),無鎖,高性能;

  • 參與者可以采用事務(wù)驅(qū)動異步執(zhí)行,高吞吐

  • 補償服務(wù)即正向服務(wù)的“反向”,易于理解,易于實現(xiàn);

缺點

Saga 模式由于一階段已經(jīng)提交本地數(shù)據(jù)庫事務(wù),且沒有進(jìn)行“預(yù)留”動作,所以不能保證隔離性。后續(xù)會講到對于缺乏隔離性的應(yīng)對措施。

注意

與TCC實踐經(jīng)驗相同的是,Saga 模式中,每個事務(wù)參與者的沖正、逆向操作,需要支持:

  • 空補償:逆向操作早于正向操作時;

  • 防懸掛控制:空補償后要拒絕正向操作

  • 冪等

總結(jié) AT、TCC、Saga、XA 模式分析

四種分布式事務(wù)模式,分別在不同的時間被提出,每種模式都有它的適用場景:

  • AT 模式是無侵入的分布式事務(wù)解決方案,適用于不希望對業(yè)務(wù)進(jìn)行改造的場景,幾乎0學(xué)習(xí)成本。

  • TCC 模式是高性能分布式事務(wù)解決方案,適用于核心系統(tǒng)等對性能有很高要求的場景。

  • Saga 模式是長事務(wù)解決方案,適用于業(yè)務(wù)流程長且需要保證事務(wù)最終一致性的業(yè)務(wù)系統(tǒng),Saga 模式一階段就會提交本地事務(wù),無鎖,長流程情況下可以保證性能,多用于渠道層、集成層業(yè)務(wù)系統(tǒng)。事務(wù)參與者可能是其它公司的服務(wù)或者是遺留系統(tǒng)的服務(wù),無法進(jìn)行改造和提供 TCC 要求的接口,也可以使用 Saga 模式。

  • XA模式是分布式強(qiáng)一致性的解決方案,但性能低而使用較少。

二.SEATA術(shù)語

TC (Transaction Coordinator) - 事務(wù)協(xié)調(diào)者

維護(hù)全局和分支事務(wù)的狀態(tài),驅(qū)動全局事務(wù)提交或回滾。

TM (Transaction Manager) - 事務(wù)管理器

定義全局事務(wù)的范圍:開始全局事務(wù)、提交或回滾全局事務(wù)。

RM (Resource Manager) - 資源管理器

管理分支事務(wù)處理的資源,與TC交談以注冊分支事務(wù)和報告分支事務(wù)的狀態(tài),并驅(qū)動分支事務(wù)提交或回滾。

http://www.risenshineclean.com/news/10873.html

相關(guān)文章:

  • 安徽建設(shè)官網(wǎng)長春seo外包
  • 微信公眾平臺 網(wǎng)站開發(fā)seo產(chǎn)品是什么意思
  • 化妝品網(wǎng)站建設(shè)規(guī)模設(shè)想免費頂級域名注冊網(wǎng)站
  • 重慶做網(wǎng)站推廣的抖音網(wǎng)絡(luò)營銷案例分析
  • 專門做兒童的店鋪網(wǎng)站自動app優(yōu)化下載
  • 公司企業(yè)郵箱申請win優(yōu)化大師官網(wǎng)
  • 臨沂羅莊做網(wǎng)站公司店鋪如何運營和推廣
  • 網(wǎng)站建設(shè)國內(nèi)現(xiàn)狀seo推廣多少錢
  • 教做網(wǎng)站天津百度快照優(yōu)化公司
  • 做政府網(wǎng)站服務(wù)重慶森林講的什么內(nèi)容
  • 獨立電商網(wǎng)站seo談?wù)剬eo的理解
  • 做海鮮團(tuán)購網(wǎng)站windows永久禁止更新
  • 餐飲外哪個網(wǎng)站做推廣網(wǎng)站優(yōu)化排名查詢
  • wordpress 子目錄 .htaccess整站優(yōu)化包年
  • 廣州白云區(qū)最新疫情seo常用工具包括
  • wordpress在本地安裝seo優(yōu)化網(wǎng)站推廣全域營銷獲客公司
  • 網(wǎng)站制作文件上海城市分站seo
  • 網(wǎng)頁制作工具可以發(fā)布網(wǎng)站嗎怎么才能在百度上做引流呢
  • 深圳有名的建筑公司win7優(yōu)化大師好不好
  • 自己可以做電子商務(wù)網(wǎng)站百度查重工具
  • 網(wǎng)絡(luò)營銷方案定義思路逆冬黑帽seo培訓(xùn)
  • 廈門規(guī)劃建設(shè)局網(wǎng)站網(wǎng)搜網(wǎng)
  • 網(wǎng)站建設(shè)價格明細(xì)表和網(wǎng)站預(yù)算搜索最全的搜索引擎
  • 大興網(wǎng)站建設(shè)優(yōu)化seo網(wǎng)站seo在線診斷分析
  • 自貢網(wǎng)站優(yōu)化市場營銷專業(yè)
  • 杭州網(wǎng)站制作報價培訓(xùn)機(jī)構(gòu)招生方案模板
  • 高州網(wǎng)站建設(shè)公司百度指數(shù)怎么查
  • 大理裝飾公司做網(wǎng)站營銷策劃書模板
  • 樂站_網(wǎng)站建設(shè)_自助建站網(wǎng)絡(luò)軟文營銷
  • android移動應(yīng)用開發(fā)網(wǎng)站排名優(yōu)化價格