文章目录
- 一、服务器
- 1.1 registry
- 1.2 Seata数据源配置
- 1.3 Seata服务器启动
- 二、客户端
- 2.1 配置TC地址
- 三、总结
mysql的lock_table只有AT模式需要用到全局事务锁。
一、服务器
1.Seata需要连接mysql数据库首先需要配置数据源,可以直接配置在conf/file.conf里面(变更的时候就需要修改配置并且重启Seata),所以一般选择配置在nacos上(热部署),修改配置之后不需要重启。
2.既然用到了nacos做配置管理,所以在conf/registry.conf(注册配置上)加上注册配置管理加上一个dataId:这个seataService.properties要对应上nacos的配置文件名。
1.1 registry
registry {
# tc服务的注册中心类,这里选择nacos,也可以是eureka、zookeeper等
type = "nacos"
nacos {
# seata tc 服务注册到 nacos的服务名称,可以自定义
application = "seata-tc-server"
serverAddr = "IP地址:8848"
group = "DEFAULT_GROUP"
namespace = ""
cluster = "SH"
username = "nacos"
password = "nacos"
}
}
config {
# 读取tc服务端的配置文件的方式,这里是从nacos配置中心读取,这样如果tc是集群,可以共享配置
type = "nacos"
# 配置nacos地址等信息
nacos {
serverAddr = "IP地址:8848"
namespace = ""
group = "DEFAULT_GROUP"
username = "nacos"
password = "nacos"
dataId = "seataServer.properties"
}
}
1.2 Seata数据源配置
# 数据存储方式,db代表数据库
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://IP地址:3306/seata?serverTimezone=Asia/Shanghai&useUnicode=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=root
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
# 事务、日志等配置
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
# 客户端与服务端传输方式
transport.serialization=seata
transport.compressor=none
# 关闭metrics功能,提高性能
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898
1.3 Seata服务器启动
sh seata-server.sh -h ip地址 -p 8091 -m db
二、客户端
1.Seata的服务器注册到nacos上,可以直接注册(直接配置Seata服务器的IP以及端口),但是直连不太好,Seata变更服务器之后,客户端就需要修改,所以需要用nacos做服务的注册和发现,客户端去拉取TC服务器的配置。(这样服务器的地址就交给了nacos管理,客户端就不需要固定TC服务器的IP地址而是写TC服务名,这样TC服务器更改之后,也不需要修改客户端)
2.所以TC服务器上conf/registry.conf需要把自己注册到nacos上(服务名、ip地址、端口号以及nacos的账号密码等),客户端就只需要配置需要拉取nacos上的哪个配置服务(拉取的服务名、nacos账号密码等)。
2.1 配置TC地址
seata:
registry: # TC服务注册中心的配置,微服务根据这些信息去注册中心获取tc服务地址
type: nacos # 注册中心类型 nacos
nacos:
server-addr: IP地址:8848 # nacos地址
namespace: "" # namespace,默认为空
group: DEFAULT_GROUP # 分组,默认是DEFAULT_GROUP
application: seata-tc-server # seata服务名称
username: nacos
password: nacos
tx-service-group: seata-leadnews # 事务组名称
service:
vgroup-mapping: # 事务组与cluster的映射关系
seata-leadnews: SH
三、总结
1.TC服务器连接mysql的配置需要放在nacos上做配置管理 (数据源变更不用重启Seata服务器)
2.TC服务器需要把自己注册到nacos,让微服务去拉取自己的配置信息。 (Seata服务器变更,客户端不用修改)