针对alibaba的分布式事务组件使用说明

半城伤御伤魂 提交于 2019-12-13 17:05:18

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

分布式事务应用搭建

       系统采用alibaba系统的springcloud,分布式事务采用seata来进行管理,需要进行以下配置操作。

       下列操作,都是针对centos7以上版本 linux进行的操作

  1. 安装nacos应用服务器

下载对应版本的nacos安装包,目前采用的是1.1.3

下载地址:

       https://github.com/seata/seata/releases

       下载对应操作系统版本

       nacos-server-1.1.3.tar.gz

       将文件进行解压:

       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

      

  1. 安装jdk

下载对应的jdk安装文件,目前采用的版本是1.8.0_232

下载地址:

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

下载对应的操作系统版本

Linux x64

185.16 MB  

jdk-8u231-linux-x64.tar.gz

将文件进行解压:

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

  1. 安装seata-server

下载对应版本的seata-server,目前采用的是0.9.0版本

下载地址:

https://github.com/seata/seata/releases

下载对应操作系统版本

seata-server-0.9.0.tar.gz

将下载的文件进行解压

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自带的连接jarmysql5,如果是其他版本,自行替换对应的jar

       数据库处理:

       在对应的数据库创建表,打开seata/conf文件目录,里边有两个sql文件,将db_store.sql放到seata数据库中进行创建表。将db_undo_log.sql在使用seata分布式的项目数据库中进行创建。

  1. 项目搭建

添加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;

    }

       在对应的第三方系统中也实现以上相同的处理即可实现分布式事务

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!