Seata 参数配置(seatateca参数)

  本篇文章为你整理了Seata 参数配置(seatateca参数)的详细内容,包含有seata1.3.0配置 seatateca参数 seata1.3 seata1.2 Seata 参数配置,希望能帮助你了解 Seata 参数配置。

  socket通道类型

  NIO、NATIVE(根据操作系统类型和socket通信方式选择KQueue或Epoll,注意Windows只支持NIO,选择这种方式会抛出异常)

  
Netty通信模型Worker group线程数

  可配置线程数或选择特定线程工作模式下的线程数,线程的默认工作模式有4种:Auto(2*CPU核数 + 1)、Pin(CPU核数,适用于计算密集型任务)、BusyPin(CPU核数 + 1,适用于计算密集型且内存比较有限的场景)、Default(2*CPU核数,适用于IO密集型任务),默认值为Default模式

  
client和server通信数据压缩方式

  none、gzip、zip、sevenz、bzip2、lz4、deflater、zstd,默认none

  1.2.0之前:gzip
1.2.0:zip、sevenz、bzip2
1.3.0:lz4
1.4.1:deflater
1.5.1:zstd

  
注册中心类型

  默认file,支持file 、nacos 、redis、eureka、zk、consul、etcd3、sofa、custom

  1.6.0版本Sever端支持可同时注册到多个注册中心,以逗号分隔注册中心名

  
二阶段提交重试超时时长

  单位ms,s,m,h,d,对应毫秒,秒,分,小时,天,默认毫秒。默认值-1表示无限重试。公式: timeout =now-globalTransactionBeginTime,true表示超时则不再重试(注: 达到超时时间后将不会做任何重试,有数据不一致风险,除非业务自行可校准数据,否者慎用)

  
事务锁信息存储方式

  file本地文件(不支持HA),db数据库,redis(支持HA);配置为空时,取store.mode配置项值

  1.5.1版本新增,session和lock可分离存储

  
事务回话信息存储方式

  file本地文件(不支持HA),db数据库,redis(支持HA);配置为空时,取store.mode配置项值

  1.5.1版本新增,session和lock可分离存储

  
file模式文件存储buffer最大缓存大小

  默认16384(16kb),单位byte,写入session等数据量大于该值时会抛出异常

  
store.file.sessionReloadReadSize

  file模式文件存储Server节点重启后从备份文件中恢复的session或lock key上限个数

  默认100

  
db模式数据库类型

  mysql、oracle、db2、sqlserver、sybaee、h2、sqlite、access、postgresql、oceanbase;无默认值,store.mode=db时必须指定。

  
db模式数据库url

  store.mode=db时必须指定,在使用mysql作为数据源时,建议在连接参数中加上rewriteBatchedStatements=true(详细原因请阅读附录7)

  
db模式Sever端事务管理全局锁存储表名

  默认distributed_lock,多Sever集群下保证同时只有一个Sever处理提交或回滚

  1.5.1版本新增

  
store.redis.single.host

  单机模式下redis的host,兼容1.4.2之前的版本,该配置为空时选取store.redis.host作为配置项

  1.4.2版本新增

  
store.redis.single.port

  单机模式下redis的port,兼容1.4.2之前的版本,该配置为空时选取store.redis.port作为配置项

  1.4.2版本新增

  
是否启用Metrics

  默认false关闭,在False状态下,所有与Metrics相关的组件将不会被初始化,使得性能损耗最低

  
指标注册器类型

  Metrics使用的指标注册器类型,默认为内置的compact(简易)实现,这个实现中的Meter仅使用有限内存计数,性能高足够满足大多数场景;目前只能设置一个指标注册器实现

  
指标结果Measurement数据输出器列表

  默认prometheus,多个输出器使用英文逗号分割,例如 prometheus,jmx ,目前仅实现了对接prometheus的输出器

  
是否开启数据源自动代理

  true、false,seata-spring-boot-starter(SSBS)专有配置,SSBS默认会开启数据源自动代理,可通过该配置项关闭.

  
是否使用JDK代理作为数据源自动代理的实现方式

  true、false,(SSBS)专有配置,默认false,采用CGLIB作为数据源自动代理的实现方式

  
日志异常输出概率

  默认100,目前用于undo回滚失败时异常堆栈输出,百分之一的概率输出,回滚失败基本是脏数据,无需输出堆栈占用硬盘空间

  
是否上报一阶段成功

  true、false,从1.1.0版本开始,默认false.true用于保持分支事务生命周期记录完整,false可提高不少性能

  
client.rm.lock.retryPolicyBranchRollbackOnConflict

  分支事务与其它全局回滚事务冲突时锁策略

  默认true,优先释放本地锁让回滚成功

  
是否开启saga分支注册

  Saga模式中分支状态存储在状态机本地数据库中,可通过状态机进行提交或回滚,为提高性能可考虑不用向TC注册Saga分支,但需考虑状态机的可用性,默认false

  
tcc拦截器顺序

  默认Ordered.HIGHEST_PRECEDENCE + 1000,保证拦截器在本地事务拦截器之前执行,也可自定义tcc和业务开发的拦截器执行顺序

  1.5.1版本新增

  
全局事务超时时间

  默认60秒,TM检测到分支事务超时或TC检测到TM未做二阶段上报超时后,发起对分支事务的回滚

  1.4.0版本新增

  
TM全局事务拦截器顺序

  默认Ordered.HIGHEST_PRECEDENCE + 1000,保证拦截器在本地事务拦截器之前执行,也可自定义全局事务和业务开发的拦截器执行顺序

  1.5.1版本新增

  
undo log压缩算法

  默认zip,可选NONE(不压缩)、GZIP、ZIP、SEVENZ、BZIP2、LZ4、DEFLATER、ZSTD

  1.4.1版本新增

  
shell:

  

sh ${SEATAPATH}/script/config-center/nacos/nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t 5a3c7d6c-f497-4d68-a71a-2e5e3340b3ca

 

  

 

  参数说明:

  -h: host,默认值 localhost

  -p: port,默认值 8848

  -g: 配置分组,默认值为 SEATA_GROUP

  -t: 租户信息,对应 Nacos 的命名空间ID字段, 默认值为空

  Apollo

  

sh ${SEATAPATH}/script/config-center/apollo/apollo-config.sh -h localhost -p 8070 -e DEV -a seata-server -c default -n application -d apollo -r apollo -t 3aa026fc8435d0fc4505b345b8fa4578fb646a2c

 

  

 

  参数说明:

  -h: host,默认值 localhost

  -p: port,默认值 8070

  -e: 所管理的配置环境,默认值 DEV

  -a: Namespace 所属的 AppId,默认值 seata-server

  -c: 所管理的配置集群名, 一般情况下传入 default 即可。如果是特殊集群,传入相应集群的名称即可,默认值 default

  -n: 所管理的 Namespace 的名称,如果是非 properties 格式,需要加上后缀名,如 sample.yml,默认值 application

  -d: item 的创建人,格式为域账号,也就是 sso 系统的 User ID

  -r: 发布人,域账号,注意:如果 ApolloConfigDB.ServerConfig 中的 namespace.lock.switch 设置为 true 的话(默认是 false),那么该环境不允许发布人和编辑人为同一人。所以如果编辑人是 zhangsan,发布人就不能再是 zhangsan。

  -t: Apollo 管理员在 http://{portal_address}/open/manage.html 创建第三方应用,创建之前最好先查询此AppId是否已经创建。创建成功之后会生成一个 token

  以上参数说明详情请看:

  https://github.com/ctripcorp/apollo/wiki/Apollo开放平台

  Consul

  

sh ${SEATAPATH}/script/config-center/consul/consul-config.sh -h localhost -p 8500

 

  

 

  参数说明:

  -h: host,默认值 localhost

  -p: port,默认值 8500

  Etcd3

  

sh ${SEATAPATH}/script/config-center/etcd3/etcd3-config.sh -h localhost -p 2379

 

  

 

  参数说明:

  -h: host,默认值 localhost

  -p: port,默认值 2379

  python:

  

python ${SEATAPATH}/script/config-center/nacos/nacos-config.py localhost:8848

 

  

 

  

sh ${SEATAPATH}/script/config-center/zk/zk-config.sh -h localhost -p 2181 -z "/Users/zhangchenghui/zookeeper-3.4.14"

 

  

 

  参数说明:

  -h: host,默认值 localhost

  -p: port,默认值 2181

  -z: zk所属路径

  

事务分组说明。

 

  1.事务分组是什么?

  事务分组是seata的资源逻辑,类似于服务实例。在file.conf中的my_test_tx_group就是一个事务分组。

  2.通过事务分组如何找到后端集群?

  首先程序中配置了事务分组(GlobalTransactionScanner 构造方法的txServiceGroup参数),程序会通过用户配置的配置中心去寻找service.vgroupMapping

  .事务分组配置项,取得配置项的值就是TC集群的名称。拿到集群名称程序通过一定的前后缀+集群名称去构造服务名,各配置中心的服务名实现不同。拿到服务名去相应的注册中心去拉取相应服务名的服务列表,获得后端真实的TC服务列表。

  3.为什么这么设计,不直接取服务名?

  这里多了一层获取事务分组到映射集群的配置。这样设计后,事务分组可以作为资源的逻辑隔离单位,当发生故障时可以快速failover。

  

 

  

关于grouplist问题说明下。

 

  1. 什么时候会用到file.conf中的default.grouplist?

  当registry.type=file时会用到,其他时候不读。

  2. default.grouplist的值列表是否可以配置多个?

  可以配置多个,配置多个意味着集群,但当store.mode=file时,会报错。原因是在file存储模式下未提供本地文件的同步,所以需要使用store.mode=db,通过db来共享TC集群间数据

  3. 是否推荐使用default.grouplist?

  不推荐,如问题1,当registry.type=file时会用到,也就是说这里用的不是真正的注册中心,不具体服务的健康检查机制当tc不可用时无法自动剔除列表,推荐使用nacos 、eureka、redis、zk、consul、etcd3、sofa。registry.type=file或config.type=file 设计的初衷是让用户再不依赖第三方注册中心或配置中心的前提下,通过直连的方式,快速验证seata服务。

  4.seata-spring-boot-starter中的配置为什么是grouplist.default,也就是说和file.conf中的default.grouplist写法刚好颠倒了位置?

  由于spring-boot本身配置文件语法的要求,这个地方需要将file.conf中的default.grouplist写成grouplist.default,效果是一样的.

  

 

  

log_status=1的是防御性的,是收到全局回滚请求,但是不确定某个事务分支的本地事务是否已经执行完成了,这时事先插入一条branchid相同的数据,插入的假数据成功了,本地事务继续执行就会报唯一索引冲突自动回滚。

 

  假如插入不成功说明表里有数据这个本地事务已经执行完成了,那么取出这条undolog数据做反向回滚操作。

  

 

  

是否开启spring-boot自动装配,如果开启,则会自动配置seata与spring-boot的集成,包括数据源的自动代理以及GlobalTransactionScanner初始化。

 

  注:1.0版本新特性,需依赖seata-spring-boot-starter。

  

 

  

seata1.1.0版本新加入以下注解,用于开启数据源自动代理功能

 

  @EnableAutoDataSourceProxy

  

 

  
是否使用JDK代理作为数据源自动代理的实现方式

  false、true,默认false,采用CGLIB作为数据源自动代理的实现方式

  


1.对于使用seata-spring-boot-starter的方式,默认已开启数据源自动代理,如需关闭,请配置seata.enableAutoDataSourceProxy=false,该项配置默认为true。

 

   如需切换代理实现方式,请通过seata.useJdkProxy=false进行配置,默认为false,采用CGLIB作为数据源自动代理的实现方式。

  2.对于使用seata-all的方式,请使用@EnableAutoDataSourceProxy来显式开启数据源自动代理功能。如有需要,可通过该注解的useJdkProxy属性进行代理实现方式

   的切换。默认为false,采用CGLIB作为数据源自动代理的实现方式。

  

 

  

关于服务自动降级策略的具体实现介绍:

 

  首先通过读取client.tm.degradeCheck是否为true,决定是否开启自检线程.随后读取degradeCheckAllowTimes和degradeCheckPeriod,确认阈值与自检周期.

  假设degradeCheckAllowTimes=10,degradeCheckPeriod=2000

  那么每2秒钟会进行一个begin,commit的测试,如果失败,则记录连续失败数,如果成功则清空连续失败数.连续错误由用户接口及自检线程进行累计,直到连续失败次数达到用户的阈值,则关闭Seata分布式事务,避免用户自身业务长时间不可用.

  反之,假如当前分布式事务关闭,那么自检线程继续按照2秒一次的自检,直到连续成功数达到用户设置的阈值,那么Seata分布式事务将恢复使用

  

 

  

在store.mode=db,由于seata是通过jdbc的executeBatch来批量插入全局锁的,根据MySQL官网的说明,连接参数中的rewriteBatchedStatements为true时,在执行executeBatch,并且操作类型为insert时,jdbc驱动会把对应的SQL优化成`insert into () values (), ()`的形式来提升批量插入的性能。

 

  根据实际的测试,该参数设置为true后,对应的批量插入性能为原来的10倍多,因此在数据源为MySQL时,建议把该参数设置为true。

 

  website powered by docsite

  愿景Seata 是一款阿里巴巴开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。

  文档Seata 是什么?快速开始报告文档问题在Github上编辑此文档资源博客社区中文版英文版Copyright © 2022 Seata

  以上就是Seata 参数配置(seatateca参数)的详细内容,想要了解更多 Seata 参数配置的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: