分布式事務(wù)教程_第1頁(yè)
分布式事務(wù)教程_第2頁(yè)
分布式事務(wù)教程_第3頁(yè)
分布式事務(wù)教程_第4頁(yè)
分布式事務(wù)教程_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

分布式事務(wù)教程?、本地事務(wù)1、ACID特性原?性(A)?致性(C)隔離性(I)持久性(D)2、事務(wù)的隔離級(jí)別兩個(gè)或多個(gè)事務(wù)并發(fā)操作相同的數(shù)據(jù)的時(shí)候事務(wù)之間的相互訪問(wèn)關(guān)系查詢當(dāng)前隔離級(jí)別:select@@tx_isolation設(shè)置隔離級(jí)別:setsessiontransactionisolationlevel隔離級(jí)別開(kāi)啟事務(wù):starttransaction提交事務(wù):commit事務(wù)回滾:rollaback?、分布式事務(wù)分布式事務(wù):就是指事務(wù)的參與者、?持事務(wù)的服務(wù)器(數(shù)據(jù)庫(kù)服務(wù)器)、資源服務(wù)器以及事務(wù)的管理器分布在分布式系統(tǒng)的不同節(jié)點(diǎn)中1、分布式事務(wù)場(chǎng)景2、分布式事務(wù)&分布式鎖分布式事務(wù):完成事務(wù)的多個(gè)步驟位于不同的節(jié)點(diǎn)上分布式鎖:?于解決分布式系統(tǒng)中事務(wù)之間的并發(fā)訪問(wèn)問(wèn)題三、CAP定律和BASE理論分布式系統(tǒng)設(shè)計(jì)中的CAP定律和base理論1、CAP定律1、CAP原則?稱CAP定律,指的是在?個(gè)分布式系統(tǒng)中的?致性(Consistency)、可?性(Availability)、分區(qū)容錯(cuò)性三者之間的權(quán)衡2、CAP原則指的是,這三個(gè)要素最多只能同時(shí)實(shí)現(xiàn)兩點(diǎn),不可能三者兼顧在分布式系統(tǒng)?法同時(shí)滿?CA,如果需要滿?CA,則項(xiàng)?結(jié)構(gòu)必須為單體架構(gòu)在分布式系統(tǒng)中可以滿?CP或者AP,常規(guī)情況下微服務(wù)架構(gòu)更多的是滿?AP

1、(強(qiáng))?致性(Consistency)

:如果系統(tǒng)對(duì)?個(gè)寫操作返回成功,那么之后的讀請(qǐng)求都必須讀到這個(gè)新數(shù)據(jù);如果寫操作返回失敗,則所有的讀操作都不能讀到這個(gè)數(shù)據(jù),對(duì)調(diào)?者??數(shù)據(jù)具有強(qiáng)?致性。強(qiáng)?致性:?旦寫操作成功了,則所有的讀操作都必須讀取新數(shù)據(jù);(如果想要保證數(shù)據(jù)的強(qiáng)?致性,就必須使?同?個(gè)數(shù)據(jù)存儲(chǔ)/數(shù)據(jù)庫(kù))弱?致性/最終?致性:當(dāng)寫操作成功之后,允許在?定的時(shí)間內(nèi)讀取到舊數(shù)據(jù),但經(jīng)過(guò)?段時(shí)間之后最終可以讀取到新數(shù)據(jù),保證數(shù)據(jù)最終是?致的2、可?性(Availability)

:當(dāng)?戶請(qǐng)求服務(wù)時(shí),服務(wù)?定要給與響應(yīng),可以是降級(jí)響應(yīng)。3、分區(qū)容錯(cuò)性(Partitiontolerance)

:在分布式系統(tǒng)中服務(wù)節(jié)點(diǎn)都是?絡(luò)分布,?個(gè)或部分節(jié)點(diǎn)出現(xiàn)故障,其他節(jié)點(diǎn)仍能對(duì)外提供服務(wù)。2、BASE理論1、BASE是BasicallyAvailable(基本可?),SoftState(軟狀態(tài))和EventuallyConsistent(最終?致性)三個(gè)短語(yǔ)的縮寫。2、BASE理論,是對(duì)CAP中?致性和可?性權(quán)衡的結(jié)果,其來(lái)源于對(duì)?規(guī)?;ヂ?lián)?分布式系統(tǒng)實(shí)踐的總結(jié),是基于CAP定律逐步演化?來(lái)。其核?思想是即使?法做到強(qiáng)?致性,但每個(gè)應(yīng)?都可以根據(jù)?身業(yè)務(wù)特點(diǎn),采?適當(dāng)?shù)?式來(lái)使系統(tǒng)達(dá)到最終?致性。1、基本可?:指的是分布式系統(tǒng)中出現(xiàn)不可預(yù)知故障,允許其損失?部分的功能,但要保證整個(gè)系統(tǒng)的可?。2、軟狀態(tài):允許系統(tǒng)中數(shù)據(jù)存在中間狀態(tài),這個(gè)中間狀態(tài)不會(huì)影響系統(tǒng)的可?性;也就是允許不同節(jié)點(diǎn)的數(shù)據(jù)副本之間在數(shù)據(jù)同步過(guò)程中存在延時(shí)。3、最終?致性:要求所有的數(shù)據(jù)副本在經(jīng)過(guò)?段時(shí)間的延時(shí)之后,最終能夠達(dá)到?致的狀態(tài)。四、分布式事務(wù)解決?案1、剛性事務(wù)與柔性事務(wù)1、剛性事務(wù):滿?ACID特性的事務(wù)(強(qiáng)?致性)————本地事務(wù)2、柔性事務(wù):滿?BASE理論的事務(wù)(最終?致性)————分布式事務(wù)3、如何保證分布式事務(wù)的最終?致性?XA-2PC補(bǔ)償異步確保最?努?通知2、XA-分布式事務(wù)管理模型XA模型—為分布式事務(wù)的多個(gè)參與者添加到?個(gè)事務(wù)管理器(事務(wù)協(xié)調(diào)者)3、2PC—兩段式提交問(wèn)題:1.性能問(wèn)題:所有事務(wù)的參與者在提交階段處于阻塞狀態(tài),占?系統(tǒng)資源(數(shù)據(jù)庫(kù)連接)2.可靠性問(wèn)題:如果事務(wù)協(xié)調(diào)者出現(xiàn)單點(diǎn)故障,將導(dǎo)致所有的參與者都處于鎖定狀態(tài)3.數(shù)據(jù)?致性問(wèn)題:事務(wù)協(xié)調(diào)者和部分參與者在事務(wù)提交階段掛了,有可能導(dǎo)致數(shù)據(jù)?致性問(wèn)題優(yōu)點(diǎn):近乎100%的保證了數(shù)據(jù)的?致性缺點(diǎn):實(shí)現(xiàn)復(fù)雜,犧牲了可?性,對(duì)性能影響?較?;適?于并發(fā)不?但是對(duì)數(shù)據(jù)?致性要求?較?的場(chǎng)景。4、3PC—三段式提交三段式提交就是在兩段式提交進(jìn)?改進(jìn)的版本:增了?個(gè)資源檢查階段(詢問(wèn)是否可以提交)增加了超時(shí)設(shè)置——避免因TM故障導(dǎo)致TC?時(shí)間等待占?系統(tǒng)資源存在的問(wèn)題:和2PC提交?樣,執(zhí)?SQL之后需要保持?jǐn)?shù)據(jù)庫(kù)連接,影響系統(tǒng)性能5、TCCTCC,即Try-Commit-Cancel優(yōu)點(diǎn):1.性能提升:資源占?的粒度較?,不會(huì)?時(shí)間鎖定所有資源2.數(shù)據(jù)的最終?致性:基于commit和cancel的冪等性6、消息隊(duì)列五、分布式事務(wù)框架Tx-LCN3PC——適?于對(duì)數(shù)據(jù)?致性要求較?的場(chǎng)景,對(duì)性能會(huì)有?定損耗TCC——性能優(yōu)于3PC,但是不能保證數(shù)據(jù)的強(qiáng)?致性,可以保證最終?致性基于3PC、TCC等分布式事務(wù)解決?案已經(jīng)有成熟的落地框架:zookeeperTx-LCNSpringCloudalibabaseataLCN模式是通過(guò)代理Connection?式實(shí)現(xiàn)對(duì)本地事務(wù)的操作,然后由TxManager統(tǒng)?協(xié)調(diào)管理官??檔:\t"/sun-10387834/p/_blank"/docs/txlcn-preface/1、?作流程2、TxLCN?持的分布式事務(wù)管理?式1、@LcnTransactionlcn模式

LCN模式是通過(guò)代理Connection的?式實(shí)現(xiàn)對(duì)本地事務(wù)的操作,然后在由TxManager統(tǒng)?協(xié)調(diào)控制事務(wù)。當(dāng)本地事務(wù)提交回滾或者關(guān)閉連接時(shí)將會(huì)執(zhí)?假操作,該代理的連接將由LCN連接池管理。2、@TxcTransactiontxc模式

TXC模式命名來(lái)源于淘寶,實(shí)現(xiàn)原理是在執(zhí)?SQL之前,先查詢SQL的影響數(shù)據(jù),然后保存執(zhí)?的SQL快照信息和創(chuàng)建鎖。當(dāng)需要回滾的時(shí)候就采?這些記錄數(shù)據(jù)回滾數(shù)據(jù)庫(kù),?前鎖實(shí)現(xiàn)依賴redis分布式鎖控制。3、@TccTransactiontcc模式

TCC事務(wù)機(jī)制相對(duì)于傳統(tǒng)事務(wù)機(jī)制(X/OpenXATwo-Phase-Commit),其特征在于它不依賴資源管理器(RM)對(duì)XA的?持,?是通過(guò)對(duì)(由業(yè)務(wù)系統(tǒng)提供的)業(yè)務(wù)邏輯的調(diào)度來(lái)實(shí)現(xiàn)分布式事務(wù)。主要由三步操作,Try:嘗試執(zhí)?業(yè)務(wù)、Confirm:確認(rèn)執(zhí)?業(yè)務(wù)、Cancel:取消執(zhí)?業(yè)務(wù)。六、搭建TM服務(wù)器1、按照TM的要求建庫(kù)建表CREATETABLE`t_tx_exception`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`group_id`varchar(64)CHARACTERSETutf8mb4COLLATEutf8mb4_general_ciNULLDEFAULTNULL,`unit_id`varchar(32)CHARACTERSETutf8mb4COLLATEutf8mb4_general_ciNULLDEFAULTNULL,`mod_id`varchar(128)CHARACTERSETutf8mb4COLLATEutf8mb4_general_ciNULLDEFAULTNULL,`transaction_state`tinyint(4)NULLDEFAULTNULL,`registrar`tinyint(4)NULLDEFAULTNULL,`ex_state`tinyint(4)NULLDEFAULTNULLCOMMENT'0待處理1已處理',`remark`varchar(10240)NULLDEFAULTNULLCOMMENT'備注',`create_time`datetime(0)NULLDEFAULTNULL,PRIMARYKEY(`id`)USINGBTREE)ENGINE=InnoDBAUTO_INCREMENT=967CHARACTERSET=utf8mb4COLLATE=utf8mb4_general_ciROW_FORMAT=Dynamic;SETFOREIGN_KEY_CHECKS=1;2、配置并啟動(dòng)redis3、創(chuàng)建SpringBoot項(xiàng)?4、導(dǎo)?tm依賴<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><dependency><groupId>com.codingapi.txlcn</groupId><artifactId>txlcn-tm</artifactId><version>5.0.2.RELEASE</version></dependency>5、配置perties(官?說(shuō)明?檔提供)=TransactionManagerserver.port=8801#JDBC數(shù)據(jù)庫(kù)配置spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://85:3306/fmmall2?characterEncoding=UTF-8&serverTimeZone=UTCspring.datasource.username=rootspring.datasource.password=admin123#數(shù)據(jù)庫(kù)??spring.jpa.database-platform=org.hibernate.dialect.MySQL57Dialect#為TM創(chuàng)建持久化數(shù)據(jù)庫(kù)表spring.jpa.hibernate.ddl-auto=update#TM監(jiān)聽(tīng)Socket端?.默認(rèn)為${server.port}-100tx-lcn.manager.port=8070#TM后臺(tái)登陸密碼,默認(rèn)值為codingapitx-lcn.manager.admin-key=admin123#雪花算法的sequence位?度,默認(rèn)為12位.tx-lcn.manager.seq-len=12#異?;卣{(diào)開(kāi)關(guān)。開(kāi)啟時(shí)請(qǐng)制定ex-urltx-lcn.manager.ex-url-enabled=false#開(kāi)啟?志,默認(rèn)為falsetx-lcn.logger.enabled=truetx-lcn.logger.driver-class-name=${spring.datasource.driver-classname}tx-lcn.logger.jdbc-url=${spring.datasource.url}tx-lcn.logger.username=${spring.datasource.username}tx-lcn.logger.password=${spring.datasource.password}#redis的設(shè)置信息.線上請(qǐng)?RedisClusterspring.redis.host=85spring.redis.port=6379spring.redis.password=123456786、啟動(dòng)類添加@EnableTransactionManagerServer注解@SpringBootApplication@EnableTransactionManagerServerpublicclassTxmanagerApplication{publicstaticvoidmain(String[]args){SpringApplication.run(TxmanagerApplication.class,args);}}7、啟動(dòng)項(xiàng)?,訪問(wèn)8801,出現(xiàn)如下界?(使?設(shè)置的密碼登錄)七、在服務(wù)中添加分布式事務(wù)?持1、添加TC依賴<dependency><groupId>com.codingapi.txlcn</groupId><artifactId>txlcn-tc</artifactId><version>5.0.2.RELEASE</version></dependency><dependency><groupId>com.codingapi.txlcn</groupId><artifactId>txlcn-txmsg-netty</artifactId><version>5.0.2.RELEASE</version></dependency>2、配置服務(wù)鏈接到TMspring:datasource:nulldriver-class-name:com.mysql.jdbc.Driverurl:'jdbc:mysql://localhost:3306/fmmall2?characterEncoding=utf-8'username:rootpassword:admin123tx-lcn:client:nullmanager-address:'localhost:8070'3、在啟動(dòng)類添加@EnableDistributedTransaction注解4、添加分布式事務(wù)管理注解

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論