LCN分布式事務(wù)解決方案詳解
一、什么是分布式事務(wù)?
二、lcn的實現(xiàn)思路
Lcn 的本質(zhì)就是提供了一個全局的事務(wù)管理器
本地事務(wù)的提交還是回滾,由全局的事務(wù)管理器決定
2.1 本地執(zhí)行的狀態(tài)怎么提交給全局事務(wù)?
使用切面攔截本地事務(wù)的執(zhí)行結(jié)果,使用tcp 發(fā)送給tx-manager
2.2 本地事務(wù)的提交或回滾怎么實現(xiàn)?
等待tx-manager通知自己
三、lcn的使用
3.1 下載lcn-manager (全局的事務(wù)管理器)
3.2 配置lcn-manager
配置eureka 并且配置redis
Redis:
3.3 啟動lcn
3.4 模擬轉(zhuǎn)賬服務(wù)
數(shù)據(jù)庫:
3.4.1 add-service
3.4.2 decr-service
3.5 2 個微服務(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 來實現(xiàn)的攔截功能 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.19</version> </dependency>
3.6 需要自定義數(shù)據(jù)庫的連接池
在2 個微服務(wù)的啟動類或配置類里面都可以添加
@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ù)的參與者
減少錢:
加錢:
3.7.2 添加配置文件
3.8 啟動2 個微服務(wù)
3.9 測試轉(zhuǎn)賬服務(wù)
到此這篇關(guān)于LCN分布式事務(wù)解決方案詳解的文章就介紹到這了,更多相關(guān)LCN分布式事務(wù)解決內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot中的定時任務(wù)和異步調(diào)用詳解
這篇文章主要介紹了SpringBoot中的定時任務(wù)和異步調(diào)用詳解,SpringBoot 定時任務(wù)是一種在SpringBoot應(yīng)用中自動執(zhí)行任務(wù)的機(jī)制,通過使用Spring框架提供的@Scheduled注解,我們可以輕松地創(chuàng)建定時任務(wù),需要的朋友可以參考下2023-10-10Spring-data-redis操作redis知識總結(jié)
這篇文章主要介紹了Spring-data-redis操作redis知識總結(jié),spring-data-redis是spring-data模塊的一部分,專門用來支持在spring管理項目對redis的操作。2017-04-04Spring?Boot?Reactor?整合?Resilience4j詳析
這篇文章主要介紹了Spring?Boot?Reactor整合Resilience4j詳析,文章通過引入pom包展開詳細(xì)介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-09-09如何讓W(xué)in10實現(xiàn)Java文件的開機(jī)自啟動
這篇文章主要介紹了如何讓W(xué)in10實現(xiàn)Java文件的開機(jī)自啟動,對于一些想要一直運行的Java文件,就會造成每次系統(tǒng)更新之后的重啟導(dǎo)致Java文件無法繼續(xù)運行。,需要的朋友可以參考下2019-06-06如何使用會話Cookie和Java實現(xiàn)JWT身份驗證
這篇文章主要介紹了如何使用會話Cookie和Java實現(xiàn)JWT身份驗證,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-03-03Java實現(xiàn)學(xué)生信息管理系統(tǒng)(借助Array?List)
這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)學(xué)生信息管理系統(tǒng),借助Array?List,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01