当前位置:   article > 正文

Seata融合Nacos_seata nacos配置

seata nacos配置

目录

Seata远端配置

步骤1

步骤2

步骤3

步骤4

1.找到seata主目录

2.进入conf目录下编辑application.yml文件

3.修改27行,将config配置中心改成nacos,可参考application.example.yml文件

4.在修改下面的registry的type为nacos

       5.将store下的mode 参数注释掉,已经读取了nacos 无需配置

      6.进入bin目录并启动seata-server.bat

步骤5

所需的依赖:

seata YAML配置参考


Seata远端配置

Seata是一款开源的分布式事务解决方案,而Nacos是一款分布式配置中心。要将Seata与Nacos进行融合,可以按照以下步骤操作:

从Seata官网仓库下载源码包,并解压,建表。

官网地址: Seata-Server版本历史 | Apache Seata

Seata Server 共有以下 3 种存储模式(store.mode):

模式说明准备工作
file文件存储模式,默认存储模式; 该模式为单机模式,全局事务的会话信息在内存中读写,并持久化本地文件 root.data,性能较高-
db数据库存储模式; 该模式为高可用模式,全局事务会话信息通过数据库共享,性能较低。建数据库表
redis缓存处处模式; Seata Server 1.3 及以上版本支持该模式,性能较高,但存在事务信息丢失风险配置 redis 持久化配置

在 db 模式下,我们需要针对全局事务的会话信息创建以下 3 张数据库表。

  • 全局事务表,对应的表为:global_table

  • 分支事务表,对应的表为:branch_table

  • 全局锁表,对应的表为:lock_table

步骤1

在 MySQL 中,创建一个名为 seata 的数据库实例,并在该数据库内执行以下 SQL。

该SQL也可以在seata目录下:script\server\db 中找到mysql.sql

步骤2

每个微服务对应的数据库中添加回滚日志表UNDO_LOG:

UNDO_LOG必须在每个业务数据库(具体微服务连接的数据库)中出现,用于保存回滚操作数据。

  • 当全局事务提交时,对应的UNDO_LOG记录直接删除。

  • 当全局事务回滚时,通过该表回滚到以前的数据,并删除UNDO_LOG记录。

  1. -- ----------------------------
  2. -- Table structure for undo_log
  3. -- ----------------------------
  4. drop table if exists `undo_log`;
  5. CREATE TABLE `undo_log` (
  6. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  7. `branch_id` bigint(20) NOT NULL COMMENT '分支事务ID',
  8. `xid` varchar(100) NOT NULL COMMENT '全局事务ID',
  9. `context` varchar(128) NOT NULL COMMENT '上下文',
  10. `rollback_info` longblob NOT NULL COMMENT '回滚信息',
  11. `log_status` int(11) NOT NULL COMMENT '状态,0正常,1全局已完成',
  12. `log_created` datetime NOT NULL NULL COMMENT '创建时间',
  13. `log_modified` datetime NOT NULL NULL COMMENT '修改时间',
  14. `ext` varchar(100) DEFAULT NULL,
  15. PRIMARY KEY (`id`),
  16. UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
  17. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
步骤3

在Seata的script/config-center路径下获取config.txt文件。

复制前可以按需修改配置

需要修改的地方有:

26行:service.vgroupMapping.default_tx_group=default

此处事务组default_tx_group可以自定义命名

对应项目中application.yml

  1. seata:
  2. tx-service-group: huye_tx_group    #和这里匹配就行
  3. service:
  4.   vgroup-mapping:
  5.     huye_tx_group: default  # 这里也是

69行:

store.mode=file store.lock.mode=file store.session.mode=file

都修改成

store.mode=db store.lock.mode=db store.session.mode=db

84行:

将db相关的数据源参数修改正确

注意这里跟你上面的数据库名对应上

 在Nacos配置中心里新建seataServer.properties配置,分组名SEATA_GROUP,并将config.txt文件内的内容复制进去。

如果没有安装Nacos的可以访问:Windows如何安装Nacos-CSDN博客

他可能会弹出这个页面,是没有关系的,点击确认就行

步骤4

修改Seata服务的配置,具体包括:

1.找到seata主目录
2.进入conf目录下编辑application.yml文件
3.修改27行,将config配置中心改成nacos,可参考application.example.yml文件

  1. seata:
  2.   config:
  3.     # support: nacos, consul, apollo, zk, etcd3
  4.     type: nacos
  5.     nacos:
  6.       server-addr: 127.0.0.1:8848
  7.       namespace:
  8.       group: SEATA_GROUP
  9.       username:
  10.       password:
  11.       ##if use MSE Nacos with auth, mutex with username/password attribute
  12.       #access-key: ""
  13.       #secret-key: ""
  14.       data-id: seataServer.properties
4.在修改下面的registry的type为nacos

  1. registry:
  2.     # support: nacos, eureka, redis, zk, consul, etcd3, sofa
  3.     type: nacos
  4.     nacos:
  5.       application: seata-server
  6.       server-addr: 127.0.0.1:8848
  7.       group: SEATA_GROUP
  8.       namespace:
  9.       cluster: default
  10.       username:
  11.       password:
       5.将store下的mode 参数注释掉,已经读取了nacos 无需配置

      6.进入bin目录并启动seata-server.bat

     如图所示就代表已经配置好了

步骤5

application.yml配置 如下:

  1. seata:
  2. enabled: true
  3. application-id: ${spring.application.name}
  4. tx-service-group: huye_tx_group #此处配置自定义的seata事务分组名称
  5. enable-auto-data-source-proxy: true #开启数据库代理
  6. service:
  7. vgroup-mapping:
  8. huye_tx_group: default
  9. config:
  10. type: nacos
  11. nacos:
  12. server-addr: 127.0.0.1:8848
  13. namespace:
  14. group: SEATA_GROUP
  15. data-id: seataServer.properties
  16. registry:
  17. type: nacos
  18. nacos:
  19. application: seata-server
  20. server-addr: 127.0.0.1:8848
  21. namespace:
  22. cloud:
  23. nacos:
  24. discovery:
  25. server-addr: 127.0.0.1:8848 # nacos注册中心地址
  26. namespace: private # 命名空间
  27. group: SEATA_GROUP
  28. sentinel:
  29. transport:
  30. dashboard: 127.0.0.1:8080 # Sentinel控制台地址
  31. eager: true

所需的依赖:

  1. <!--seata Cloud依赖-->
  2. <dependency>
  3. <groupId>com.alibaba.cloud</groupId>
  4. <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
  5. <!--排除seata-spring-boot-starter-->
  6. <exclusions>
  7. <exclusion>
  8. <artifactId>seata-spring-boot-starter</artifactId>
  9. <groupId>io.seata</groupId>
  10. </exclusion>
  11. </exclusions>
  12. </dependency>
  13. <dependency>
  14. <groupId>io.seata</groupId>
  15. <artifactId>seata-spring-boot-starter</artifactId>
  16. <version>2.0.0</version>
  17. </dependency>


seata YAML配置参考

seata.enabled:是否启用Seata。
seata.application-id:Seata应用ID,通常使用Spring应用程序名称。
seata.tx-service-group:Seata事务服务组ID,通常使用${spring.application.name}-fescar-service-group。
seata.service.vgroup-mapping:Seata服务分组映射。
seata.service.group-default:Seata服务默认配置。
seata.registry.type:Seata注册中心类型,这里使用的是Nacos。
seata.registry.nacos.server-addr:Nacos注册中心地址,从Spring Cloud配置中心获取。
seata.registry.nacos.namespace:Nacos注册中心命名空间,从Spring Cloud配置中心获取。
seata.registry.nacos.group:Nacos注册中心分组。
seata.registry.nacos.cluster:Nacos注册中心集群。
seata.config.type:Seata配置中心类型,这里使用的是Nacos。
seata.config.nacos.server-addr:Nacos配置中心地址,从Spring Cloud配置中心获取。
seata.config.nacos.namespace:Nacos配置中心命名空间,从Spring Cloud配置中心获取。
seata.config.nacos.group:Nacos配置中心分组。
seata.config.nacos.cluster:Nacos配置中心集群。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/813858
推荐阅读
相关标签
  

闽ICP备14008679号