Seata分布式事务客户端配置文件file.conf详解
2025-07-05 05:25:08作者:韦蓉瑛
概述
Seata作为一款开源的分布式事务解决方案,其客户端配置对于事务的正确执行至关重要。file.conf是Seata客户端核心配置文件之一,主要用于配置客户端与事务协调器(TC)的交互参数、资源管理器(RM)和事务管理器(TM)的行为特性等。本文将深入解析file.conf中的各项配置参数及其作用。
传输层配置(transport)
传输层配置定义了客户端与TC服务器之间的网络通信参数:
transport {
type = "TCP" # 传输协议类型,支持TCP和unix-domain-socket
server = "NIO" # 服务端类型,支持NIO和NATIVE
heartbeat = true # 是否启用心跳检测
# 批量发送请求配置
enableTmClientBatchSendRequest = false # TM客户端是否批量发送请求
enableRmClientBatchSendRequest = true # RM客户端是否批量发送请求
# RPC请求超时设置
rpcRmRequestTimeout = 2000 # RM客户端RPC请求超时时间(ms)
rpcTmRequestTimeout = 30000 # TM客户端RPC请求超时时间(ms)
# 线程工厂配置
threadFactory {
bossThreadPrefix = "NettyBoss" # boss线程前缀
workerThreadPrefix = "NettyServerNIOWorker" # worker线程前缀
bossThreadSize = 1 # boss线程数
workerThreadSize = "default" # worker线程数,默认根据CPU核心数自动设置
}
shutdown {
wait = 3 # 服务关闭时等待时间(s)
}
serialization = "seata" # 序列化方式
compressor = "none" # 压缩方式
}
关键点说明:
- 心跳机制确保客户端与TC的长连接有效性
- 批量发送请求可提升RM客户端的性能
- 线程配置需根据实际业务负载调整,高并发场景可适当增加线程数
服务配置(service)
服务配置定义了事务组与TC集群的映射关系:
service {
vgroupMapping.default_tx_group = "default" # 事务组映射
default.grouplist = "127.0.0.1:8091" # TC服务器地址列表
disableGlobalTransaction = false # 是否禁用全局事务
}
配置建议:
- 生产环境建议使用注册中心(如Nacos)替代file方式配置TC地址
- 测试环境可通过disableGlobalTransaction临时关闭全局事务
客户端配置(client)
客户端配置分为RM(资源管理器)、TM(事务管理器)和Undo日志三部分。
RM配置
rm {
asyncCommitBufferLimit = 10000 # 异步提交缓冲区限制
lock {
retryInterval = 10 # 锁重试间隔(ms)
retryTimes = 30 # 锁重试次数
retryPolicyBranchRollbackOnConflict = true # 冲突时是否回滚分支
}
reportRetryCount = 5 # 报告重试次数
tableMetaCheckEnable = false # 是否启用表元数据检查
sqlParserType = "druid" # SQL解析器类型
}
锁配置优化:
- 高并发场景可适当增加retryTimes和retryInterval
- 表元数据检查(tableMetaCheckEnable)在表结构频繁变更时应开启
TM配置
tm {
commitRetryCount = 5 # 提交重试次数
rollbackRetryCount = 5 # 回滚重试次数
defaultGlobalTransactionTimeout = 60000 # 默认全局事务超时时间(ms)
degradeCheck = false # 是否开启降级检查
}
超时设置:
- 根据业务特点设置合理的defaultGlobalTransactionTimeout
- 长时间事务需单独设置超时时间
Undo日志配置
undo {
dataValidation = true # 数据校验
logTable = "undo_log" # undo日志表名
compress {
enable = true # 是否压缩
type = "zip" # 压缩类型
threshold = "64k" # 压缩阈值
}
}
最佳实践:
- 生产环境务必开启dataValidation确保数据一致性
- 大事务场景建议启用压缩并适当调整threshold
负载均衡配置(loadBalance)
loadBalance {
type = "XID" # 负载均衡类型
virtualNodes = 10 # 虚拟节点数
}
负载均衡策略:
- XID哈希:默认策略,根据XID哈希选择TC
- RoundRobin:轮询方式
- Random:随机选择
TCC模式配置(tcc)
tcc {
fence {
logTableName = "tcc_fence_log" # TCC防护日志表名
cleanPeriod = "1h" # 日志清理周期
}
}
TCC防护:
- 防悬挂、空回滚等异常情况
- 定期清理已完成的事务日志
总结
file.conf作为Seata客户端核心配置文件,合理配置各项参数对分布式事务的稳定性和性能至关重要。生产环境中,建议:
- 根据业务特点调整超时时间和重试策略
- 高并发场景优化线程和网络参数
- 定期检查Undo日志和TCC防护日志
- 结合监控数据持续优化配置
通过深入了解和合理配置file.conf,可以充分发挥Seata在分布式事务处理中的优势,为业务系统提供可靠的事务保障。