分布式事务TX-LCN课题实验手册(一)

本使用手册实验使用 TX-LCN 框架管理在Spring Boot/Spring Cloud 中管理分布式事务。

准备环境

  1. 启动 Redis 服务

最简单的方法就是使用 Docker 。可参考 用Docker体验Redis

  1. 启动 MySQL 服务

最简单的方法也是使用 Docker 。可参考 在Docker中使用MySQL服务器

启动 MySQL 后,执行一下命令建立数据库(Schema)

在 docker 中启动 bash:

1
docker exec -it mysql /bin/bash

登录到 mysql 中:

1
mysql -u root -p

建立名为: tx-manager 的数据库:

1
CREATE DATABASE IF NOT EXISTS tx-manager DEFAULT CHARACTER SET utf8;

准备 Tx-Manager 项目

在 IDEA 或 Eclipse 中构建一个简单的 maven 项目,
groupId: cn.com.hohistar.cloud
artifactId: txlcn-tm-service

然后用以下的内容替换掉项目中原来的 pom.xml 中的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.com.hohistar.cloud</groupId>
<artifactId>txlcn-tm-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>txlcn-tm-service</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

<dependency>
<groupId>com.codingapi.txlcn</groupId>
<artifactId>txlcn-tm</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

构建启动类:

在 src/main/java 中新建一个名为: cn.com.hohistar.cloud.txlcntmservice 的包,在包中新建一个名为: TxlcnTmServiceApplication 的类,使用以下内容:

1
2
3
4
5
6
7
8
@SpringBootApplication
@EnableTransactionManagerServer
public class TxlcnTmServiceApplication {

public static void main(String[] args) {
SpringApplication.run(TxlcnTmServiceApplication.class, args);
}
}

添加配置文件

在 src/main/resources 中添加名为: application.properties 的配置文件, 内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
spring.application.name=TransactionManager
server.port=7970

# JDBC 数据库配置
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/tx-manager?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456

# 数据库方言
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect

# 第一次运行可以设置为: create, 为TM创建持久化数据库表, validate
spring.jpa.hibernate.ddl-auto=validate

# TM监听IP. 默认为 127.0.0.1
tx-lcn.manager.host=127.0.0.1

# TM监听Socket端口. 默认为 ${server.port} - 100
tx-lcn.manager.port=8070

# 心跳检测时间(ms). 默认为 300000
tx-lcn.manager.heart-time=300000

# 分布式事务执行总时间(ms). 默认为36000
tx-lcn.manager.dtx-time=8000

# 参数延迟删除时间单位ms 默认为dtx-time值
tx-lcn.message.netty.attr-delay-time=${tx-lcn.manager.dtx-time}

# 事务处理并发等级. 默认为机器逻辑核心数5倍
tx-lcn.manager.concurrent-level=160

# TM后台登陆密码,默认值为codingapi
tx-lcn.manager.admin-key=codingapi

# 分布式事务锁超时时间 默认为-1,当-1时会用tx-lcn.manager.dtx-time的时间
tx-lcn.manager.dtx-lock-time=${tx-lcn.manager.dtx-time}

# 雪花算法的sequence位长度,默认为12位.
tx-lcn.manager.seq-len=12

# 异常回调开关。开启时请制定ex-url
tx-lcn.manager.ex-url-enabled=false

# 事务异常通知(任何http协议地址。未指定协议时,为TM提供内置功能接口)。默认是邮件通知
tx-lcn.manager.ex-url=/provider/email-to/***@**.com



# 开启日志,默认为false
tx-lcn.logger.enabled=true
tx-lcn.logger.driver-class-name=${spring.datasource.driver-class-name}
tx-lcn.logger.jdbc-url=${spring.datasource.url}
tx-lcn.logger.username=${spring.datasource.username}
tx-lcn.logger.password=${spring.datasource.password}

# redis 的设置信息. 线上请用Redis Cluster
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=

启动Tx-Manager服务

注意:第一次运行时将 spring.jpa.hibernate.ddl-auto 设置为 create

运行程序。然后在浏览器中访问:

1
http://localhost:7970/

显示登录界面,输入默认密码: codingapi, 即可进入管理界面进行查看。

下一步

下一篇文章

本文标题:分布式事务TX-LCN课题实验手册(一)

文章作者:晨星

发布时间:2019年12月02日 - 21:12

最后更新:2020年09月29日 - 20:09

原始链接:https://www.mls-tech.info/microservice/spring-cloud/springcloud-tx-lcn-practise-manual-01/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。