LCN分布式事务解决方案详解
时间:2021-11-23 11:45:20|栏目:JAVA代码|点击: 次
一、什么是分布式事务?


二、lcn的实现思路
Lcn 的本质就是提供了一个全局的事务管理器
本地事务的提交还是回滚,由全局的事务管理器决定


2.1 本地执行的状态怎么提交给全局事务?
使用切面拦截本地事务的执行结果,使用tcp 发送给tx-manager
2.2 本地事务的提交或回滚怎么实现?
等待tx-manager通知自己
三、lcn的使用
3.1 下载lcn-manager (全局的事务管理器)

3.2 配置lcn-manager
配置eureka 并且配置redis


Redis:

3.3 启动lcn


3.4 模拟转账服务
数据库:


3.4.1 add-service

3.4.2 decr-service

3.5 2 个微服务都需要添加依赖
<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>
<!-- 依据druid 来实现的拦截功能 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.19</version>
</dependency>
3.6 需要自定义数据库的连接池
在2 个微服务的启动类或配置类里面都可以添加
@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 事务的发起者
转账:

事务的参与者
减少钱:

加钱:

3.7.2 添加配置文件


3.8 启动2 个微服务

3.9 测试转账服务

上一篇:SpringBoot2.x 整合 AntiSamy防御XSS攻击的简单总结
栏 目:JAVA代码
本文标题:LCN分布式事务解决方案详解
本文地址:http://www.codeinn.net/misctech/184477.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




