nacos1.2.0整合seata1.2.0最新版(含各种配置爬坑过程)

前言:最近搭建分布式事务解决方案,由于tx-lcn此项目由于资金原因,更新停止,于是乎找了另一种解决方法,阿里的seata1.2.0,在网上找了许多配置方案均以失败告终,现在自己通过查看寥寥无几的十几篇文章,终于找到能完整搭建新版本运行起来的方案

准备工作:

搭建基于docker下nacos1.2.0容器安装 docker基于nacos-1.2.0安装

搭建基于docker下seata1.2.0容器安装 docker基于seata1.2.0安装

注意事项:原理上来说,基于seata1.2.0容器配置后,修改容器内部registry.conf以及file.conf配置文件,只是让容器加载此文件进行对注册中心的注册,以及启动时候所需加载的mysql服务,1.1.0版本后,所有关于配置文件,有原来的xx_tx配置方法变成xxTx方式,譬如

driver-class-name改为driverClassName,service-vgroup-mapping改为service.vgroupMapping等,否则会报

no registry service等错误.

搭建springboot项目里需要的pom文件,注意了使用springboot2.1.7这类2.1.x的版本是不行,启动起来就报错,seata服务有关配置也是很严格区分版本,

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.6.RELEASE</version>
		<relativePath/>
	</parent>
	<groupId>com.vincent</groupId>
	<artifactId>spring_cloud_seata_order</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>spring_cloud_seata_order</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
		<nacos.version>2.2.1.RELEASE</nacos.version>
		<feign.version>2.2.2.RELEASE</feign.version>
	</properties>

	<dependencies>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>

<!--Seata 包-->
		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
			<version>2.2.1.RELEASE</version>
			<exclusions>
				<exclusion>
					<groupId>io.seata</groupId>
					<artifactId>seata-all</artifactId>
				</exclusion>
				<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.2.0</version>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.22</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!--openfeign 支持解析MVC注解接口-->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
			<version>${feign.version}</version>
		</dependency>
		<!--Nacos配置-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
			<version>2.2.1.RELEASE</version>
		</dependency>

		<!--ORM-->
		<!-- 集成mysql -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.3.1.tmp</version>
			<exclusions>
				<exclusion>
					<groupId>com.github.jsqlparser</groupId>
					<artifactId>jsqlparser</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>


	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

 

ps:由于1.1.0配置可以不需要registry.conf以及file.conf原因在于,yml整合了registry.conf,而且file.conf配置,由于通过nacos中心,所以是根据nacos里的配置列表读取的

yml配置如下:

server:
  port: 11100
spring:
  application:
    name: order
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.116.130:3306/order?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
    username: root
    password: 123456
  cloud:
    nacos:
      discovery:
        server-addr: http://192.168.116.130:8848
    alibaba:
      seata:
        tx-service-group: order-service-group
##seata配置,相当于registry.conf
seata:
  client:
    support:
      spring:
        datasource-autoproxy: false
  tx-service-group: order-service-group
  service:
    disable-global-transaction: false
    grouplist:
      default: 192.168.116.130:8091
  registry:
    type: nacos
    nacos:
      server-addr: 192.168.116.130
  config:
    nacos:
      server-addr: 192.168.116.130
    type: nacos

mybatis-plus:
  #  configuration:mybatis.mapper-locations=classpath:mapper/*.xml
  #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath:/mybatis/mappers/obj/*Mapper.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.vincent.spring_cloud_seata_order.entity
  global-config:
    # 数据库相关配置
    db-config:
      #主键类型  AUTO:"数据库ID自增", INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
      id-type: UUID
      #字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断"
      field-strategy: not_empty
      #驼峰下划线转换
      column-underline: true
      #数据库大写下划线转换
      #capital-mode: true
      # 逻辑删除配置
      logic-delete-value: 0
      logic-not-delete-value: 1
      db-type: mysql
    #刷新mapper 调试神器
    refresh: true
management:
  endpoints:
    web:
      exposure:
        include: "*"

关于配置文件几点注意事项: 这个版本在这里,servece:grouplist一个map数组,需要key-value方式读取,所以grouplist下面

是一个key-value的读取方式,否则会报unconvert to map<String,String>异常

service:
    grouplist:
      default: 192.168.116.130:8091

启动之后如下

如果出现箭头所指的连接seata服务成功,注册RM成功,注册TM成功那么恭喜你,完美运行起来

如果我的文章帮到各位同志们,请你们点个赞给点鼓励

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Nacos是一个用于动态服务发现、配置管理和服务管理的开源项目,而Seata则是一个开源的分布式事务解决方案。将NacosSeata进行整合可以实现在分布式环境下的事务一致性管理和服务注册与发现。 在整合NacosSeata的Demo中,我们首先需要搭建一个分布式的环境。可以使用Docker来快速搭建,通过Docker容器分别部署NacosSeata的服务。 1. 首先运行Nacos的容器,并将其设置为注册中心。可以通过在Nacos容器内运行以下命令来启动Nacos服务: ``` docker run --name nacos_server -d -e MODE=standalone -p 8848:8848 nacos/nacos-server ``` 2. 接下来,运行Seata的容器,并将其设置为Seata的事务协调器。可以通过在Seata容器内运行以下命令来启动Seata服务: ``` docker run --name seata_server -d -p 8091:8091 seataio/seata-server ``` 3. 在Demo中,我们需要定义业务服务和订单服务。在业务服务中,我们使用Nacos提供的服务注册和发现能力,将业务服务注册到Nacos注册中心。在订单服务中,我们使用Seata实现分布式事务管理。业务服务通过调用订单服务来完成事务操作。 4. 在业务服务的配置文件中,将Nacos注册中心的地址配置好,以便业务服务可以注册和发现其他服务。 5. 在订单服务的配置文件中,将Seata事务协调器的地址和端口配置好,以便订单服务可以与Seata进行事务管理。 使用NacosSeata进行整合后,可以实现业务服务和订单服务之间的分布式事务管理。通过在业务服务中注册到Nacos注册中心,可以动态发现和调用订单服务。同时,在订单服务中,Seata能够提供分布式事务一致性的保障,避免了分布式事务的难题。 总之,通过整合NacosSeata,在分布式环境中实现了服务注册与发现和分布式事务的管理。这样能够更好地保证系统的可用性和一致性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值