分布式事务seata在consul中的配置

首先是服务端:下载自信版本的seata-server,我下载的是0.9版本,下载后修改2个文件

分布式事务seata在consul中的配置_第1张图片
QQ图片20191203180107.png

registry.conf:

registry {

# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa

type = "consul"

consul {

cluster = "seata-server" consul中显示的服务名

serverAddr = "10.241.95.107:8500,10.241.95.105:8500,10.241.95.106:8500"

}

}

config {

# file、nacos 、apollo、zk、consul、etcd3

type = "file"

file {

name = "file.conf"

}

}

file.conf:

transport {

# tcp udt unix-domain-socket

type = "TCP"

#NIO NATIVE

server = "NIO"

#enable heartbeat

heartbeat = true

#thread factory for netty

thread-factory {

boss-thread-prefix = "NettyBoss"

worker-thread-prefix = "NettyServerNIOWorker"

server-executor-thread-prefix = "NettyServerBizHandler"

share-boss-worker = false

client-selector-thread-prefix = "NettyClientSelector"

client-selector-thread-size = 1

client-worker-thread-prefix = "NettyClientWorkerThread"

# netty boss thread size,will not be used for UDT

boss-thread-size = 1

#auto default pin or 8

worker-thread-size = 8

}

shutdown {

# when destroy server, wait seconds

wait = 3

}

serialization = "seata"

compressor = "none"

}

service {

#vgroup->rgroup

vgroup_mapping.gzm= "default" 需要于客户端中的设定一致

#only support single node

default.grouplist = "127.0.0.1:8091"

#degrade current not support

enableDegrade = false

#disable

disable = false

#unit ms,s,m,h,d represents milliseconds, seconds, minutes, hours, days, default permanent

max.commit.retry.timeout = "-1"

max.rollback.retry.timeout = "-1"

}

client {

async.commit.buffer.limit = 10000

lock {

retry.internal = 10

retry.times = 30

}

report.retry.count = 5

tm.commit.retry.count = 1

tm.rollback.retry.count = 1

}

## transaction log store

store {

## store mode: file、db

mode = "db"

## database store

db {

## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp) etc.

datasource = "dbcp"

## mysql/oracle/h2/oceanbase etc.

db-type = "mysql"

driver-class-name = "com.mysql.jdbc.Driver"

url = "jdbc:mysql://xxxxx:3306/seata-server"

user = "xxxxx"

password = "xxxxx"

min-conn = 1

max-conn = 3

global.table = "global_table"

branch.table = "branch_table"

lock-table = "lock_table"

query-limit = 100

}

}

lock {

## the lock store mode: local、remote

mode = "remote"

local {

## store locks in user's database

}

remote {

## store locks in the seata's server

}

}

recovery {

#schedule committing retry period in milliseconds

committing-retry-period = 1000

#schedule asyn committing retry period in milliseconds

asyn-committing-retry-period = 1000

#schedule rollbacking retry period in milliseconds

rollbacking-retry-period = 1000

#schedule timeout retry period in milliseconds

timeout-retry-period = 1000

}

transaction {

undo.data.validation = true

undo.log.serialization = "jackson"

undo.log.save.days = 7

#schedule delete expired undo_log in milliseconds

undo.log.delete.period = 86400000

undo.log.table = "undo_log"

}

## metrics settings

metrics {

enabled = false

registry-type = "compact"

# multi exporters use comma divided

exporter-list = "prometheus"

exporter-prometheus-port = 9898

}

support {

## spring

spring {

# auto proxy the DataSource bean

datasource.autoproxy = false

}

}

客户端:

配置文件

spring:

application:

name: test-server

cloud:

alibaba:

seata:

tx-service-group: gzm 需要与服务端一致

consul:

host: localhost

port: 8500

enabled: true

discovery:

enabled: true

service-name: test-server

prefer-ip-address: true

heartbeat:

enabled: true

instance-id: xxxx

pom文件





com.alibaba.cloud

spring-cloud-alibaba-seata

2.1.0.RELEASE





seata-all

io.seata









io.seata

seata-all

${seata.version}


然后导入服务端的配置file.conf和registry.conf即可。

数据库修正:

把seata-server中自带的Sql执行下,同时需要在每个应用的数据库中同样加入undo_log。

以上就是seata在consul中的使用。

PS:seata客户端中任一应用重启都需要将关联的应用一并重启,不然会报i.s.c.r.netty.NettyClientChannelManager : no available server to connect.的错误。

你可能感兴趣的:(分布式事务seata在consul中的配置)