Seata1.4集成Springboot + Nacos(二):server端环境部署

本文档详细介绍了如何使用Seata 1.4.0、Nacos 1.3.2和SpringBoot 2.1.1在MySQL 5.7环境下进行分布式事务管理服务的部署。包括创建数据库、配置Nacos、启动Seata服务端等步骤,提供了一套完整的配置和脚本示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文版本使用:seata 1.4.0、nacos 1.3.2、springboot 2.1.1、mysql 5.7,其中springboot、nacos和mysql是安装和使用网上一搜便是,不再赘述。

目录

一、创建数据库

二、将配置导入到nacos配置中心

三、安装seata服务端启动包


 

一、创建数据库

1.创建数据库:seata(utf8)

2.创建表:

-- -------------------------------- The script used when storeMode is 'db' --------------------------------
-- the table to store GlobalSession data
CREATE TABLE IF NOT EXISTS `global_table`
(
    `xid`                       VARCHAR(128) NOT NULL,
    `transaction_id`            BIGINT,
    `status`                    TINYINT      NOT NULL,
    `application_id`            VARCHAR(32),
    `transaction_service_group` VARCHAR(32),
    `transaction_name`          VARCHAR(128),
    `timeout`                   INT,
    `begin_time`                BIGINT,
    `application_data`          VARCHAR(2000),
    `gmt_create`                DATETIME,
    `gmt_modified`              DATETIME,
    PRIMARY KEY (`xid`),
    KEY `idx_gmt_modified_status` (`gmt_modified`, `status`),
    KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(
    `branch_id`         BIGINT       NOT NULL,
    `xid`               VARCHAR(128) NOT NULL,
    `transaction_id`    BIGINT,
    `resource_group_id` VARCHAR(32),
    `resource_id`       VARCHAR(256),
    `branch_type`       VARCHAR(8),
    `status`            TINYINT,
    `client_id`         VARCHAR(64),
    `application_data`  VARCHAR(2000),
    `gmt_create`        DATETIME(6),
    `gmt_modified`      DATETIME(6),
    PRIMARY KEY (`branch_id`),
    KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(
    `row_key`        VARCHAR(128) NOT NULL,
    `xid`            VARCHAR(96),
    `transaction_id` BIGINT,
    `branch_id`      BIGINT       NOT NULL,
    `resource_id`    VARCHAR(256),
    `table_name`     VARCHAR(32),
    `pk`             VARCHAR(36),
    `gmt_create`     DATETIME,
    `gmt_modified`   DATETIME,
    PRIMARY KEY (`row_key`),
    KEY `idx_branch_id` (`branch_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

 

二、将配置导入到nacos配置中心

 

1.到https://github.com/seata/seata/tree/develop/script/config-center下载配置:

  • /config.txt
  • /nacos/nacos-config.sh

2.将两个文件放到同一目录

3.修改config.txt配置:

server端参数配置说明:https://seata.io/zh-cn/docs/user/configurations.html

3.1.配置事务会话信息存储方式为db,并配置mysql连接信息

  • store.mode=db
  • store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true
  • store.db.user=test
  • store.db.password=test.123

3.2.新增集成seata的client的service.vgroupMapping(有几个业务服务就增加几个mapping,请记号这几个红字,要与client端的配置一一对应的)

  • (新增一行)service.vgroupMapping.demo-web-seata-service-group=default
  • (新增一行)service.vgroupMapping.demo-goods-seata-service-group=default

4.上nacos创建新的命名空间:seata-server,并存好命名空间id:c38bf03a-2ee2-4ee6-834a-2db99dbec528;作为seata-server的配置中心

5.执行导入脚本:

 

 

sh nacos-config.sh -h 127.0.0.1 -p 8848 -g SEATA_GROUP -u nacos -w nacos -t c38bf03a-2ee2-4ee6-834a-2db99dbec528

参数说明:

-h nacos地址

-p nacos端口,默认 8848

-g nacos配置组

-t naocos的命名空间id

-u -w 登录nacos的账号、密码

6.检查nacos上新命名空间seata-server下,新增了起码八十个配置项,则继续往下。

 

三、安装seata服务端启动包

1.在服务器上下载seata服务端

# 到某个目录下
cd /opt
# 下载server压缩包
wget https://github.com/seata/seata/releases/download/v1.4.0/seata-server-1.4.0.zip
# 解压
unzip seata-server-1.4.0.zip
# 进入seata的配置conf目录
cd /opt/seata/conf
# 重命名file.conf备份
mv file.conf file.conf.bak

 

 

2.修改配置registry.conf

 

vim  /opt/seata/conf/registry.conf

# 1.将registry下的type改为nacos
# 2.改registry下的nacos的配置
nacos {
    application = "seata-server"
    serverAddr = "127.0.0.1:8848"
    group = "SEATA_GROUP"
    namespace = "c38bf03a-2ee2-4ee6-834a-2db99dbec528"
    cluster = "default"
}

# 3.将config下的type改为nacos
# 4.改config下的nacos的配置
 nacos {
    serverAddr = "127.0.0.1:8848"
    namespace = "c38bf03a-2ee2-4ee6-834a-2db99dbec528"
    group = "SEATA_GROUP"
  }

3.到seata根目录启动服务

sh bin/seata-server.sh

4.查看日志是否启动成功

 

5.检查nacos服务列表已有新的服务“seata-server”,则服务端ok

 

 

其他:

1.生产环境部署时,一般都以集群模式部署,具体请看官网文档啦(如有需要的朋友,可以回复一下,我再抽空整理一下)。

 

官方部署指南:http://seata.io/zh-cn/docs/ops/deploy-guide-beginner.html

官方部署脚本:https://github.com/seata/seata/tree/1.4.0/script

参考博客:https://blog.youkuaiyun.com/calonmo/article/details/106630754

官方高可用部署:https://seata.io/zh-cn/docs/ops/deploy-ha.html

 

 

 

 

 

 

 

 

### 集成概述 在构建微服务架构时,Spring Boot与Dubbo和Nacos集成能够提供强大的服务治理能力。通过这种组合,不仅可以简化开发流程,还能提高系统的可维护性和灵活性[^1]。 ### 使用Nacos作为注册中心和服务发现工具 Nacos作为一个动态服务发现、配置管理和服务中心,非常适合用于微服务体系中的服务注册与发现工作。其主要特点在于支持多种协议的服务发现方式(如DNS和RPC),并且具备良好的跨语言兼容性。 对于希望利用Nacos来完成这一任务的应用程序来说,在pom.xml文件中加入相应的依赖项是必不可少的第一步: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo-nacos-discovery</artifactId> </dependency> ``` 接着需要修改`application.properties`或`yaml`配置文件以指定Nacos服务器的位置以及其他必要的参数设置: ```properties spring.application.name=demo-service-provider spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 dubbo.protocol.name=dubbo dubbo.protocol.port=-1 dubbo.registry.address=nacos://127.0.0.1:8848 ``` 上述配置指定了应用程序名称、Nacos服务器地址以及Dubbo的相关属性。其中特别需要注意的是`dubbo.protocol.port`被设为-1表示由框架自动分配口号;而`dubbo.registry.address`则表明使用Nacos作为默认注册中心。 ### 利用Dubbo实现远程过程调用(RPC) 为了让两个不同节点间可以通过网络互相通信并执行对方的方法调用,还需要引入另一个重要的组件——Dubbo。该框架提供了高效可靠的RPC机制,允许开发者轻松定义接口并通过简单的注解形式暴露给其他服务消费[^2]。 假设有一个名为`DemoService`的服务接口及其具体实现类,则可以在Provider按照如下方式进行编码: #### Provider代码示例 创建一个普通的Java接口作为对外提供的API入口: ```java public interface DemoService { String sayHello(String name); } ``` 随后编写其实现逻辑,并加上适当标注使其成为可供发布的服务实例之一: ```java @Service(version = "1.0.0") // 这里的@Service来自org.apache.dubbo.config.annotation.Service public class DemoServiceImpl implements DemoService { @Override public String sayHello(String name) { return "Hello, " + name; } } ``` 最后一步是在Consumer声明对该服务的需求即可发起请求获取响应数据: #### Consumer代码示例 同样地先定义好所需访问的目标接口签名: ```java @Reference(version = "1.0.0", check=false) private DemoService demoService; // 调用方法处... System.out.println(demoService.sayHello("world")); ``` 这里使用的`@Reference`注解来自于`org.apache.dubbo.config.annotation.Reference`包下,用来指示当前成员变量所代表的就是远某个已发布出来的对象引用。 ### 结合Seata处理分布式事务 当涉及到多个数据库操作或者其他资源协调场景时,确保整个业务流程的一致性就显得尤为重要了。此时可以考虑借助于像Seata这样的分布式事务解决方案来进行全局控制[^3]。 不过这部分内容相对独立一些,因此如果读者感兴趣的话建议单独查阅相关资料深入了解具体的实施细节。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值