千家信息网

怎么快速部署一个seata项目

发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,本篇文章给大家分享的是有关怎么快速部署一个seata项目,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。第一步:下载源代码:git clo
千家信息网最后更新 2025年02月07日怎么快速部署一个seata项目

本篇文章给大家分享的是有关怎么快速部署一个seata项目,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

第一步:下载源代码:

git clone https://gitee.com/leitingweb/seata-demo.git

导入项目后,项目整体结构如下图所示:

第二步: 修改seata-server配置文件:

seata-server是seata中的事务协调器,该项目由两个主要的配置文件 registy.conf和file.conf,文件位置如下图所示:

(1)registry.conf

默认情况下,seata-server的配置模式是file模式,由registy.conf的registy.type和config.type属性确定,该模式下seata-server的配置都是走配置文件,该配置文件的名称在registry.file.name和config.file.name属性中确定,默认都是file.conf,因此,该项目在不修改配置文件的情况下也可以正常启动,走默认配置。

当然也支持nacos 、eureka、redis、zk、consul、etcd3、sofa等多种配置方式,本文使用默认的file模式,删除其他无用的配置方式后,registry.conf的结构精简如下:

registry {  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa  type = "file"  file {    name = "file.conf"  }}config {  # file、nacos 、apollo、zk、consul、etcd3  type = "file"  file {    name = "file.conf"  }}

(2)file.conf文件

file文件主要配置seata-server的各种属性,也可以完全不修改,走默认配置,本文在此重点讲一下store模块

seata-server的存储模式有file和db两种,可以通过store.mode属性配置,默认的存储方式是file。

file模式下,seata的事务相关信息会走内存,并持久化到root.data文件中,这种模式性能较高。

db模式是一种高可用的模式,seata的全局事务,分支事务和锁都在数据库中存储,相关表都在all_in_one.sql文件中。

如果是db模式,找到db模块 修改数据库配置信息,根据自己的数据库,修改数据库IP,端口号,用户名和密码,具体如下:

## transaction log storestore {  ## store mode: file、db  mode = "file"  ## file store  file {    dir = "sessionStore"    # branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions    max-branch-session-size = 16384    # globe session size , if exceeded throws exceptions    max-global-session-size = 512    # file buffer size , if exceeded allocate new buffer    file-write-buffer-cache-size = 16384    # when recover batch read size    session.reload.read_size = 100    # async, sync    flush-disk-mode = async  }  ## database store  db {    ## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp) etc.    datasource = "dbcp"    ## mysql/oracle/h3/oceanbase etc.    db-type = "mysql"    driver-class-name = "com.mysql.jdbc.Driver"    url = "jdbc:mysql://***:3306/seata"    user = "***"    password = "***"    min-conn = 1    max-conn = 3    global.table = "global_table"    branch.table = "branch_table"    lock-table = "lock_table"    query-limit = 100  }}

第三步 修改spingboot-mybatis项目的配置文件

springboot-mybatis项目是一个父子项目,在本例中用于模拟分布式事务场景,结构如上图所示,该项目包含了几个业务子项目,分别是:

账户:sbm-account-service

业务:sbm-business-service

订单:sbm-order-service

库存:sbm-storage-service

需要分别修改以上几个项目的相关配置文件,以sbm-account-service项目为例:

修改application.properties文件

主要修改该配置文件的数据库连接信息,根据自己的数据库,修改数据库IP,端口号,用户名和密码

spring.application.name=account-serviceserver.port=8083spring.datasource.url=jdbc:mysql://****:3306/seata?useSSL=false&serverTimezone=UTCspring.datasource.username=***spring.datasource.password=***spring.cloud.alibaba.seata.tx-service-group=my_test_tx_grouplogging.level.io.seata=infologging.level.io.seata.samples.account.persistence.AccountMapper=debug

注意seata-server中的db配置是配置用于存储seata事务相关的信息,此处的数据库配置是业务系统的业务数据库,官方示例中,seata事务库和业务库合并为一个了,实际业务中建议分开。

其他几个项目依次类推

第四步:执行sql文件:

执行SQL文件中的SQL语句,创建数据库和表

第四步,启动项目:

(1)启动seata-server:

打开seata-server工程的Server类,运行该类的main方法,启动项目:

启动成功后,会在控制台打出如下日志:

2019-09-26 15:37:27.711 INFO [main]io.seata.common.loader.EnhancedServiceLoader.loadFile:237 -load TransactionStoreManager[FILE] extension by class[io.seata.server.store.file.FileTransactionStoreManager]2019-09-26 15:37:27.713 INFO [main]io.seata.common.loader.EnhancedServiceLoader.loadFile:237 -load SessionManager[FILE] extension by class[io.seata.server.session.file.FileBasedSessionManager]2019-09-26 15:37:28.188 INFO [main]io.seata.core.rpc.netty.AbstractRpcRemotingServer.start:156 -Server started ...

(2)启动springboot-mybayis项目中的各业务子项目,同样以sbm-account-service项目为例:

打开SpringbootMybatisAccountApplication类,运行该类的main方法,启动项目

项目成功启动后,打印如下日志:

2019-09-26 15:48:14.466  INFO 16220 ---  main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8083 (http) with context path ''2019-09-26 15:48:14.469  INFO 16220 --- [main] .s.a.SpringbootMybatisAccountApplication : Started SpringbootMybatisAccountApplication in 2.961 seconds (JVM running for 3.605)2019-09-26 15:48:17.821  INFO 16220 --- [imeoutChecker_1] i.s.c.r.netty.NettyClientChannelManager  : will connect to 127.0.0.1:80912019-09-26 15:48:17.823  INFO 16220 --- [imeoutChecker_1] i.s.core.rpc.netty.NettyPoolableFactory  : NettyPool create channel to transactionRole:TMROLE,address:127.0.0.1:8091,msg:< RegisterTMRequest{applicationId='account-service', transactionServiceGroup='my_test_tx_group'} >2019-09-26 15:48:17.846  INFO 16220 --- [imeoutChecker_1] i.s.core.rpc.netty.NettyPoolableFactory  : register success, cost 17 ms, version:0.8.1,role:TMROLE,channel:[id: 0x02230a52, L:/127.0.0.1:60607 - R:/127.0.0.1:8091]

sbm-account-service启动成功后,会在seata-server 进行注册,注册成功后在seata-server服务下打印如下日志:

//todo

2019-09-26 15:51:32.050 INFO [NettyServerNIOWorker_1_8]io.seata.common.loader.EnhancedServiceLoader.loadFile:237 -load Codec[SEATA] extension by class[io.seata.codec.seata.SeataCodec]2019-09-26 15:51:32.068 INFO [ServerHandlerThread_1_500]io.seata.core.rpc.DefaultServerMessageListenerImpl.onRegRmMessage:114 -rm register success,message:RegisterRMRequest{resourceIds='jdbc:mysql://***:3306/seata', applicationId='account-service', transactionServiceGroup='my_test_tx_group'},channel:[id: 0x5efef77e, L:/127.0.0.1:8091 - R:/127.0.0.1:60690]2019-09-26 15:51:35.831 INFO [NettyServerNIOWorker_2_8]io.seata.core.rpc.DefaultServerMessageListenerImpl.onRegTmMessage:131 -checkAuth for client:127.0.0.1:60698 vgroup:my_test_tx_group ok

至此,sbm-account-service项目启动成功

此后依次启动剩余几个项目:各项目启动类如下:

sbm-business-service :SpringbootMybatisBusinessApplication

sbm-order-service: SpringbootMybatisOrderApplication

sbm-storage-service:SpringbootMybatisStorageApplication

以上就是怎么快速部署一个seata项目,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

项目 配置 文件 数据 数据库 模式 业务 事务 成功 信息 属性 存储 方式 日志 结构 口号 子项 子项目 密码 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 sql数据库备份两份 在公司网络安全应该做什么 网络安全知识竞赛初中 奈飞netflix 代理服务器 网络安全课游戏 甲骨文服务器最新免费教程 河南省一坦网络技术有限公司 网络安全实践报告摘要 数据库聚簇索引的建立 组织网络安全月知识答题通知 软件开发中身份证的安全 怎么给数据库的某个表增加字段 逆水寒17173庄园数据库 数据库包含多文件的表设计 人气流量软件开发 防护服务器防火墙多少钱 雨花区软件开发工程师是什么工作 创建新的数据库 网络安全手抄报 八开纸 区块链技术是中心化的数据库吗 校园网的网络安全系统研究 在京东做数据库 我的世界梦想曙光服务器连接不上 腾讯云服务器竞价优惠 如何破坏数据库的完整性规则 中国电子网络安全体系 俄罗斯网络安全圆桌会议 荆州串口服务器 计算机网络技术英版 软件开发部的工作计划
0