Seata 2.x 系列【12】高可用集群部署

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

本系列Seata 版本 2.0.0

本系列Spring Boot 版本 3.2.0

本系列Spring Cloud 版本 2023.0.0

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

文章目录

    • 1. 概述
    • 2. 搭建演示
      • 2.1 注册中心、配置中心、数据库
      • 2.2 安装文件
      • 2.3 修改配置
      • 2.4 启动集群

1. 概述

Seata在生产环境应当采用集群部署,主节点宕机后继续正常运行,常见的方式是通过部署多个提供相同服务的节点。不然一旦单机的Seata服务端宕机,接入的业务系统也会变得不可用。

2. 搭建演示

搭建主从集群,每个集群分组包含两个服务端实例,业务系统连接主集群分组,当集群不可用时,切换到备用集群分组,部署架构图如下:
在这里插入图片描述

2.1 注册中心、配置中心、数据库

Seata集群依赖于注册中心,需要通过注册实时感知主节点的上下线情况,以便及时切换到可用的节点,这里使用Nacos作为注册中心。

Seata集群依赖于数据库,使用计算与存储分离的架构,将数据存储在共享的存储中间件中,任何一个节点都可以通过访问该公共存储区域获取所有节点操作的事务信息,从而实现高可用的能力。也就是之前有说过的事务会话存储,支持dbredisraft,但是由于目前raft集成不够成熟,db需要建库建表,这里使用redis

Seata可不依赖配置中心,但是最好还是使用配置中心,因为集群所有节点的配置项需要保持一致,这里使用Nacos作为配置中心。

综上,这里使用Nacos作为注册、配置中心,redis作为事务会话存储中间件,关于它们的搭建这里就不赘述了。

2.2 安装文件

这里直接使用一台电脑模拟集群环境,将Seata 2.x 系列【7】服务端集成 Nacos 2.x中配置好的Seata部署文件,复制到下面目录中:

├── seata-cluster
│   ├── master
├── ── └──seata01
├── ── └──seata02
│   ├── slave
├── ── └──seata03
├── ── └──seata04

2.3 修改配置

启动Nacos,在seata.properties文件中,修改存储模式为reids,并配置reids连接信息:

#Transaction storage configuration, only for the server. The file, db, and redis configuration values are optional.
store.mode=redis
store.lock.mode=redis
store.session.mode=redis
#Used for password encryption
store.publicKey=
#These configurations are required if the `store mode` is `redis`. If `store.mode,store.lock.mode,store.session.mode` are not equal to `redis`, you can remove the configuration block.
store.redis.mode=single
store.redis.type=pipeline
store.redis.single.host=127.0.0.1
store.redis.single.port=6379
store.redis.sentinel.masterName=
store.redis.sentinel.sentinelHosts=
store.redis.sentinel.sentinelPassword=
store.redis.maxConn=10
store.redis.minConn=1
store.redis.maxTotal=100
store.redis.database=0
store.redis.password=123456
store.redis.queryLimit=100

修改每个Seata节点配置文件,主要是启动端口、集群名称:

  • seata01:启动端口7091,通信端口自动偏移为7091+1000,集群名称master
  • seata02:启动端口7092,通信端口自动偏移为7092+1000,集群名称master
  • seata03:启动端口7093,通信端口自动偏移为7093+1000,集群名称slave
  • seata04:启动端口7094,通信端口自动偏移为7094+1000,集群名称slave
server:port: 7091
spring:application:name: seata-server
console:user:username: seatapassword: seata
seata:# 配置中心config:# 类型: nacos 、 consul 、 apollo 、 zk  、 etcd3type: nacosnacos:# nacos 服务端地址server-addr: 127.0.0.1:8848# 命名空间namespace: 7032916a-19f1-482e-a3eb-8a62226c2e4d# 分组group: SEATA_GROUP# 配置IDdata-id: seata.properties# 注册中心registry:# 类型: nacos 、 eureka 、 redis 、 zk  、 consul 、 etcd3 、 sofatype: nacosnacos:# 指定注册至nacos注册中心的服务名application: seata-serverserver-addr: 127.0.0.1:8848group: DEFAULT_GROUPnamespace: 7032916a-19f1-482e-a3eb-8a62226c2e4d# 指定注册至nacos注册中心的集群名cluster: master

2.4 启动集群

运行每个节点下的seata-server.bat启动脚本,都启动成功后,在Nacos服务列表,可以查看到当前存在两个集群,四个节点实例:

在这里插入图片描述
查看详情,可以看到当前一个master集群,一个slave集群,以及节点实例的详细信息:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下新增有root权限的用户

步骤: 1.以 root 用户身份登录到 CentOS 服务器。 2.使用以下命令创建新用户(将 newuser 替换为您想要创建的用户名): sudo adduser username 3.为新用户设置密码: sudo passwd username 按照提示输入新增用户密码 …

计算机基础1-汇编基础

汇编语言是一种低级的计算机语言,它直接与计算机硬件进行交互。在汇编语言中,指令由一系列助记符(mnemonic)组成,用于执行特定的操作,如数据传输、算术运算和控制流程等。每个指令都对应着一条机器码&#…

《数据安全法》关于数据出境的条款

《数据安全法》关于数据出境的条款 《中华人民共和国数据安全法》于2021年6月10日通过,2021年9月1日起实施)。 在《数据安全法》中,第三十一条:“关键信息基础设施的运营者在中华人民共和国境内运营中收集和产生的重要数据的出境…

Golang如何使用命令行-- flag库

参考文献: flag package - flag - Go Packages 使用: import "flag" var nFlag flag.Int("n", 1234, "help message for flag n") 上述方法返回的是一个指针变量nFlag,如果我们要打印,应该使用…

声卡喊话IP喇叭,IP网络吸顶天花喇叭

声卡喊话IP喇叭,IP网络吸顶天花喇叭 SV-7043VP是一款ip/sip网络吸顶喇叭,具有10/100M以太网接口,从网络接口接收网络的音频数据后播放。本网络吸顶喇叭可以与其他广播主机、服务器软件和采播主机配合使用,实现音频的播放&#xf…

大语言模型:Query Rewriting for Retrieval-Augmented Large Language Models

总体思路 作者首先指出大语言模型虽然取得了很好的效果,但是仍然存在幻觉和时间顺序混乱的问题,因此需要额外知识库和LLM内部知识库相结合,来修正;因此优化传统的retriever-reader的方案成为需要;目前的研究方案当中使…

log4cplus在Qt linux中的应用与问题解决

log4cplus在Qt linux中的应用与问题解决 背景log4cplus下载遇到问题:libm.so.6:undefined reference to __strtof128_nanGLIBC_PRIVATE‘解决方案编译生成在Qt工程里面添加对应依赖编译运行成功 背景 最近工作中需要用到log4cplus的日志做一些记录,用了…

html5cssjs代码 010 个人简历模板一

html5&css&js代码 010 个人简历模板一 一、代码二、解释 这段HTML代码定义了一个个人简历的页面布局和样式。页面分为多个部分,包括基本信息、自我评价、工作经历、教育经历、软件产品及著作、未来研究方向等。每个部分都使用section标签包裹,并…

Linux——ELK日志分析系统

实验环境 虚拟机三台CentOS 7.9, 组件包 elasticsearch-5.5.0.rpm elasticsearch-head.tar.gz node-v8.2.1.tar.gz phantomjs-2.1.1-linux-x86_64.tar.bz2 logstash-5.5.1.rpm kibana-5.5.1-x86_64.rpm 初始…

Lombok原理及实例(Java) - 简化JavaBean开发

Lombok 1.作用:简化javabean开发 2.使用:a.下插件 -> 如果是idea2022不用下载了,自带b.导lombok的jar包c.修改设置 1.lombok介绍 Lombok通过增加一些“处理程序”,可以让javabean变得简洁、快速。 Lombok能以注解形式来简化java代码,提高开发效…

国金证券春招算法岗面试

没有去官网投,在BOSS直聘上投递,HR打电话确认过出勤后给用人部门评估,最后直接让用人部门的小leader面试,是一个博士 面试过程: 1.先介绍一下自己 2.介绍一下做过的项目 3.项目里自己具体做哪些工作 4.项目里怎么…

优选算法[1]

目录 1.双指针; 2.滑动窗口; 3.二分查找; 4.前缀和; 1.双指针; 包括对撞指针和快慢指针(一般用来循环); 题目类型:移动零,复写零,快乐数,盛…

【UE5】动画混合空间的基本用法

项目资源文末百度网盘自取 什么是动画混合空间 混合空间分为两种: 通过一个数值控制通过两个数值控制 下面通过演示让大家更直观地了解 在Character文件夹中单击右键,选择动画(Animation),选择旧有的混合空间1D 然后选择骨骼(动画是基于骨骼显示的,所以需要选择…

vue防止用户连续点击造成多次提交

中心思想:在第一次提交的结果返回前,将提交按钮禁用。 方法一:给提交按钮加上disabled属性,在请求时先把disabled属性改成true,在结果返回时改成false 方法二:添加loading遮罩层,可以直接使用e…

北京保险服务中心携手镜舟科技,助推新能源车险市场规范化

2022 年,一辆新能源汽车在泥泞的小路上不慎拖底,动力电池底壳受损,电池电量低。车主向保险公司报案,希望能够得到赔偿。然而,在定损过程中,保司发现这辆车的电池故障并非由拖底事件引起,而是由于…

EDM营销平台的核心功能?如何做精准营销?

EDM营销平台如何选择?怎么使用邮件营销平台优化发信? EDM营销平台以其独特的优势,成为了企业实现精准营销、提升品牌影响力的重要工具。那么,EDM营销平台究竟拥有哪些核心功能呢?接下来,AokSend就来一一探…

PyQt5---初识PyQt5相关及开发实战介绍

什么是GUI GUI是Graphical User Interface(图形用户界面)的缩写,是一种用户与计算机交互的方式,通过使用图形化的元素(如按钮、窗口、菜单等)来帮助用户完成任务。GUI使得用户可以通过鼠标、键盘等输入设备…

基类、接口、抽象类的区别

基类、接口和抽象类是面向对象编程中的三个重要概念,他们在定义和实现等方面有各自的特点,区别如下: 定义方面: 基类是一个普通的具体类,可以被实例化。 接口是一种规范(契约)或一组行为的集合…

二次开发shopify网站如何判断当前网址url

在Shopify中,要判断当前的URL,你可以使用Liquid模板语言来获取URL的各个部分,并进行相应的判断。 1、获取完整的URL: 使用{{ request.url }}可以获取当前页面的完整URL。2、获取URL的各部分: {{ request.path }}&am…

【C语言】整数存储、大小端概念

文章目录 整数存储大小端 整数存储 在计算机中,整数都是通过二进制保存的,不论是十六进制还是八进制还是十进制 整数的2进制表⽰⽅法有三种,即原码、反码和补码 对于整形来说:数据存放内存中其实存放的是补码 在计算机系统中&…