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