ToB企服应用市场:ToB评测及商务社交产业平台

标题: 1.Seata 1.5.2 seata-server搭建 [打印本页]

作者: 卖不甜枣    时间: 2024-9-20 01:22
标题: 1.Seata 1.5.2 seata-server搭建
一:Seata基本介绍

Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简朴易用的分布式事务服务。
详见官网链接:https://seata.apache.org/zh-cn/
1.汗青项目里的使用经验:

之前公司里的oem用户对应的App计划停服,通告用户手动确认迁徙到obm的用户App,oem 和 obm 用户的数据表结构完全一样,只是不同App对应的数据分别存储在不同的库,需要包管用户在迁徙后,oem库里清除用户数据而obm库里同步新增用户的数据。迁徙后数据需要包管的同等性。这几天工作不太忙,利用碎片时间重新搭建了一套也顺便记录下整个搭建过程。
二:Seata-server搭建

2.1 版本选择

Seata 也是CS结构的服务类型,需要有一个Seata-server端。需要注意的是:版本的选择需要和本身项目中其他的框架版本适配。
我的版本选择如下:
组件版本spring-boot2.6.11spring-cloud2021.0.4spring-cloud-alibaba2021.0.4.0nacos2.0.4seata1.5.2 官网上保举的版本适配截图见下:


2.2 seata-server 下载

从seata 官网进去后,探求下载页面 中的对应版本。
详细的链接为:https://seata.apache.org/zh-cn/unversioned/release-history/seata-server

下载后,解压zip包:

2.3 初始化DB脚本

文件路径:seata\script\server\db\mysql.sql
内容如下:
  1. -- -------------------------------- The script used when storeMode is 'db' --------------------------------
  2. -- the table to store GlobalSession data
  3. CREATE TABLE IF NOT EXISTS `global_table`
  4. (
  5.     `xid`                       VARCHAR(128) NOT NULL,
  6.     `transaction_id`            BIGINT,
  7.     `status`                    TINYINT      NOT NULL,
  8.     `application_id`            VARCHAR(32),
  9.     `transaction_service_group` VARCHAR(32),
  10.     `transaction_name`          VARCHAR(128),
  11.     `timeout`                   INT,
  12.     `begin_time`                BIGINT,
  13.     `application_data`          VARCHAR(2000),
  14.     `gmt_create`                DATETIME,
  15.     `gmt_modified`              DATETIME,
  16.     PRIMARY KEY (`xid`),
  17.     KEY `idx_status_gmt_modified` (`status` , `gmt_modified`),
  18.     KEY `idx_transaction_id` (`transaction_id`)
  19. ) ENGINE = InnoDB
  20.   DEFAULT CHARSET = utf8mb4;
  21. -- the table to store BranchSession data
  22. CREATE TABLE IF NOT EXISTS `branch_table`
  23. (
  24.     `branch_id`         BIGINT       NOT NULL,
  25.     `xid`               VARCHAR(128) NOT NULL,
  26.     `transaction_id`    BIGINT,
  27.     `resource_group_id` VARCHAR(32),
  28.     `resource_id`       VARCHAR(256),
  29.     `branch_type`       VARCHAR(8),
  30.     `status`            TINYINT,
  31.     `client_id`         VARCHAR(64),
  32.     `application_data`  VARCHAR(2000),
  33.     `gmt_create`        DATETIME(6),
  34.     `gmt_modified`      DATETIME(6),
  35.     PRIMARY KEY (`branch_id`),
  36.     KEY `idx_xid` (`xid`)
  37. ) ENGINE = InnoDB
  38.   DEFAULT CHARSET = utf8mb4;
  39. -- the table to store lock data
  40. CREATE TABLE IF NOT EXISTS `lock_table`
  41. (
  42.     `row_key`        VARCHAR(128) NOT NULL,
  43.     `xid`            VARCHAR(128),
  44.     `transaction_id` BIGINT,
  45.     `branch_id`      BIGINT       NOT NULL,
  46.     `resource_id`    VARCHAR(256),
  47.     `table_name`     VARCHAR(32),
  48.     `pk`             VARCHAR(36),
  49.     `status`         TINYINT      NOT NULL DEFAULT '0' COMMENT '0:locked ,1:rollbacking',
  50.     `gmt_create`     DATETIME,
  51.     `gmt_modified`   DATETIME,
  52.     PRIMARY KEY (`row_key`),
  53.     KEY `idx_status` (`status`),
  54.     KEY `idx_branch_id` (`branch_id`),
  55.     KEY `idx_xid_and_branch_id` (`xid` , `branch_id`)
  56. ) ENGINE = InnoDB
  57.   DEFAULT CHARSET = utf8mb4;
  58. CREATE TABLE IF NOT EXISTS `distributed_lock`
  59. (
  60.     `lock_key`       CHAR(20) NOT NULL,
  61.     `lock_value`     VARCHAR(20) NOT NULL,
  62.     `expire`         BIGINT,
  63.     primary key (`lock_key`)
  64. ) ENGINE = InnoDB
  65.   DEFAULT CHARSET = utf8mb4;
  66. INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('AsyncCommitting', ' ', 0);
  67. INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryCommitting', ' ', 0);
  68. INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryRollbacking', ' ', 0);
  69. INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('TxTimeoutCheck', ' ', 0);
复制代码
创建一个新库:seata
在新库里执行mysql.sql
2.4 设置文件编辑

文件路径:seata\conf\application.yml
application.yml 的设置信息可以参在官方给出的application.example.yml文件的设置。
  1. # seata-server 对应的端口
  2. server:
  3.   port: 7091
  4. spring:
  5.   application:
  6.     name: seata-server
  7. logging:
  8.   config: classpath:logback-spring.xml
  9.   file:
  10.     path: ${user.home}/logs/seata
  11.   extend:
  12.     logstash-appender:
  13.       destination: 127.0.0.1:4560
  14.     kafka-appender:
  15.       bootstrap-servers: 127.0.0.1:9092
  16.       topic: logback_to_logstash
  17.       
  18. # seata控制台的账号密码
  19. console:
  20.   user:
  21.     username: seata
  22.     password: seata
  23. seata:
  24.   config:
  25.     # support: nacos, consul, apollo, zk, etcd3
  26.     #以nacos 作为配置中心,具体nacos配置根据自己的nacos调整
  27.     type: nacos
  28.     nacos:
  29.       server-addr: 127.0.0.1:8848
  30.       namespace: d6eccad6-681c-4133-b9ff-1abcd951297a
  31.       group: DOLPHIN_GROUP
  32.       username: nacos
  33.       password: nacos
  34.   registry:
  35.     # support: nacos, eureka, redis, zk, consul, etcd3, sofa
  36.      #以nacos 作为注册中心,具体nacos配置根据自己的nacos调整
  37.     type: nacos
  38.     nacos:
  39.       application: seata-server
  40.       server-addr: 127.0.0.1:8848
  41.       group: DOLPHIN_GROUP
  42.       namespace: d6eccad6-681c-4133-b9ff-1abcd951297a
  43.       cluster: default
  44.       username: nacos
  45.       password: nacos
  46.       ##if use MSE Nacos with auth, mutex with username/password attribute
  47.       #access-key: ""
  48.       #secret-key: ""
  49.   store:
  50.     # support: file 、 db 、 redis
  51.     #以db作为存储中心,具体存储配置根据自己的选择配
  52.     mode: db
  53.     db:
  54.       datasource: druid
  55.       db-type: mysql
  56.       driver-class-name: com.mysql.cj.jdbc.Driver
  57.       # 步骤2.3里初始化DB脚本时创建的库
  58.       url: jdbc:mysql://127.0.0.1:3306/seata?rewriteBatchedStatements=true
  59.       user: root
  60.       password: myPwd
  61.       min-conn: 5
  62.       max-conn: 100
  63.       global-table: global_table
  64.       branch-table: branch_table
  65.       lock-table: lock_table
  66.       distributed-lock-table: distributed_lock
  67.       query-limit: 100
  68.       max-wait: 5000
  69. #  server:
  70. #    service-port: 8091 #If not configured, the default is '${server.port} + 1000'
  71.   security:
  72.     secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
  73.     tokenValidityInMilliseconds: 1800000
  74.     ignore:
  75.       urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login
复制代码
2.5 seata-server启动

seata\bin 目次下:

注意:启动log如下。监听的端口是8091. 是在启动的端口7091 + 1000 .设置文件里可见这个规则。
  1. #  server:
  2. #    service-port: 8091 #If not configured, the default is '${server.port} + 1000'
复制代码

2.6 seata-server 控制台登录
登录地址:localhost:7092
账号密码:见application.yml 中控制台设置


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4