LCN分布式事务解决方案

一、什么是分布式事务?

LCN分布式事务解决方案_第1张图片
LCN分布式事务解决方案_第2张图片

二、lcn的实现思路

Lcn 的本质就是提供了一个全局的事务管理器
本地事务的提交还是回滚,由全局的事务管理器决定
LCN分布式事务解决方案_第3张图片
LCN分布式事务解决方案_第4张图片
2.1 本地执行的状态怎么提交给全局事务?
使用切面拦截本地事务的执行结果,使用tcp 发送给tx-manager
2.2 本地事务的提交或回滚怎么实现?
等待tx-manager通知自己

三、lcn的使用

3.1 下载lcn-manager (全局的事务管理器)
LCN分布式事务解决方案_第5张图片
3.2 配置lcn-manager
配置eureka 并且配置redis
LCN分布式事务解决方案_第6张图片
在这里插入图片描述
Redis:
LCN分布式事务解决方案_第7张图片
3.3 启动lcn
在这里插入图片描述
LCN分布式事务解决方案_第8张图片
3.4 模拟转账服务
数据库:
LCN分布式事务解决方案_第9张图片
LCN分布式事务解决方案_第10张图片
3.4.1 add-service
LCN分布式事务解决方案_第11张图片
3.4.2 decr-service
LCN分布式事务解决方案_第12张图片
3.5 2 个微服务都需要添加依赖

<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starter-actuatorartifactId>
		dependency>
		<dependency>
			<groupId>com.codingapigroupId>
			<artifactId>transaction-springcloudartifactId>
			<version>${lcn.last.version}version>
			<exclusions>
				<exclusion>
					<groupId>org.slf4jgroupId>
					<artifactId>*artifactId>
				exclusion>
			exclusions>
		dependency>
		<dependency>
			<groupId>com.codingapigroupId>
			<artifactId>tx-plugins-dbartifactId>
			<version>${lcn.last.version}version>
			<exclusions>
				<exclusion>
					<groupId>org.slf4jgroupId>
					<artifactId>*artifactId>
				exclusion>
			exclusions>
		dependency>
		
		<dependency>
			<groupId>com.alibabagroupId>
			<artifactId>druidartifactId>
			<version>1.0.19version>
		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 事务的发起者
转账:LCN分布式事务解决方案_第13张图片
事务的参与者
减少钱:
LCN分布式事务解决方案_第14张图片
加钱:
LCN分布式事务解决方案_第15张图片
3.7.2 添加配置文件
在这里插入图片描述
LCN分布式事务解决方案_第16张图片
3.8 启动2 个微服务
LCN分布式事务解决方案_第17张图片
3.9 测试转账服务
LCN分布式事务解决方案_第18张图片
LCN分布式事务解决方案_第19张图片

你可能感兴趣的:(随笔)