【Seata、Nacos】Win安装Seata,并整合Nacos

一、环境准备

二、Seata介绍

相关网站介绍:Seata官网Seata开发文档
本文介绍:本文章使用Seata的1.4.2版本,下载seata-server-1.4.2.zip其他版本下载
在这里插入图片描述

二、Seata配置Nacos

1、解压目录后

在这里插入图片描述

2、修改conf文件中的registry.conf文件,由于配置都使用Nacos,所以可以不用修改file.conf文件。

# 注册
registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  # 类型,使用nacos
  type = "nacos"
  loadBalance = "RandomLoadBalance"
  loadBalanceVirtualNodes = 10

  # nacos配置
  nacos {
    # 服务名称,服务启动后会显示在nacos的服务中心
    application = "seata-server"
    # nacos地址
    serverAddr = "127.0.0.1:7001"
    # 分组
    group = "SEATA_GROUP"
    # 命名空间
    namespace = "seata"
    # 用户名,如果nacos开启了授权验证则需要配置用户名
    # username = "nacos"
    # 密码,如果nacos开启了授权验证则需要配置密码
    # password = "nacos"
  }
}

# 配置文件
config {
  # 使用nacos管理配置文件
  type = "nacos"

  nacos {
    # nacos地址
    serverAddr = "127.0.0.1:7001"
    # 分组
    group = "SEATA_GROUP"
    # 命名空间
    namespace = "seata"
    # Nacos中的dataId 
    dataId = "seataServer"
    # 用户名,如果nacos开启了授权验证则需要配置用户名
    # username = "nacos"
    # 密码,如果nacos开启了授权验证则需要配置密码
    # password = "nacos"
  }
}

3、在Nacos中添加Seata所需的对应配置

create database  seata_config character set utf8;

use seata_config;
-- MySQL dump 10.13  Distrib 5.7.36, for Win64 (x86_64)
--
-- Host: 127.0.0.1    Database: seata_config
-- ------------------------------------------------------
-- Server version	5.7.37

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `branch_table`
--

DROP TABLE IF EXISTS `branch_table`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `branch_table` (
                                `branch_id` bigint(20) NOT NULL,
                                `xid` varchar(128) NOT NULL,
                                `transaction_id` bigint(20) DEFAULT NULL,
                                `resource_group_id` varchar(32) DEFAULT NULL,
                                `resource_id` varchar(256) DEFAULT NULL,
                                `branch_type` varchar(8) DEFAULT NULL,
                                `status` tinyint(4) DEFAULT NULL,
                                `client_id` varchar(64) DEFAULT NULL,
                                `application_data` varchar(2000) DEFAULT NULL,
                                `gmt_create` datetime(6) DEFAULT NULL,
                                `gmt_modified` datetime(6) DEFAULT NULL,
                                PRIMARY KEY (`branch_id`),
                                KEY `idx_xid` (`xid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `branch_table`
--

LOCK TABLES `branch_table` WRITE;
/*!40000 ALTER TABLE `branch_table` DISABLE KEYS */;
/*!40000 ALTER TABLE `branch_table` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `distributed_lock`
--

DROP TABLE IF EXISTS `distributed_lock`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `distributed_lock` (
                                    `lock_key` char(20) NOT NULL,
                                    `lock_value` varchar(20) NOT NULL,
                                    `expire` bigint(20) DEFAULT NULL,
                                    PRIMARY KEY (`lock_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `distributed_lock`
--

LOCK TABLES `distributed_lock` WRITE;
/*!40000 ALTER TABLE `distributed_lock` DISABLE KEYS */;
INSERT INTO `distributed_lock` VALUES ('HandleAllSession',' ',0);
/*!40000 ALTER TABLE `distributed_lock` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `global_table`
--

DROP TABLE IF EXISTS `global_table`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `global_table` (
                                `xid` varchar(128) NOT NULL,
                                `transaction_id` bigint(20) DEFAULT NULL,
                                `status` tinyint(4) NOT NULL,
                                `application_id` varchar(32) DEFAULT NULL,
                                `transaction_service_group` varchar(32) DEFAULT NULL,
                                `transaction_name` varchar(128) DEFAULT NULL,
                                `timeout` int(11) DEFAULT NULL,
                                `begin_time` bigint(20) DEFAULT NULL,
                                `application_data` varchar(2000) DEFAULT NULL,
                                `gmt_create` datetime DEFAULT NULL,
                                `gmt_modified` datetime DEFAULT NULL,
                                PRIMARY KEY (`xid`),
                                KEY `idx_status_gmt_modified` (`status`,`gmt_modified`),
                                KEY `idx_transaction_id` (`transaction_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `global_table`
--

LOCK TABLES `global_table` WRITE;
/*!40000 ALTER TABLE `global_table` DISABLE KEYS */;
/*!40000 ALTER TABLE `global_table` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `lock_table`
--

DROP TABLE IF EXISTS `lock_table`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `lock_table` (
                              `row_key` varchar(128) NOT NULL,
                              `xid` varchar(128) DEFAULT NULL,
                              `transaction_id` bigint(20) DEFAULT NULL,
                              `branch_id` bigint(20) NOT NULL,
                              `resource_id` varchar(256) DEFAULT NULL,
                              `table_name` varchar(32) DEFAULT NULL,
                              `pk` varchar(36) DEFAULT NULL,
                              `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0:locked ,1:rollbacking',
                              `gmt_create` datetime DEFAULT NULL,
                              `gmt_modified` datetime DEFAULT NULL,
                              PRIMARY KEY (`row_key`),
                              KEY `idx_status` (`status`),
                              KEY `idx_branch_id` (`branch_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `lock_table`
--

LOCK TABLES `lock_table` WRITE;
/*!40000 ALTER TABLE `lock_table` DISABLE KEYS */;
/*!40000 ALTER TABLE `lock_table` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2022-03-18 15:34:49

在这里插入图片描述

4、启动服务,双击bin文件夹中的seata-server.bat

问题1:双击之后直接闪退,可通过cmd命令启动seata-server.bat,这样就能看到具体错误信息。错误提示翻译后“Java HotSpot(TM)客户端VM警告:MaxNewSize(2097152k)等于或大于整个堆(2097152k)”。
在这里插入图片描述
解决问题1:修改seata-server.bat文件中的环境参数,修改为电脑所支持的大小。我修改为了512M。
在这里插入图片描述
启动成功后效果:
在这里插入图片描述
在这里插入图片描述

三、问题总结

### Seata 配合 Nacos 的使用教程与配置指南 #### 一、SeataNacos 的简介 Seata 是一个分布式事务解决方案,提供 ACID 能力以支持微服务架构中的分布式事务处理[^3]。Nacos 则是一个用于动态服务发现、配置管理和服务管理的平台,可以作为 Seata 的注册中心和配置中心。 --- #### 二、Seata 配置 Nacos 注册中心的步骤 ##### 1. 安装启动 Nacos 服务 确保已经成功安装运行 Nacos 服务。可以通过官方文档或 Docker 方式快速部署 Nacos 实例。 ##### 2. 修改 Nacos 配置文件 编辑 `registry.conf` 文件,将其注册方式设置为 Nacos: ```properties registry { type = "nacos" nacos { serverAddr = "localhost:8848" # 替换为实际地址 namespace = "" cluster = "default" } } config { type = "nacos" nacos { serverAddr = "localhost:8848" # 替换为实际地址 namespace = "" cluster = "default" } } ``` 上述配置指定了 Nacos 地址和其他必要参数,以便 Seata 可以连接到 Nacos 完成服务注册和配置拉取操作[^2]。 --- #### 三、Spring Boot 应用中集成 SeataNacos ##### 1. 添加依赖 在项目的 `pom.xml` 中引入必要的依赖库: ```xml <dependency> <groupId>io.seata</groupId> <artifactId>seata-spring-boot-starter</artifactId> <version>${seata.version}</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>${nacos.version}</version> </dependency> ``` ##### 2. 配置 Spring Boot 属性 在 `application.yml` 或 `application.properties` 文件中添加以下内容: ```yaml spring: cloud: nacos: discovery: server-addr: localhost:8848 # 替换为实际地址 config: server-addr: localhost:8848 # 替换为实际地址 file-extension: yaml seata: enabled: true service: vgroup-mapping: my_test_tx_group: default # 自定义事务组名称 grouplist: default: localhost:8091 # TM/RM 默认监听端口 registry: type: nacos nacos: application: seata-server server-addr: localhost:8848 # 替换为实际地址 config: type: nacos nacos: server-addr: localhost:8848 # 替换为实际地址 ``` 以上配置实现了将 Seata 的服务注册到 NacosNacos 获取配置信息的功能[^1]。 --- #### 四、Seata Saga 模式的简单介绍 除了 AT 模式外,Seata 还支持 Saga 模式,这是一种基于状态机的编排模式,适用于复杂的业务场景。Saga 模式通过事件驱动机制实现跨服务的事务协调[^4]。 如果需要启用 Saga 模式,则需额外配置状态机脚本(通常是 JSON 格式),通过 Seata 提供的工具加载这些脚本。 --- #### 五、注意事项 - **安全性**:在生产环境中,应更改默认的用户名和密码 (`nacos/nacos`),以增强系统的安全性。 - **高可用性**:为了提高可靠性,建议使用集群版 Nacos 来替代单节点版本。 - **日志调试**:遇到问题时,可通过调整日志级别来排查错误原因。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值