溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么快速部署一個(gè)seata項(xiàng)目

發(fā)布時(shí)間:2021-06-15 11:35:04 來(lái)源:億速云 閱讀:313 作者:Leah 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關(guān)怎么快速部署一個(gè)seata項(xiàng)目,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

第一步:下載源代碼:

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

導(dǎo)入項(xiàng)目后,項(xiàng)目整體結(jié)構(gòu)如下圖所示:

怎么快速部署一個(gè)seata項(xiàng)目

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

seata-server是seata中的事務(wù)協(xié)調(diào)器,該項(xiàng)目由兩個(gè)主要的配置文件 registy.conf和file.conf,文件位置如下圖所示:

怎么快速部署一個(gè)seata項(xiàng)目

(1)registry.conf

默認(rèn)情況下,seata-server的配置模式是file模式,由registy.conf的registy.type和config.type屬性確定,該模式下seata-server的配置都是走配置文件,該配置文件的名稱在registry.file.name和config.file.name屬性中確定,默認(rèn)都是file.conf,因此,該項(xiàng)目在不修改配置文件的情況下也可以正常啟動(dòng),走默認(rèn)配置。

當(dāng)然也支持nacos 、eureka、redis、zk、consul、etcd3、sofa等多種配置方式,本文使用默認(rèn)的file模式,刪除其他無(wú)用的配置方式后,registry.conf的結(jié)構(gòu)精簡(jiǎn)如下:

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的各種屬性,也可以完全不修改,走默認(rèn)配置,本文在此重點(diǎn)講一下store模塊

seata-server的存儲(chǔ)模式有file和db兩種,可以通過(guò)store.mode屬性配置,默認(rèn)的存儲(chǔ)方式是file。

file模式下,seata的事務(wù)相關(guān)信息會(huì)走內(nèi)存,并持久化到root.data文件中,這種模式性能較高。

db模式是一種高可用的模式,seata的全局事務(wù),分支事務(wù)和鎖都在數(shù)據(jù)庫(kù)中存儲(chǔ),相關(guān)表都在all_in_one.sql文件中。

如果是db模式,找到db模塊 修改數(shù)據(jù)庫(kù)配置信息,根據(jù)自己的數(shù)據(jù)庫(kù),修改數(shù)據(jù)庫(kù)IP,端口號(hào),用戶名和密碼,具體如下:

## 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項(xiàng)目的配置文件

怎么快速部署一個(gè)seata項(xiàng)目

springboot-mybatis項(xiàng)目是一個(gè)父子項(xiàng)目,在本例中用于模擬分布式事務(wù)場(chǎng)景,結(jié)構(gòu)如上圖所示,該項(xiàng)目包含了幾個(gè)業(yè)務(wù)子項(xiàng)目,分別是:

賬戶:sbm-account-service

業(yè)務(wù):sbm-business-service

訂單:sbm-order-service

庫(kù)存:sbm-storage-service

需要分別修改以上幾個(gè)項(xiàng)目的相關(guān)配置文件,以sbm-account-service項(xiàng)目為例:

修改application.properties文件

怎么快速部署一個(gè)seata項(xiàng)目

主要修改該配置文件的數(shù)據(jù)庫(kù)連接信息,根據(jù)自己的數(shù)據(jù)庫(kù),修改數(shù)據(jù)庫(kù)IP,端口號(hào),用戶名和密碼

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配置是配置用于存儲(chǔ)seata事務(wù)相關(guān)的信息,此處的數(shù)據(jù)庫(kù)配置是業(yè)務(wù)系統(tǒng)的業(yè)務(wù)數(shù)據(jù)庫(kù),官方示例中,seata事務(wù)庫(kù)和業(yè)務(wù)庫(kù)合并為一個(gè)了,實(shí)際業(yè)務(wù)中建議分開(kāi)。

其他幾個(gè)項(xiàng)目依次類推

第四步:執(zhí)行sql文件:

怎么快速部署一個(gè)seata項(xiàng)目

執(zhí)行SQL文件中的SQL語(yǔ)句,創(chuàng)建數(shù)據(jù)庫(kù)和表

第四步,啟動(dòng)項(xiàng)目:

(1)啟動(dòng)seata-server:

打開(kāi)seata-server工程的Server類,運(yùn)行該類的main方法,啟動(dòng)項(xiàng)目:

怎么快速部署一個(gè)seata項(xiàng)目

啟動(dòng)成功后,會(huì)在控制臺(tái)打出如下日志:

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)啟動(dòng)springboot-mybayis項(xiàng)目中的各業(yè)務(wù)子項(xiàng)目,同樣以sbm-account-service項(xiàng)目為例:

打開(kāi)SpringbootMybatisAccountApplication類,運(yùn)行該類的main方法,啟動(dòng)項(xiàng)目

怎么快速部署一個(gè)seata項(xiàng)目

項(xiàng)目成功啟動(dòng)后,打印如下日志:

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啟動(dòng)成功后,會(huì)在seata-server 進(jìn)行注冊(cè),注冊(cè)成功后在seata-server服務(wù)下打印如下日志:

//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項(xiàng)目啟動(dòng)成功

此后依次啟動(dòng)剩余幾個(gè)項(xiàng)目:各項(xiàng)目啟動(dòng)類如下:

sbm-business-service :SpringbootMybatisBusinessApplication

sbm-order-service: SpringbootMybatisOrderApplication

sbm-storage-service:SpringbootMybatisStorageApplication

以上就是怎么快速部署一個(gè)seata項(xiàng)目,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI