千家信息网

怎么快速部署一个seata项目

发表于:2024-12-13 作者:千家信息网编辑
千家信息网最后更新 2024年12月13日,本篇文章给大家分享的是有关怎么快速部署一个seata项目,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。第一步:下载源代码:git clo
千家信息网最后更新 2024年12月13日怎么快速部署一个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项目,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

0