Seata 配置中心

本文详细解读了Seata配置中心的工作流程,包括如何选择配置文件、基础配置的选择和核心配置的加载策略。介绍了不同配置中心类型(如Nacos、Consul等)的参数配置,并重点突出了核心配置如transport和service的详细配置项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置中心配置文件

配置中心读取配置的流程

  1. 选择配置文件, 例如registry.conf
  2. 根据配置文件的文件类型选择基础配置
  3. 通过基础配置进行驱动, 加载核心配置

seata 在加载核心配置的时候, 会放到本地的 ConcurrentHashMap 缓存。 取值时可以分为三个级别:

  1. 优先从缓存中获取
  2. 从 System.getProperty 获取
  3. 从配置中心获取
    如果取到值会存放到缓存中

选择配置文件

配置中心配置文件默认是: registry.conf , 可以通过系统属性(System.getProperty),环境变量(System.getenv)指定配置中心配置文件

配置的属性优先获取系统属性值,如果不存在在获取环境变量的配置,如果还没有就获取默认值

系统属性方式环境变量方式默认值
seata.config.nameSEATA_CONFIG_NAMEregistry
seataEnvSEATA_ENV空值

默认配置: registry.conf
通过JVM参数: -DseataEnv=test 指定的配置文件: registry-test.conf

配置中心的配置可以放在很多个地方,例如下图的文件,zk,etcd等。 选择配置中心的形式后,就需要根据选择的类型做参数配置。每种配置中心需要的参数都不一样, 例如文件配置中心只需要: 文件类型=文件,文件名=file.conf 。 而zookeeper就需要指定服务器地址,会话超时时间,连接超时时间 等
在这里插入图片描述

基础配置

文件配置中心的基础配置:

配置类型配置名称含义必须类型
通用conf.type配置中心的文件类型 ,nacos,consul,apollo,zk,etcd3,file 其中之一string
nacosconfig.nacos.serverAddr服务器地址, 例如: localhoststring
nacosconfig.nacos.namespace命名空间,例如: publicstring
nacosconfig.nacos.group核心配置文件名称string
nacosconfig.nacos.cluster集群名称, 例如: defaultstring
nacosconfig.nacos.username用户名string
nacosconfig.nacos.password密码string
consulconfig.consul.serverAddr服务器地址, 例如:127.0.0.1:8500string
apolloconfig.apollo.appIdapp名称,例如: seata-serverstring
apolloconfig.apollo.apolloMeta元数据,例如: http://localhost:8801string
apolloconfig.apollo.namespace命名空间,例如: applicationstring
zookeeperconfig.zk.serverAddr服务器地址,例如: 127.0.0.1:2181string
zookeeperconfig.zk.sessionTimeout会话超时时间, 单位: 毫秒int
zookeeperconfig.zk.connectTimeout连接超时时间, 单位: 毫秒int
zookeeperconfig.zk.username用户名string
zookeeperconfig.zk.password密码string
etcdconfig.etcd3.serverAddr服务器地址, 例如: http://localhost:2379string
fileconfig.file.name核心配置文件名称,例如: file.confstring

核心配置

配置名称类型默认值必须含义
transport.typestringTCPworker线程的名称
transport.serverstringNIO传输方式, 取值范围: NIO,NATIVE
transport.heartbeatbooleantrue是否启用心跳检查
transport.enableClientBatchSendRequestbooleantrue是否启用客户端批量发送请求
transport.threadFactory.bossThreadPrefixstringNettyBossboss线程的名称
transport.threadFactory.workerThreadPrefixstringNettyServerNIOWorkerworker线程的名称
transport.threadFactory.serverExecutorThreadPrefixstring服务执行器线程前缀, 目前版本无意义
transport.threadFactory.clientWorkerThreadPrefixstringNettyClientWorkerThread服务执行器线程前缀
transport.threadFactory.clientSelectorThreadPrefixstringNettyClientSelector客户端选择器的线程前缀
transport.threadFactory.clientSelectorThreadSizeint1客户端选择器的线程大小
transport.threadFactory.shareBossWorkerboolean是否共享boss和worker的线程池,目前版本无意义
transport.threadFactory.shutdown.waitint3应用关闭时调用,配置中心关闭后,等待的时间
transport.threadFactory.bossThreadSizeint1boss线程池的数量
transport.threadFactory.workerThreadSizestring/intCPU核数*2为空或者是default是一样的, 也可以指定数字
transport.serializationstringSEATA序列化的方式: 可选值: SEATA,PROTOBUF,KRYO,FST.(1.3.0还未支持HESSIAN, 下个版本会修复)
transport.compressorstringNONE压缩方式: NONE,GZIP,ZIP,SEVENZ,BZIP2,LZ4
transport.threadFactory.bossThreadSizeint1boss线程池的数量
service.vgroupMapping.my_test_tx_groupstring传输服务组的映射, 创建GlobalTransactionScanner时指定分组名称,例如指定分组名称为my_test_tx_group
service.default.groupliststring服务默认组
service.enableDegradestring当前版本不支持
service.disableGlobalTransactionstringfalse是否禁用全局事物
client.rm.asyncCommitBufferLimitint10000二阶段异步提交的缓冲区大小
client.rm.lock.retryPolicyBranchRollbackOnConflictbooleantrue冲突时的回滚策略,设置为false时,如果发生了回滚冲突会进行重试重试
client.rm.lock.retryIntervalint10重试间隔的毫秒数
client.rm.lock.retryTimesint30重试最大次数
client.rm.reportRetryCountint10
client.rm.tableMetaCheckEnablebooleanfalse是否启用表的元数据检查,如果开启,则会开启一个定时器,每60秒执行一次,更新表元数据缓存Map的所有表的结构
client.rm.sqlParserTypestringdruidSQL解析器类型, (1.4.0的属性)
client.rm.reportSuccessEnablebooleanfalsesaga 模式是否报告成功状态
client.rm.sagaBranchRegisterEnablebooleanfalsesaga模式是否启用分支注册(1.4.0)
client.tm.commitRetryCountintfalse全局事物提交的最大重试次数
client.tm.rollbackRetryCountintfalse全局事物回滚的最大重试次数
client.undo.dataValidationbooleantrue二阶段回滚时,是否验证后置镜像与当前数据的一致性(避免脏写,一定要开启)
client.undo.logSerializationstringjackson回滚日志序列化方式
client.undo.logTablestringundo_log回滚日志的表名称
client.log.exceptionRateint100随机打印调用栈的最大比例
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值