【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
分布式事务应用搭建
系统采用alibaba系统的springcloud,分布式事务采用seata来进行管理,需要进行以下配置操作。
下列操作,都是针对centos7以上版本 linux进行的操作
- 安装nacos应用服务器
下载对应版本的nacos安装包,目前采用的是1.1.3
下载地址:
https://github.com/seata/seata/releases
下载对应操作系统版本
将文件进行解压:
Tar –zxvf nacos-server-1.1.3.tar.gz
注意:必须在安装jdk1.8以上版本上进行运行此应用
启动nacos命令
打开bin目录执行以下命令
./startup.sh –m standalone(单机模式运行)
需要将8848端口进行开放
firewall-cmd --zone=public --add-port=8848/tcp --permanent
firewall-cmd --reload
- 安装jdk
下载对应的jdk安装文件,目前采用的版本是1.8.0_232
下载地址:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载对应的操作系统版本
Linux x64 |
185.16 MB |
将文件进行解压:
Tar –zxvf jdk-8u231-linux-x64.tar.gz
配置环境变量:
vi /etc/profile
配置如下:
export JAVA_HOME=/opt/soft/jdk1.8.0_231
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
保存过后,将配置生效
Source /etc/profile
查看是否配置成功
Java –version
- 安装seata-server
下载对应版本的seata-server,目前采用的是0.9.0版本
下载地址:
https://github.com/seata/seata/releases
下载对应操作系统版本
将下载的文件进行解压
tar –zxvf seata-server-0.9.0.tar.gz
打开解压后的目录conf
针对nacos-config.txt /registry.conf 进行备份
修改registry.conf
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos"
nacos {
serverAddr = "192.168.1.84"
namespace = ""
cluster = "default"
}
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"
nacos {
serverAddr = "192.168.1.84"
namespace = ""
}
}
修改nacos-config.txt
service.default.grouplist=127.0.0.1(当前机器的ip地址):8091
store.mode=db
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&useSSL=false
store.db.user=root
store.db.password=root
service.vgroup_mapping.wup-server-group=default 要与项目配置一致
配置文件修改完成,执行以下命令进行初始化
nacos-config.sh 127.0.0.1
目录切换到seata/bin下启动seata-server
seata-server.sh –p 8091
当前命令不能支持后台执行,需要将命令修改如下:
nohup sh seata-server.sh -p 8091 > catalina.out 2>&1 &
注意:确定你连接的数据库版本,seata自带的连接jar是mysql5,如果是其他版本,自行替换对应的jar包
数据库处理:
在对应的数据库创建表,打开seata/conf文件目录,里边有两个sql文件,将db_store.sql放到seata数据库中进行创建表。将db_undo_log.sql在使用seata分布式的项目数据库中进行创建。
- 项目搭建
添加jar依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
启动类增加以下两个注解
@EnableDiscoveryClient
@EnableFeignClients
配置文件修改
spring.cloud.nacos.discovery.server-addr:nacos地址:8848
spring.cloud.alibaba.seata.tx-service-group: 项目名-group 与seata中的nacos-config.txt文件配置一致
spring.application.name:项目名称 //必须将项目名称设置
logging.level.io.seata=debug
在项目中创建seata注册配置文件registry.conf
文件内容与seata服务配置中的文件一致即可
创建一个feignclient接口类
@FeignClient("项目名称")
public interface TestFeignClient {
@GetMapping("/listPage")
Boolean listPage();
}
在使用异步系统调用是否要开启全局事务
@GlobalTransactional
@Transactional(rollbackFor = Exception.class)
public boolean save(CountryZoneBO bo){
boolean flag=countryZoneService.save(bo);
accountFeignClient.listPage();
return flag;
}
在对应的第三方系统中也实现以上相同的处理即可实现分布式事务
来源:oschina
链接:https://my.oschina.net/u/3177062/blog/3142651