SpringCloud Alibaba的分布式事务Seata1.4

SpringCloud Alibaba的分布式事务Seata1.4 :

创建seata的数据

数据库名:seata

CREATE TABLE IF NOT EXISTS `global_table`
(
  `xid`           VARCHAR(128) NOT NULL,
  `transaction_id`      BIGINT,
  `status`          TINYINT   NOT NULL,
  `application_id`      VARCHAR(32),
  `transaction_service_group` VARCHAR(32),
  `transaction_name`     VARCHAR(128),
  `timeout`         INT,
  `begin_time`        BIGINT,
  `application_data`     VARCHAR(2000),
  `gmt_create`        DATETIME,
  `gmt_modified`       DATETIME,
  PRIMARY KEY (`xid`),
  KEY `idx_gmt_modified_status` (`gmt_modified`, `status`),
  KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
 DEFAULT CHARSET = utf8;
​
-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(
  `branch_id`    BIGINT   NOT NULL,
  `xid`       VARCHAR(128) NOT NULL,
  `transaction_id`  BIGINT,
  `resource_group_id` VARCHAR(32),
  `resource_id`   VARCHAR(256),
  `branch_type`   VARCHAR(8),
  `status`      TINYINT,
  `client_id`    VARCHAR(64),
  `application_data` VARCHAR(2000),
  `gmt_create`    DATETIME(6),
  `gmt_modified`   DATETIME(6),
  PRIMARY KEY (`branch_id`),
  KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
 DEFAULT CHARSET = utf8;
​
-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(
  `row_key`    VARCHAR(128) NOT NULL,
  `xid`      VARCHAR(128),
  `transaction_id` BIGINT,
  `branch_id`   BIGINT   NOT NULL,
  `resource_id`  VARCHAR(256),
  `table_name`  VARCHAR(32),
  `pk`      VARCHAR(36),
  `gmt_create`  DATETIME,
  `gmt_modified` DATETIME,
  PRIMARY KEY (`row_key`),
  KEY `idx_branch_id` (`branch_id`)
) ENGINE = InnoDB
 DEFAULT CHARSET = utf8;
修改seata下的conf下的file.conf文件 配置都放在nacos来 配置
​
store {
 mode = "db"
​
 db {
 ## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc.
 datasource = "druid"
 ## mysql/oracle/postgresql/h2/oceanbase etc.
 dbType = "mysql"
 driverClassName = "com.mysql.cj.jdbc.Driver"
 url = "jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai"
 user = "root"
 password = "root"
 minConn = 5
 maxConn = 30
 globalTable = "global_table"
 branchTable = "branch_table"
 lockTable = "lock_table"
 queryLimit = 100
 maxWait = 5000
 }
}
​
修改seata下的conf下的registry.conf文件
 # 这个是注册中心的配置
registry {
 # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
 type = "nacos"
​
 nacos {
 application = "seata-server"
 serverAddr = "127.0.0.1:8848"
 group = "SEATA_GROUP"
 namespace = "4da028aa-00a3-4e90-9fb1-59e23073c124"
 cluster = "default"
 username = "nacos"
 password = "nacos"
 }

}

配置中心的配置

config {
type = “nacos”
nacos {
 serverAddr = “127.0.0.1:8848”
 namespace = “”
 group = “SEATA_GROUP”
 username = “nacos”
 password = “nacos”
}

}

下载文件 https://gitee.com/seata-io/seata/tree/develop/

找到里面那个的script文件夹(解压)

进入到\script\config-center 这个路径下看到一个叫 config.txt的文件

把里面的配置改为:

解释重要的部分:

service.vgroupMapping.fsp_tx_group=default ****当中的 fsp_tx_group可以自定义 后面的值可以等于一个其他的seata服务名具体看官网配置

在修改一下数据连接信息 我这里采用的是 mysql8.0的配置

service.vgroupMapping.fsp_tx_group=default 
service.default.grouplist=127.0.0.1:8091
client.rm.sqlParserType=druid
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
store.db.user=root
store.db.password=root
修改完毕过后

进入到\script\config-center\nacos 这个路径你就可以看到一个叫 nacos-config.sh的执行文件

如果你有git了 直接双击 没有记得下载即可 不会下载的百度

双击过后ta开始进行配置上传到我们的nacos的配置中心去

现在我们的seata的配置就基本上完成了

需要额外的配置可以去seata的官网:http://seata.io/zh-cn/

现在我们来 运行我们配置好得seata

打开setat/bin/ 点击 seata-server.bat

到这里我们的seata就配置完成了

微服务版本和seata的兼容

父pom

<!–统一管理jar包版本 -->
<properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <maven.compiler.source>1.8</maven.compiler.source>
 <maven.compiler.target>1.8</maven.compiler.target>
 <junit.version>4.12</junit.version>
 <log4j.version>1.2.17</log4j.version>
 <lombok.version>1.18.12</lombok.version>
 <mysql.version>8.0.19</mysql.version>
 <spring.boot.version>2.2.5.RELEASE</spring.boot.version>
 <spring.cloud.alibaba.version>2.2.1.RELEASE</spring.cloud.alibaba.version>
 <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
</properties>

<!–子模块继承后,提供作用:锁定版本+子module不用groupId和version–>
<dependencyManagement>
 <dependencies>
   <!–springboot 2.2.2–>
   <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-dependencies</artifactId>
     <version>KaTeX parse error: Expected 'EOF', got '&' at position 22: …g.boot.version}&̲lt;/version&gt;…{spring.cloud.alibaba.version}</version>
     <type>pom</type>
     <scope>import</scope>
   </dependency>
   <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-alibaba-sentinel</artifactId>
     <version>2.2.0.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>${mysql.version}</version>
   </dependency>
   <dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
   </dependency>
 </dependencies>
</dependencyManagement>

seata整合spring boot

 <!-- seata -->
<dependency>
 <groupId>com.alibaba.cloud</groupId>
 <artifactId>spring-cloud-alibaba-seata</artifactId>
 <version>2.2.0.RELEASE</version>
</dependency>

  <!–Druid数据源–>
   <dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>druid-spring-boot-starter</artifactId>
     <version>1.1.10</version>
   </dependency>
properties.yml 不需要额外的配置
seata:
tx-service-group: fsp_tx_group  # 事分组名 与我们上面配置的一定要一致不然就会出现找到seata服务!!!!!
service:
 vgroup-mapping:
     # 保持一致
  fsp_tx_group: default
registry:
 nacos:
  namespace: 4da028aa-00a3-4e90-9fb1-59e23073c124 #seata 注册在那个地方
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百度搜索爱敲代码的小庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值