官网地址
- seata官网http://seata.io/zh-cn/docs/overview/what-is-seata.html
- seata Git : https://github.com/seata/seata/releases
基于windows 单机版
注册中心:Nacos
配置中心:Nacos
- 下载地址:https://github.com/seata/seata/releases
这里需要下载seata的服务zip包和源码的zip包
- seata 服务端配置修改
conf 目录下 修改registry.conf文件
注册类型改为nacos,及nacos的相关配置。最好新建一个命名空间专门隔离seata的服务和配置
registry.conf需要修改的部分
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos"
nacos {
application = "seata-server"
serverAddr = "127.0.0.1:8848"
group = "SEATA_GROUP"
namespace = "ce9eb940-4ef2-4e35-8451-2a755b6e196e"
cluster = "default"
username = "nacos"
password = "nacos"
}
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"
nacos {
serverAddr = "127.0.0.1:8848"
namespace = "ce9eb940-4ef2-4e35-8451-2a755b6e196e"
group = "SEATA_GROUP"
username = "nacos"
password = "nacos"
dataId = "seataServer.properties"
}
}
file.conf 需要修改的部分
## transaction log store, only used in seata-server
store {
## store mode: file、db、redis
mode = "db"
## rsa decryption public key
publicKey = ""
## database store property
db {
## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc.
datasource = "druid"
## datasource = "dbcp"
## mysql/oracle/postgresql/h2/oceanbase etc.
dbType = "mysql"
## mysql 5.xx
## driverClassName = "com.mysql.jdbc.Driver"
## mysql 8.0
driverClassName = "com.mysql.cj.jdbc.Driver"
## if using mysql to store the data, recommend add rewriteBatchedStatements=true in jdbc connection param
## url = "jdbc:mysql://127.0.0.1:3306/my-seata?rewriteBatchedStatements=true"
url = "jdbc:mysql://127.0.0.1:3306/my-seata?useUnicode=true&characterEncoding=utf-8&useSSL=false&nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghai"
user = "root"
password = "root"
minConn = 5
maxConn = 100
globalTable = "global_table"
branchTable = "branch_table"
lockTable = "lock_table"
queryLimit = 100
maxWait = 5000
}
}
需要注意mysql8的 driverClassName 和5.x版本写法略有区别
- seata mysql8配置,服务端
根目录下lib/jdbc 放入mysql8的驱动包,这里只放入了mysql8的驱动包,同时放入5.x版本的时候还是会报错
- seata 源码包配置修改,该步骤将seata的配置写入nacos配置中心,存入nacos的数据的配置表
源码包根目录下script\config-center 中的config.txt
script\server\db 目录下,执行mysql.sql seata数据库表
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=root
- 执行命令写入
script\config-center\nacos 目录下执行sh文件,有python环境执行py文件也行。没有的话git环境执行sh文件
- 启动seata服务 seata 服务包下,bin目录执行bat文件;windows环境seata-server.bat -m db
sh nacos-config.sh -h localhost -p 8848 -t 56c94dbe-7fbe-49c2-b456-170001455569 -u nacos -w nacos
-h
nacos’s host
p
nacos’s 端口
-t
nacos namespace命名空间id
-u
nacos用户名
-w
nacos密码
*####
- 服务集成过程中,坑比较多。建议不要用最新版本
<spring-boot.version>2.4.5</spring-boot.version>
<spring-cloud.version>2020.0.2</spring-cloud.version>
<spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<exclusions>
<exclusion>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<version>1.4.2</version>
</dependency>
- 1.4.2 因为序列化问题导致事物不回滚
修改nacos中seata配置。jackson 改为kryo。并引入依赖
client.undo.logSerialization = kryo
<dependency>
<groupId>com.esotericsoftware</groupId>
<artifactId>kryo</artifactId>
<version>4.0.2</version>
</dependency>
<dependency>
<groupId>de.javakaffee</groupId>
<artifactId>kryo-serializers</artifactId>
<version>0.44</version>
</dependency>
修改完配置后,记得要重启seata服务
- bootstrap.yml配置文件不加载问题。引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.0.3</version>
</dependency>
加入后会有日志输出
<!-- 日志输出 2021-06-01 16:42:26.637 INFO 10524 [ main] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-api-provider-dev.yml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-api-provider.yml,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-api-provider,DEFAULT_GROUP'}]-->