个人随笔
目录
二十、springCloudAlibaba-seata环境搭建TC(Server端)
2023-11-06 22:22:01

一、seata是什么

Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata将为
用户提供了AT,TCC,SAGA和XA事务模式,为用户打造一站式的分布式解决方案。AT模式是阿里首推
的模式,阿里云上有商用版本的GTS(Global Transaction Service全局事务服务)

官网:https://seata.io/

二、环境搭建

1、下载服务端包,用的版本要跟alibaba对应

Seata Version 1.3.0
https://seata.io/zh-cn/docs/ops/deploy-guide-beginner
https://github.com/seata/seata/releases
https://github.com/seata/seata/releases/tag/v1.3.0
这边就直接用window环境来体验了:seata-server-1.3.0.zip

2、配置

1、建表

https://github.com/seata/seata/tree/master/script/server/db
mysql.sql

  1. create dabase seata;

再执行表

2、修改启动模式

修改: seata—>conf—>file.conf,修改store.mode=”db或者redis”
这里改为db

4、修改注册中心和配置中心

nacos环境搭建参考:一、springCloudAlibaba-nacos环境搭建

修改:seata—>conf—>registry.conf
将注册中心和配置中心的类型都改为nacos

  1. type = "nacos"
5、配置中心配置

下载对应版本的script
https://github.com/seata/seata/tree/1.3.0
这里用的是1.3版本,贼麻烦,配置中心注册后也贼恶心的配置文件结构,不过听说新版优化了。
解压获得script后放到seata的目录下,当然不放也可以
修改:script—>config-center—>config.txt
修改如下地方
模式改为db

  1. store.mode=db

还有对应的数据库配置。
事务分组:异地机房停电容错机制,这里写成guangzhou

  1. service.vgroupMapping.guangzhou=default

这里配置后到时候client也要对应配置

配置到配置中心,1.3.0版本贼恶心,需要执行对应的脚本配置,这里执行的是sh脚本
script—>config-center—>nacos—>nacos-config.sh
我这里是先打开Git Bash Here,然后执行sh nacos-config.sh

Git的安装自行百度

执行完后登录nacos可以看到

这是什么奇葩设定,每一行一个配置文件?

版本低也是原罪,没办法,为了跟我这套学习笔记对应的alibaba的版本对应。

3、启动

进入cmd,进行seata的启动

  1. seata-server.bat -p 8092

然后再启动个

  1. seata-server.bat -p 8091

可以看到nacos控制台有集群了

真的一点都不优雅啊!

三、1.3.0版本对应的配置

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_gmt_modified_status` (`gmt_modified`, `status`),
  18. KEY `idx_transaction_id` (`transaction_id`)
  19. ) ENGINE = InnoDB
  20. DEFAULT CHARSET = utf8;
  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 = utf8;
  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(96),
  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. `gmt_create` DATETIME,
  50. `gmt_modified` DATETIME,
  51. PRIMARY KEY (`row_key`),
  52. KEY `idx_branch_id` (`branch_id`)
  53. ) ENGINE = InnoDB
  54. DEFAULT CHARSET = utf8;

config.xml

下面是我修改后的

  1. transport.type=TCP
  2. transport.server=NIO
  3. transport.heartbeat=true
  4. transport.enableClientBatchSendRequest=false
  5. transport.threadFactory.bossThreadPrefix=NettyBoss
  6. transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker
  7. transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler
  8. transport.threadFactory.shareBossWorker=false
  9. transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector
  10. transport.threadFactory.clientSelectorThreadSize=1
  11. transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread
  12. transport.threadFactory.bossThreadSize=1
  13. transport.threadFactory.workerThreadSize=default
  14. transport.shutdown.wait=3
  15. service.vgroupMapping.guangzhou=default
  16. service.default.grouplist=127.0.0.1:8091
  17. service.enableDegrade=false
  18. service.disableGlobalTransaction=false
  19. client.rm.asyncCommitBufferLimit=10000
  20. client.rm.lock.retryInterval=10
  21. client.rm.lock.retryTimes=30
  22. client.rm.lock.retryPolicyBranchRollbackOnConflict=true
  23. client.rm.reportRetryCount=5
  24. client.rm.tableMetaCheckEnable=false
  25. client.rm.sqlParserType=druid
  26. client.rm.reportSuccessEnable=false
  27. client.rm.sagaBranchRegisterEnable=false
  28. client.tm.commitRetryCount=5
  29. client.tm.rollbackRetryCount=5
  30. client.tm.degradeCheck=false
  31. client.tm.degradeCheckAllowTimes=10
  32. client.tm.degradeCheckPeriod=2000
  33. store.mode=db
  34. store.file.dir=file_store/data
  35. store.file.maxBranchSessionSize=16384
  36. store.file.maxGlobalSessionSize=512
  37. store.file.fileWriteBufferCacheSize=16384
  38. store.file.flushDiskMode=async
  39. store.file.sessionReloadReadSize=100
  40. store.db.datasource=druid
  41. store.db.dbType=mysql
  42. store.db.driverClassName=com.mysql.jdbc.Driver
  43. store.db.url=jdbc:mysql://192.168.192.19:3309/seata?useUnicode=true
  44. store.db.user=root
  45. store.db.password=123456
  46. store.db.minConn=5
  47. store.db.maxConn=30
  48. store.db.globalTable=global_table
  49. store.db.branchTable=branch_table
  50. store.db.queryLimit=100
  51. store.db.lockTable=lock_table
  52. store.db.maxWait=5000
  53. store.redis.host=127.0.0.1
  54. store.redis.port=6379
  55. store.redis.maxConn=10
  56. store.redis.minConn=1
  57. store.redis.database=0
  58. store.redis.password=null
  59. store.redis.queryLimit=100
  60. server.recovery.committingRetryPeriod=1000
  61. server.recovery.asynCommittingRetryPeriod=1000
  62. server.recovery.rollbackingRetryPeriod=1000
  63. server.recovery.timeoutRetryPeriod=1000
  64. server.maxCommitRetryTimeout=-1
  65. server.maxRollbackRetryTimeout=-1
  66. server.rollbackRetryTimeoutUnlockEnable=false
  67. client.undo.dataValidation=true
  68. client.undo.logSerialization=jackson
  69. client.undo.onlyCareUpdateColumns=true
  70. server.undo.logSaveDays=7
  71. server.undo.logDeletePeriod=86400000
  72. client.undo.logTable=undo_log
  73. client.log.exceptionRate=100
  74. transport.serialization=seata
  75. transport.compressor=none
  76. metrics.enabled=false
  77. metrics.registryType=compact
  78. metrics.exporterList=prometheus
  79. metrics.exporterPrometheusPort=9898
 44

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2