LCN分布式事務(wù)解決方案詳解
一、什么是分布式事務(wù)?
二、lcn的實(shí)現(xiàn)思路
Lcn 的本質(zhì)就是提供了一個(gè)全局的事務(wù)管理器
本地事務(wù)的提交還是回滾,由全局的事務(wù)管理器決定
2.1 本地執(zhí)行的狀態(tài)怎么提交給全局事務(wù)?
使用切面攔截本地事務(wù)的執(zhí)行結(jié)果,使用tcp 發(fā)送給tx-manager
2.2 本地事務(wù)的提交或回滾怎么實(shí)現(xiàn)?
等待tx-manager通知自己
三、lcn的使用
3.1 下載lcn-manager (全局的事務(wù)管理器)
3.2 配置lcn-manager
配置eureka 并且配置redis
Redis:
3.3 啟動(dòng)lcn
3.4 模擬轉(zhuǎn)賬服務(wù)
數(shù)據(jù)庫(kù):
3.4.1 add-service
3.4.2 decr-service
3.5 2 個(gè)微服務(wù)都需要添加依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>com.codingapi</groupId> <artifactId>transaction-springcloud</artifactId> <version>${lcn.last.version}</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.codingapi</groupId> <artifactId>tx-plugins-db</artifactId> <version>${lcn.last.version}</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> <!-- 依據(jù)druid 來(lái)實(shí)現(xiàn)的攔截功能 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.19</version> </dependency>
3.6 需要自定義數(shù)據(jù)庫(kù)的連接池
在2 個(gè)微服務(wù)的啟動(dòng)類或配置類里面都可以添加
@Bean public DataSource dataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(env.getProperty("spring.datasource.url")); dataSource.setUsername(env.getProperty("spring.datasource.username"));//用戶名 dataSource.setPassword(env.getProperty("spring.datasource.password"));//密碼 dataSource.setInitialSize(10); dataSource.setMaxActive(50); dataSource.setMinIdle(0); dataSource.setMaxWait(60000); dataSource.setValidationQuery("SELECT 1"); dataSource.setTestOnBorrow(false); dataSource.setTestWhileIdle(true); dataSource.setPoolPreparedStatements(false); return dataSource; }
3.7 使用
3.7.1 事務(wù)的發(fā)起者
轉(zhuǎn)賬:
事務(wù)的參與者
減少錢(qián):
加錢(qián):
3.7.2 添加配置文件
3.8 啟動(dòng)2 個(gè)微服務(wù)
3.9 測(cè)試轉(zhuǎn)賬服務(wù)
到此這篇關(guān)于LCN分布式事務(wù)解決方案詳解的文章就介紹到這了,更多相關(guān)LCN分布式事務(wù)解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解如何解決SSM框架前臺(tái)傳參數(shù)到后臺(tái)亂碼的問(wèn)題
這篇文章主要介紹了詳解如何解決SSM框架前臺(tái)傳參數(shù)到后臺(tái)亂碼的問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12SpringBoot中的定時(shí)任務(wù)和異步調(diào)用詳解
這篇文章主要介紹了SpringBoot中的定時(shí)任務(wù)和異步調(diào)用詳解,SpringBoot 定時(shí)任務(wù)是一種在SpringBoot應(yīng)用中自動(dòng)執(zhí)行任務(wù)的機(jī)制,通過(guò)使用Spring框架提供的@Scheduled注解,我們可以輕松地創(chuàng)建定時(shí)任務(wù),需要的朋友可以參考下2023-10-10Spring-data-redis操作redis知識(shí)總結(jié)
這篇文章主要介紹了Spring-data-redis操作redis知識(shí)總結(jié),spring-data-redis是spring-data模塊的一部分,專門(mén)用來(lái)支持在spring管理項(xiàng)目對(duì)redis的操作。2017-04-04Spring?Boot?Reactor?整合?Resilience4j詳析
這篇文章主要介紹了Spring?Boot?Reactor整合Resilience4j詳析,文章通過(guò)引入pom包展開(kāi)詳細(xì)介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-09-09Springcloud Nacos基本操作代碼實(shí)例
這篇文章主要介紹了Springcloud Nacos基本操作代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12如何讓W(xué)in10實(shí)現(xiàn)Java文件的開(kāi)機(jī)自啟動(dòng)
這篇文章主要介紹了如何讓W(xué)in10實(shí)現(xiàn)Java文件的開(kāi)機(jī)自啟動(dòng),對(duì)于一些想要一直運(yùn)行的Java文件,就會(huì)造成每次系統(tǒng)更新之后的重啟導(dǎo)致Java文件無(wú)法繼續(xù)運(yùn)行。,需要的朋友可以參考下2019-06-06如何使用會(huì)話Cookie和Java實(shí)現(xiàn)JWT身份驗(yàn)證
這篇文章主要介紹了如何使用會(huì)話Cookie和Java實(shí)現(xiàn)JWT身份驗(yàn)證,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-03-03Java實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(借助Array?List)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),借助Array?List,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01