文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

一文了解Seata的安装和配置

2024-11-30 12:41

关注

分布式事务

其实分布式事务用一句话概括,那就是一次业务操作,如果横跨多个数据源或者需要跨多个系统进行远程调用的话,就会产生分布式事务问题。

如何解决分布式事务

分布式事务其实现在解决方案有很多,比如 TCC方案,XA 方案,本地消息表,可靠消息最终一致性方案,最大努力通知方案等等,但是这种方案实现上肯定都是偏复杂的,而阿里我们都知道他是有一套自己解决分布式事务的方案的,那么大家都知道是什么呢?今天了不起就来和大家看看这个 Seata 一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。

Seata简介

Senta 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。

我们来看看官网的介绍,

Seata官网

图片

突然看到这个图里面的术语的时候,是不是有点懵,我们来看看这个Seata的术语

TC (Transaction Coordinator) - 事务协调者

维护全局和分支事务的状态,驱动全局事务提交或回滚。

TM (Transaction Manager) - 事务管理器

定义全局事务的范围:开始全局事务、提交或回滚全局事务。

RM (Resource Manager) - 资源管理器

管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

其实如果看上面的图,我们看看这个处理过程

图片

接下来我们直接来实战试一下这个Seata的实际操作。

Seata-Server安装

我们直接用官网的Demo来学习一下

快速开始

我们挑选一个不是那么新的版本,毕竟都知道,新版本中那可是有很多坑的,一个不留神就踩进去,学习还是稳一手。

图片

下载完成,直接解压,然后去找到文件目录,

我们直接找到config下的 file.config,

修改file.conf

主要就是修改,事务日志存储模式为db+数据库连接信息

我们直接把mode改为db

然后db改为我们自己的数据库地址

图片

然后我们去把数据库给创建好,建表语句在config下的 readme文件中。

图片

我们找到 server 的 Mysql 的建表语句

图片

ok了 建表成功。

修改registry.conf

还是同样的目录,我们再修改一下 registry.conf 主要是来修改nacos的信息的,因为 Seata 其实推荐的也是 nacos,所以下面的这个 type 我们直接来改成自己的 naocs 就可以了。

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "nacos"

  nacos {
    application = "seata-server"
    serverAddr = "127.0.0.1:8848"
    group = "SEATA_GROUP"
    namespace = "5518397c-7ea8-4f55-89ca-dacfc6fdf914"
    cluster = "default"
    username = "nacos"
    password = "nacos"
  }

config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "nacos"

  nacos {
    serverAddr = "127.0.0.1:8848"
    namespace = "5518397c-7ea8-4f55-89ca-dacfc6fdf914"
    group = "SEATA_GROUP"
    username = "nacos"
    password = "nacos"
    dataId = "seataServer.properties"
  }
  ...
}

获取 config.txt 文件

直接获取config.txt

config.txt

然后我们修改一下store

图片

配nacos

先从git上面下载 nacos-config.sh,然后推送配置到nacos

nacos-config.sh

把 nacos-config.sh 文件放到 config 下,然后执行命令

sh nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t 5518397c-7ea8-4f55-89ca-dacfc6fdf914 -u nacos -w nacos

命令的解释如下:

-h: 注册到注册中心的ip
-p: Server rpc 监听端口
-m: 全局事务会话信息存储模式,file、db、redis,优先读取启动参数 (Seata-Server 1.3及以上版本支持redis)
-n: Server node,多个Server时,需区分各自节点,用于生成不同区间的transactionId,以免冲突
-e: 多环境配置参考 http://seata.io/en-us/docs/ops/multi-configuration-isolation.html

图片

执行这个有个前提,那就是registry.conf中的namespace和命令中的必须保持一样,并且在 nacos中也增加了对应的命名空间,如果你没有仔细的看文档,并且没有对 nacos 中的命名空间做增加的话,那么你就肯定失败,然后在 nacos 中就是看不到自己的配置情况。

图片

创建完成之后,就会出现这个命名空间的ID,我们直接来随机的,然后复制这个ID 到registry.conf中配置一下就可以了。

大家可以看到上面的图中出现了total-count是98,但是failure-count:1 我们看执行完命令后,失败的是哪个,

nacos-config.sh: line 88: [: too many arguments
Set store.publicKey= failure

这个失败了,但是有人可能会失败四个

Set store.publicKey= failure
Set store.redis.sentinel.masterName= failure
Set store.redis.sentinel.sentinelHosts= failure
Set store.redis.password= failure

其实这四个并不影响这个执行,因为我们可以去 Nacos 中看配置情况,

图片

因为了不起之季节吧这个 store.redis 的内容给全注释了。所以只有一个没成功。

接下来我们就可以启动seata了。

启动 seata

我们这里先不考虑这个client,因为可以在我们后面使用的时候再去添加这个

直接执行 bin/seata-server.bat 文件,然后看看能启动成功不。

图片

当我们看到这个 Server started 的时候,我们就知道,我们的 seata 的服务端就启动成功了,到这里我们的 seata 的安装和配置就算是已经完成了。

你学会了么?

来源:Java极客技术内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯