Seata 2.x 系列【7】服务端集成 Nacos 2.x

有道无术,术尚可求,有术无道,止于术。

本系列Seata 版本 2.0.0

本系列Spring Boot 版本 3.2.0

本系列Spring Cloud 版本 2023.0.0

源码地址:https://gitee.com/pearl-organization/study-seata-demo

文章目录

    • 1. 概述
    • 2. 安装 Nacos 2.0
    • 3. 配置
      • 3.1 导入配置(不推荐)
      • 3.2 自建配置(推荐)
      • 3.3 注册、配置中心
      • 3.4 验证

1. 概述

在前两篇文档中,我们部署了Seata服务端,并基于Spring Cloud Alibaba微服务框架模拟了电商用户下单操作,接下来学习Seata集成Nacos注册中心、配置中心。
在这里插入图片描述

2. 安装 Nacos 2.0

NacosDynamic Naming and Configuration Service的首字母简称,读音为/nɑ:kəʊs/,从名字也可看出它的两大核心功能,即服务发现、配置管理

Nacos安装文件在GitHub地址下载,Windows系统对应的安装包为nacos-server-2.2.3.zip,下载完成后,解压到相关目录:
在这里插入图片描述
bin目录存放了WindowsLinux启动和停止运行的执行脚本:
在这里插入图片描述
conf配置目录,存放所有的配置文件:
在这里插入图片描述
各配置文件简要说明:

  • 1.4.0-ipv6_support-update.sqlIpv6支持的数据库更新脚本
  • announcement.conf:公告或官方提示
  • application.propertiesNacos服务端是使用Spring Boot开发的,所以这个是服务端应用配置文件
  • application.properties.example:服务端应用演示配置文件,包含了配置项及其相关说明
  • cluster.conf.example:服务端集群环境演示配置文件,包含了配置项及其相关说明
  • derby-schema.sqlDerby数据库初始化脚本
  • mysql-schema.sqlMysql数据库初始化脚本
  • nacos-logback.xmlLogback日志配置文件

target目录就是服务端的Spring Boot jar包,启动脚本也是通过java -jar命令运行的:
image.png

LICENSE授权文件,表明了Nacos使用的是Apache License Version 2.0,在商用时,需要保留该文件。

NOTICE公告文件,表明了Nacos属于阿里巴巴集团,使用时需要遵循相关协议。

启动十分简单,只需要在bin目录打开CMD窗口,输入startup.cmd -m standalone命令即可,standalone代表单机模式运行,非集群模式。启动时,会打印Nacos Banner图,以及版本、启动端口、进程Pid、控制台访问地址等信息:
在这里插入图片描述
访问控制台地址,直接就进入到了Nacos主界面,因为服务端没有开启鉴权,所以是不需要登录的:
在这里插入图片描述
新建一个seata-demo命名空间:
在这里插入图片描述

3. 配置

3.1 导入配置(不推荐)

config-center提供了集成配置中心时,导入配置用的相关脚本:
在这里插入图片描述
nacos目录提供了ShellPython两种脚本:
在这里插入图片描述
README.md文件中提供了使用说明,例如使用Shell导入到Nacos时,包含了交互和非交互两种模式:

## 交互式
sh ${SEATAPATH}/script/config-center/nacos/nacos-config-interactive.sh

Please enter the host of nacos.
请输入nacos的host [localhost]:
>>>
Please enter the port of nacos.
请输入nacos的port [8848]:
>>>
Please enter the group of nacos.
请输入nacos的group [SEATA_GROUP]:
>>>
Please enter the tenant of nacos.
请输入nacos的tenant:
>>>
Please enter the username of nacos.
请输入nacos的username:
>>>
Please enter the password of nacos.
请输入nacos的password:
>>>
Are you sure to continue? [y/n]

## 非交互式
sh ${SEATAPATH}/script/config-center/nacos/nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t 5a3c7d6c-f497-4d68-a71a-2e5e3340b3ca -u username -w password

参数说明:

参数说明
-h主机地址,默认值为localhost
-p端口,默认值为8848
-g配置分组,默认值为EATA_GROUP
-t租户信息,对应Nacos的命名空间,默认值为“”
-u用户名,默认值为“”
-w密码,默认值为“”

\seata\script\config-center\nacos目录,打开Git Bash(因为是Wins系统,无法直接执行Shell),输入导入命令:

 sh nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t f2201f5a-ced8-4d17-b9a3-9ec969c12f70

开始执行:
在这里插入图片描述
导入成功后,可以看到总共有118个配置项:
在这里插入图片描述

3.2 自建配置(推荐)

上述导入配置的方式,每个配置项都新建了一个配置文件,不方便查看管理,我们可以自建一个总的配置文件即可。

seata-demo命名空间下(不要使用公共空间),新建一个配置:

  • Data IDseata.properties
  • GroupSEATA_GROUP
  • 格式:Properies
  • 内容:复制seata\script\config-center\config.txt文件内容

在这里插入图片描述

3.3 注册、配置中心

进入seata\conf目录,修改application.yml文件:
在这里插入图片描述
添加Nacos为注册、配置中心:

server:
  port: 7091

spring:
  application:
    name: seata-server

logging:
  config: classpath:logback-spring.xml
  file:
    path: ${log.home:${user.home}/logs/seata}
  extend:
    logstash-appender:
      destination: 127.0.0.1:4560
    kafka-appender:
      bootstrap-servers: 127.0.0.1:9092
      topic: logback_to_logstash

console:
  user:
    username: seata
    password: seata
seata:
  # 配置中心
  config:
    # 类型: nacos 、 consul 、 apollo 、 zk  、 etcd3
    type: nacos
    nacos:
      # nacos 服务端地址
      server-addr: 127.0.0.1:8848
      # 命名空间
      namespace: 7032916a-19f1-482e-a3eb-8a62226c2e4d
      # 分组
      group: SEATA_GROUP
      # 配置ID
      data-id: seata.properties
  # 注册中心
  registry:
    # 类型: nacos 、 eureka 、 redis 、 zk  、 consul 、 etcd3 、 sofa
    type: nacos
    nacos:
      # 指定注册至nacos注册中心的服务名
      application: seata-server
      server-addr: 127.0.0.1:8848
      group: DEFAULT_GROUP
      namespace: 7032916a-19f1-482e-a3eb-8a62226c2e4d
      # 指定注册至nacos注册中心的集群名
      cluster: default
  store:
    # support: file 、 db 、 redis 、 raft
    mode: file
  #  server:
  #    service-port: 8091 #If not configured, the default is '${server.port} + 1000'
  security:
    secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
    tokenValidityInMilliseconds: 1800000
    ignore:
      urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.jpeg,/**/*.ico,/api/v1/auth/login,/metadata/v1/**

3.4 验证

启动Seata后,在Nacos服务列表可以看到一个名称为seata-server的服务,表示注册成功:
在这里插入图片描述
修改seata.properties中事务存储模式为db(数据库):
在这里插入图片描述
重新启动Seata,可以看到数据库连接失败,说明修改的配置生效,配置中心集成成功:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/464749.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

滑动窗口最大值(leetcode hot100)

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums [1,3,-1,-3,5,3,6,7], k 3 输…

mvnd 安装和配置

mvnd 是 maven 的增强工具,在执行速度方面优于 maven 下载安装: https://github.com/apache/maven-mvnd/releases/ 根据不同的系统下载不同的安装包 配置环境变量 Path 新增 mvnd 安装路径下的 bin 目录 E:\maven-mvnd-1.0-m8-m39-windows-amd64\b…

学会Promise,看这里!!!

前言 众所周知,在JavaScript的世界中,代码都是单线程执行的。由于这个原因,JavaScript中的耗时操作,如网络操作、浏览器事件等,都需要异步执行。这也导致在JavaScript中异步操作是非常频繁且常见的。 异步&#xff1a…

B端能用就行,颜值无所谓?你现在还敢说吗,马上轮到工业HMI

在当前的商业环境下,用户体验和界面设计的重要性越来越受到重视,即使是B端用户也希望能够使用界面美观、易于操作的工业HMI系统。 漂亮的设计不仅可以提高用户的工作效率和满意度,还可以提升产品的竞争力和市场份额。因此,即使是…

Java 面试题之框架

1. Spring 是什么 Sping 是包含了众多工具方法的 IOC 容器,IOC是控制反转,说的是对象的创建和销毁的权利都交给 Spring 来管理了, 它本身又具备了存储对象和获取对象的能力. 。 容器:字面意思,用来容纳某种物品的装置。 比如 L…

力扣题目训练(22)

2024年2月15日力扣题目训练 2024年2月15日力扣题目训练563. 二叉树的坡度637. 二叉树的层平均值643. 子数组最大平均数 I304. 二维区域和检索 - 矩阵不可变154. 寻找旋转排序数组中的最小值 II 2024年2月15日力扣题目训练 2024年2月15日第二十二天编程训练,今天主要…

高并发缓存策略大揭秘:面试必备的缓存更新模式解析

在高并发场景中,缓存能抵挡大量数据库查询,减少数据库压力,对于缓存更新通常有以下几种模式可以选择: cache aside read/write through write behind caching cache aside模式 Cache-aside模式是一种常用的用于管理缓存的模…

【linux深入剖析】操作系统与用户之间的接口:自定义简易shell制作全过程

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1.shell2.自定义shell的准…

如何遍历map

小王学习录 前言遍历map集合1. 使用for-each循环遍历 entrySet()2. 使用迭代器遍历 entrySet()3. 通过 keySet() 遍历4. 使用迭代器遍历 keySet()5. 仅遍历 values() 如果只关心map中的值而不关心键,可以遍历 values():6. 使用流(Streams)进行遍历 总结 …

typeorm导致nestjs通过@Query接收的参数为undefined

依赖版本如下,发现引入typeorm后导致接收不到Query参数,解决办法是将 TypeOrmModule导入语句放到前面就可以了

MT3004·找四边形

题目&#xff1a; 样例输入 4 12 1 2 1 3 1 4 2 1 2 3 2 4 3 1 3 2 3 4 4 1 4 2 4 3 样例输出 12 数据范围 算法设计 涉及的算法 枚举和图论基础 采用邻接矩阵g[N]来存储图&#xff0c;其中vector<ll> g[N]是建立了一个二维的vector 来用sum记录每个点 i 到达点 j…

java集合框架——Map集合概述

前言&#xff1a; 之前接触了单列合集&#xff0c;现在又接触了双列合集。整理下心得&#xff0c;打好基础&#xff0c;daydayup&#xff01;&#xff01; Map集合 Map集合称为双列集合&#xff0c;也被称为“键值对集合”。格式&#xff1a;{key1value1,key2value2...}&#…

网络学习:邻居发现协议NDP

目录 前言&#xff1a; 一、报文内容 二、地址解析----NS/NA 目标的被请求组播IP地址 邻居不可达性检测&#xff1a; 重复地址检测 路由器发现 地址自动配置 默认路由器优先级和路由信息发现 重定向 前言&#xff1a; 邻居发现协议NDP&#xff08;Neighbor Discovery…

MySQL数据库实现增删改查基础操作

准备工作 安装mysql8.0 (安装时一定要记住用户名和密码)安装数据库可视化视图工具Navicat 请注意⚠️⚠️⚠️⚠️ a. 编程类所有软件不要安装在中文目录下 b. Navicat破解版下载安装教程&#xff1a;&#xff08;由于文章审核提示版权问题&#xff0c;链接不方便给出&#xff…

虚拟内存相关知识汇总(程序重定位)

前置知识&#xff1a; Windows的内存可以被分为两个层面&#xff1a;物理内存和虚拟内存。其中&#xff0c;物理内存非常复杂&#xff0c;需要进入到Windows内核级别ring0才能看到。通常在用户模式下&#xff0c;用调试器看到的内存地址都是虚拟地址。 1.虚拟内存的定义 虚拟…

PCIE问题定位000:PCIe需要的定位手段

1、PCIe debug环境说明 本文将以PCIe EP用户逻辑举例&#xff0c;描述PCIe可以添加哪些定位手段。 如图所示&#xff0c;PCIe IP作为endpoint与RC对接&#xff0c;用户实现了应用逻辑&#xff0c;与PCIe IP进行交互&#xff0c;交互信号中data格式为TLP报文格式&#xff0c;且…

Linux_基础指令(一)

目录 1、ls指令 1.1 ls -l 1.2 ls -a 1.3 ls -i 2、pwd指令 3、cd指令 3.1 路径的概念 3.1.1 绝对路径 3.1.2 相对路径 3.2 cd ~ 3.3 cd - 4、touch指令 5、mkdir指令 6、删除系列的指指令 6.1 rmdir 6.2 rm 7、man指令 8、cp指令 9、move指令 结…

【智能算法】斑鬣狗优化算法(SHO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过。 3.代码实现4.参考文献 1.背景 2017年&#xff0c;Dhiman等人受到斑鬣狗自然狩猎行为启发&#xff0c;提出了斑鬣狗优化算法(Spotted Hyena Optimizer, SHO)。 2.算法原理 2.1算法思想 SHO将斑鬣狗狩猎行为分为围捕-狩猎-进攻三…

多线程JUC 第2季 wait和notify唤醒机制

一 wait和notify的区别与相同 1.1 wait和notify的作用 1) 使用wait()、notify()和notifyAII()时需要先对调用对象加锁。否则直接调用的话会抛出 IllegalMonitorStateExceptiona。 2) 调用wait()方法后&#xff0c;线程状态。由RUNNING变为WAITING&#xff0c;并将当前线程放置…

wordpress子比主题7.6美化插件及新手零基础搭建教程源码下载

版权申请&#xff1a;本文A5资源网原创&#xff0c;经原创作者允许转载许可声明。下载地址http://a5.org.cn/a5_ziyuan/39172.html 本源码由网友在某宝二十几元购买&#xff0c;现分享给大家。下图为源码文件及演示图&#xff0c;安装教程比较详细新手零基础就可搭建 子比主…