這篇文章主要講解了“LCN分布式事務(wù)框架是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“LCN分布式事務(wù)框架是什么”吧!
成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比清河門網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式清河門網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋清河門地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
今天無意中發(fā)現(xiàn)了一款分布式事務(wù)框架,LCN,看了下網(wǎng)上介紹感覺挺強(qiáng)大的。這里做一下筆記。
LCN框架基礎(chǔ)需要一臺服務(wù)器作為事務(wù)管理器TxManager,此外還需要redis和Eureka做配合,eureka負(fù)責(zé)為TxManager注冊,redis主要是用于TxManager存放事務(wù)組和補(bǔ)償?shù)男畔ⅰ?/p>
事務(wù)發(fā)起方服務(wù)
TxManager事務(wù)管理器
事務(wù)下游服務(wù)(可能有多個(gè))
TxManager是基于本地事務(wù)的,這里有一個(gè)事務(wù)組的概念,事務(wù)組是所有涉及的微服務(wù)的本地事務(wù)的集合。
它主要原理是對通過重寫dataSource的close方法,本身的close方法是需要關(guān)閉本地事務(wù)的,但是重寫后并沒有關(guān)閉事務(wù),而是把事務(wù)信息記錄在txmanager的redis中,等待事務(wù)發(fā)起方服務(wù)業(yè)務(wù)執(zhí)行完成或異常的時(shí)候再發(fā)通知給各個(gè)服務(wù)通知本地事務(wù)提交或回滾的。在代理連接池中,并不是都不真實(shí)提交事務(wù),它可以自動(dòng)識別連接的讀或?qū)懖僮?,如果全是讀操作,那么將返回本地連接對象。如果該方法被重復(fù)執(zhí)行,連接也可以被重用,同時(shí)也有超時(shí)限制,參與模塊等待通知超時(shí)會自動(dòng)提交或者回滾(這里具體不清楚到底是提交還是回滾,暫時(shí)存疑,不過看后面的補(bǔ)償機(jī)制說明,好像是自動(dòng)提交?)
TxManager類似于二階段提交,只不過二階段提交的事務(wù)發(fā)起方和事務(wù)管理器在同一臺機(jī)器,而TxManager是作為獨(dú)立的中間件。
事務(wù)補(bǔ)償指的是當(dāng)事務(wù)發(fā)起方服務(wù)異?;蛘?zhí)行的時(shí)候發(fā)送事務(wù)組關(guān)閉的請求到TxManager,讓TxManager通知下游服務(wù)回滾或提交事務(wù),二階段模型中這一步?jīng)]有解決結(jié)束事務(wù)操作能否正確提交到資源管理端的問題,在LCN中提供了一種自動(dòng)補(bǔ)償機(jī)制。
首先看一看TxManager后臺頁面:
這里,有兩項(xiàng)值得注意,第一項(xiàng)是補(bǔ)償回調(diào)地址,這正是在TxManager發(fā)送通知下游服務(wù)回滾或提交事務(wù)失敗的時(shí)候回調(diào)事務(wù)信息給事務(wù)發(fā)起方服務(wù)的回調(diào)地址 第二項(xiàng)是是否開啟自動(dòng)補(bǔ)償。 不開啟補(bǔ)償?shù)脑挘琓xManager還是會回調(diào)。 自動(dòng)補(bǔ)償是怎么實(shí)現(xiàn)的勒?首先TxManager回調(diào)事務(wù)發(fā)起方服務(wù)(攜帶了事務(wù)信息,切面攔截信息),那么事務(wù)發(fā)起方在回調(diào)方法中就寫一個(gè)重復(fù)業(yè)務(wù)的操作,這個(gè)操作中還是會模擬上次的請求。但是針對已經(jīng)上次通知成功commit的服務(wù),這次就需要回滾了,只有通知失敗的服務(wù)需要commit。
git地址:https://github.com/syzpig/tx-lcn
demo地址:https://github.com/codingapi/springcloud-lcn-demo
官方文檔地址:https://txlcn.org/zh-cn/docs/preface.html
Lcn支持springcloud和dubbo。拉了springcloud的demo代碼下來看,看了使用方法,環(huán)境搭好以后只需要在事務(wù)發(fā)起方法里使用@TxTransaction(isStart = true)注解,然后在下游服務(wù)方法中使用@TxTransaction就行了,使用方法很簡單,代碼侵入很低,值得推薦。
另外,提一點(diǎn),對于消息隊(duì)列異步調(diào)用的形式,這款框架并不能滿足事務(wù)一致性,需要結(jié)合其他方案。
在最新版本的Lcn中發(fā)現(xiàn)也支持TCC和TXC模式~~~~~~~~
感謝各位的閱讀,以上就是“LCN分布式事務(wù)框架是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對LCN分布式事務(wù)框架是什么這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
本文標(biāo)題:LCN分布式事務(wù)框架是什么
文章出自:http://www.rwnh.cn/article8/jjedip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、域名注冊、動(dòng)態(tài)網(wǎng)站、全網(wǎng)營銷推廣、微信小程序、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)