本篇文章給大家分享的是有關怎么快速部署一個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 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項目的配置文件

springboot-mybatis項目是一個父子項目,在本例中用于模擬分布式事務場景,結構如上圖所示,該項目包含了幾個業務子項目,分別是:
賬戶:sbm-account-service
業務:sbm-business-service
訂單:sbm-order-service
庫存:sbm-storage-service
需要分別修改以上幾個項目的相關配置文件,以sbm-account-service項目為例:
修改application.properties文件

主要修改該配置文件的數據庫連接信息,根據自己的數據庫,修改數據庫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文件:

執行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: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項目,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。