微服务高级篇【2】之Seata部署

Dear 丶 2024-03-24 01:36 122阅读 0赞

文章目录

  • Seata的部署和集成
      1. Seata下载[Seata1.6.1](https://github.com/seata/seata/releases/tag/v1.6.1)
      1. Seata解压
      1. 修改Seata配置
      1. nacos中新增配置
      1. 创建数据库表
      1. 启动TC服务

Seata的部署和集成

在这里插入图片描述

1. Seata下载Seata1.6.1

在这里插入图片描述

2. Seata解压

在这里插入图片描述

3. 修改Seata配置

  • 修改conf目录下的registry.conf文件:
    在这里插入图片描述

    1. seata:
    2. config:
    3. # support: nacos, consul, apollo, zk, etcd3
    4. # 读取tc服务端的配置文件的方式,这里是从nacos配置中心读取,这样如果tc是集群,可以共享配置
    5. type: nacos
    6. # 配置nacos地址等信息
    7. nacos:
    8. serverAddr: 127.0.0.1:8848
    9. namespace: ""
    10. group: SEATA_GROUP
    11. username: nacos
    12. password: nacos
    13. dataId: seataServer.properties
    14. registry:
    15. # support: nacos, eureka, redis, zk, consul, etcd3, sofa
    16. # tc服务的注册中心类,这里选择nacos,也可以是eureka、zookeeper等
    17. type: nacos
    18. nacos:
    19. # seata tc 服务注册到 nacos的服务名称,可以自定义
    20. application: seata-tc-server
    21. serverAddr: 127.0.0.1:8848
    22. group: DEFAULT_GROUP
    23. namespace: ""
    24. cluster: SH
    25. username: nacos
    26. password: nacos
    • 注意:nacos中需要创建命名空间,id为 上图中的 seata-namespace-id , 名称 为 seata,但是由于我们配置文件中的seata-namespace-id为空,所以不用进行这一步

4. nacos中新增配置

  • nacos配置列表中新增配置,Data id 对应配置文件中的seataServer.properties,Group为DEFAULT_GROUP
    在这里插入图片描述
    在这里插入图片描述
  • 详细的配置内容:

    1. # 数据存储方式,db代表数据库
    2. store.mode=db
    3. store.db.datasource=druid
    4. store.db.dbType=mysql
    5. store.db.driverClassName=com.mysql.jdbc.Driver
    6. store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true
    7. store.db.user=root
    8. store.db.password=xxxx
    9. store.db.minConn=5
    10. store.db.maxConn=30
    11. store.db.globalTable=global_table
    12. store.db.branchTable=branch_table
    13. store.db.queryLimit=100
    14. store.db.lockTable=lock_table
    15. store.db.maxWait=5000
    16. # 事务、日志等配置
    17. server.recovery.committingRetryPeriod=1000
    18. server.recovery.asynCommittingRetryPeriod=1000
    19. server.recovery.rollbackingRetryPeriod=1000
    20. server.recovery.timeoutRetryPeriod=1000
    21. server.maxCommitRetryTimeout=-1
    22. server.maxRollbackRetryTimeout=-1
    23. server.rollbackRetryTimeoutUnlockEnable=false
    24. server.undo.logSaveDays=7
    25. server.undo.logDeletePeriod=86400000
    26. # 客户端与服务端传输方式
    27. transport.serialization=seata
    28. transport.compressor=none
    29. # 关闭metrics功能,提高性能
    30. metrics.enabled=false
    31. metrics.registryType=compact
    32. metrics.exporterList=prometheus
    33. metrics.exporterPrometheusPort=9898

5. 创建数据库表

  • 特别注意:tc服务在管理分布式事务时,需要记录事务相关数据到数据库中,需要提前创建好这些表。
  • 新建一个名为seata的数据库,以下代码:

    1. SET NAMES utf8mb4;
    2. SET FOREIGN_KEY_CHECKS = 0;
    3. -- ----------------------------
    4. -- 分支事务表
    5. -- ----------------------------
    6. DROP TABLE IF EXISTS `branch_table`;
    7. CREATE TABLE `branch_table` (
    8. `branch_id` bigint(20) NOT NULL,
    9. `xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
    10. `transaction_id` bigint(20) NULL DEFAULT NULL,
    11. `resource_group_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
    12. `resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
    13. `branch_type` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
    14. `status` tinyint(4) NULL DEFAULT NULL,
    15. `client_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
    16. `application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
    17. `gmt_create` datetime(6) NULL DEFAULT NULL,
    18. `gmt_modified` datetime(6) NULL DEFAULT NULL,
    19. PRIMARY KEY (`branch_id`) USING BTREE,
    20. INDEX `idx_xid`(`xid`) USING BTREE
    21. ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    22. -- ----------------------------
    23. -- 全局事务表
    24. -- ----------------------------
    25. DROP TABLE IF EXISTS `global_table`;
    26. CREATE TABLE `global_table` (
    27. `xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
    28. `transaction_id` bigint(20) NULL DEFAULT NULL,
    29. `status` tinyint(4) NOT NULL,
    30. `application_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
    31. `transaction_service_group` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
    32. `transaction_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
    33. `timeout` int(11) NULL DEFAULT NULL,
    34. `begin_time` bigint(20) NULL DEFAULT NULL,
    35. `application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
    36. `gmt_create` datetime NULL DEFAULT NULL,
    37. `gmt_modified` datetime NULL DEFAULT NULL,
    38. PRIMARY KEY (`xid`) USING BTREE,
    39. INDEX `idx_gmt_modified_status`(`gmt_modified`, `status`) USING BTREE,
    40. INDEX `idx_transaction_id`(`transaction_id`) USING BTREE
    41. ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    42. SET FOREIGN_KEY_CHECKS = 1;

6. 启动TC服务

  • 进入bin目录,运行其中的seata-server.bat即可,启动成功后,seata-server应该已经注册到nacos注册中心
  • 打开浏览器,访问nacos地址:http://localhost:8848,然后进入服务列表页面,可以看到seata-tc-server的信息。
    在这里插入图片描述
    在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,122人围观)

还没有评论,来说两句吧...

相关阅读