脉金捷脉金捷
主页
  • VuePress
  • VuePress2
  • Markdown基础命令
  • Java特性
  • Java修饰符
  • Java常见问题
  • Java LocalDate
  • Java Cloud ID
  • Docker-CentOS8
  • Docker-Nginx
  • Docker-Redis
  • Docker-MySQL
  • Docker-Nacos
  • Docker-Seata
  • Docker-Nodejs
  • Docker-runlike
  • Docker基础命令
  • Linux基础软件
  • Linux-SSH登录
  • Linux防火墙-iptables
  • Linux系统目录
主页
  • VuePress
  • VuePress2
  • Markdown基础命令
  • Java特性
  • Java修饰符
  • Java常见问题
  • Java LocalDate
  • Java Cloud ID
  • Docker-CentOS8
  • Docker-Nginx
  • Docker-Redis
  • Docker-MySQL
  • Docker-Nacos
  • Docker-Seata
  • Docker-Nodejs
  • Docker-runlike
  • Docker基础命令
  • Linux基础软件
  • Linux-SSH登录
  • Linux防火墙-iptables
  • Linux系统目录
  • Docker-CentOS8
  • Docker-Nginx
  • Docker-Redis
  • Docker-MySQL
  • Docker-Nacos
  • Docker-Seata
  • Docker-Nodejs
  • Docker-runlike
  • Docker基础命令

Docker 安装 Seata

Seata 官网:https://seata.io/zh-cn/index.html

Docker Hub 镜像仓库:https://hub.docker.com/r/seataio/seata-server

拉取 seataio/seata-server:latest 镜像

docker pull seataio/seata-server

快速运行

docker run --name seata-server -p 8091:8091 -d seataio/seata-server:latest

配置Nacos

拷贝配置YAML

docker cp seata-server:/seata-server/resources /usr/local/workspace/seata/resources

修改配置YAML

server:
  port: 7091

spring:
  application:
    name: seata-server

logging:
  config: classpath:logback-spring.xml
  file:
    path: ${user.home}/logs/seata
  extend:
    logstash-appender:
      destination: 127.0.0.1:4560
    kafka-appender:
      bootstrap-servers: 127.0.0.1:9092
      topic: logback_to_logstash

console:
  user:
    username: admin
    password: admin

seata:
  config:
    # support: nacos, consul, apollo, zk, etcd3
    type: nacos
    nacos: 
      server-addr: IP:8848
      group: SEATA_GROUP
      namespace: namespaceId
      username: nacos
      password: nacos
  registry:
    # support: nacos, eureka, redis, zk, consul, etcd3, sofa
    type: nacos
    nacos: 
      application: seata-server
      server-addr: IP:8848
      group: SEATA_GROUP
      namespace: namespaceId
      username: nacos
      password: nacos
  store:
    # support: file 、 db 、 redis
    mode: file
#  server:
#    service-port: 8091 #If not configured, the default is '${server.port} + 1000'
  security:
    secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
    tokenValidityInMilliseconds: 1800000
    ignore:
      urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login

初始化 Nacos 的 Seata 配置

下载源码:https://github.com/seata/seata

参考:https://github.com/seata/seata/tree/develop/script/config-center

sh ${SEATAPATH}/script/config-center/nacos/nacos-config-interactive.sh

提示1:缺少配置项:service.vgroupMapping.default,自行增加到nacos中。

Data id: service.vgroupMapping.default
Group: SEATA_GROUP
配置内容: default

提示2:我这里出现了序列化问题,修改配置:client.undo.logSerialization

Data id: client.undo.logSerialization
Group: SEATA_GROUP
配置内容: kryo

项目引用 kryo 依赖包。注意版本号对应,避免依赖包包冲突。我这里使用的是 seata-server-1.4.2

<dependency>
  <groupId>com.esotericsoftware</groupId>
  <artifactId>kryo</artifactId>
  <version>4.0.2</version>
</dependency>
<dependency>
  <groupId>de.javakaffee</groupId>
  <artifactId>kryo-serializers</artifactId>
  <version>0.42</version>
</dependency>

运行Seata注册到Nacos

docker run -d --name seata -p 8091:8091 \
    -e SEATA_CONFIG_NAME=file:/seata-server/registry.conf \
    -e SEATA_IP=IP \
    -e SEATA_PORT=8091 \
    -v /usr/local/workspace/seata/resources:/seata-server/resources \
    --restart always seataio/seata-server

业务数据库增加表

CREATE TABLE `undo_log`
(
    `id`            bigint(20)   NOT NULL AUTO_INCREMENT,
    `branch_id`     bigint(20)   NOT NULL,
    `xid`           varchar(100) NOT NULL,
    `context`       varchar(128) NOT NULL,
    `rollback_info` longblob     NOT NULL,
    `log_status`    int(11)      NOT NULL,
    `log_created`   datetime     NOT NULL,
    `log_modified`  datetime     NOT NULL,
    `ext`           varchar(100) DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 1
  DEFAULT CHARSET = utf8;
Last Updated: 5/16/22, 6:05 PM
Contributors: GhostarX