温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么快速部署一个seata项目

发布时间:2021-06-15 11:35:04 来源:亿速云 阅读:322 作者:Leah 栏目:大数据

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

第一步:下载源代码:

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

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

怎么快速部署一个seata项目

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

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

怎么快速部署一个seata项目

(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 store
store {
  ## 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项目的配置文件

怎么快速部署一个seata项目

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

账户:sbm-account-service

业务:sbm-business-service

订单:sbm-order-service

库存:sbm-storage-service

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

修改application.properties文件

怎么快速部署一个seata项目

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

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

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

其他几个项目依次类推

第四步:执行sql文件:

怎么快速部署一个seata项目

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

第四步,启动项目:

(1)启动seata-server:

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

怎么快速部署一个seata项目

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

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方法,启动项目

怎么快速部署一个seata项目

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

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:8091
2019-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项目,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI