Spring Cloud入门-Seata处理分布式事务问题(Hoxton版本)

我们先从官网下载seata-server,这里下载的是seata-server-1.0.0.zip,下载地址:https://github.com/seata/seata/releases

这里我们使用Nacos作为注册中心,Nacos的安装及使用可以参考:Spring Cloud入门-Nacos实现注册和配置中心(Hoxton版本)

解压seata-server安装包到指定目录,修改conf目录下的file.conf配置文件,主要修改自定义事务组名称,事务日志存储模式为db及数据库连接信息;

service {

#transaction service group mapping

#修改事务组名称为:my_test_tx_group,和客户端自定义的名称对应

vgroup_mapping.my_test_tx_group = “default”

#only support when registry.type=file, please don’t set multiple addresses

default.grouplist = “127.0.0.1:8091”

#disable seata

disableGlobalTransaction = false

}

transaction log store, only used in seata-server

store {

store mode: file、db

#修改此处将事务信息存储到数据库中

mode = “db”

file store property

file {

store location dir

dir = “sessionStore”

}

database store property

db {

the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp) etc.

datasource = “dbcp”

mysql/oracle/h2/oceanbase etc.

db-type = “mysql”

driver-class-name = “com.mysql.cj.jdbc.Driver”

#修改数据库连接地址

url = “jdbc:mysql://127.0.0.1:3306/seata-server?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true&useSSL=false&tinyInt1isBit=false&serverTimezone=GMT%2B8”

#修改数据库用户名

user = “root”

#修改数据库密码

password = “root”

}

}

由于我的MySQL是8.0以上的版本,所以驱动需要跟换为8.0以上的,同时修改file.conf的driver-class-name配置

driver-class-name = “com.mysql.cj.jdbc.Driver”

在这里插入图片描述

由于我们使用了db模式存储事务日志,所以我们需要创建一个seata-server数据库,建表sql在seata-server的/conf/db_store.sql中;

修改conf目录下的registry.conf配置文件,指明注册中心为nacos,及修改nacos连接信息即可;

registry {

file 、nacos 、eureka、redis、zk、consul、etcd3、sofa

type = “nacos” #改为nacos

nacos {

serverAddr = “localhost:8848” #改为nacos的连接地址

namespace = “”

cluster = “default”

}

}

先启动Nacos,再使用seata-server中/bin/seata-server.bat文件启动seata-server。

数据库准备


创建业务数据库

  • seata-order:存储订单的数据库;

  • seata-storage:存储库存的数据库;

  • seata-account:存储账户信息的数据库。

初始化业务表

order表

CREATE TABLE order (

id bigint(11) NOT NULL AUTO_INCREMENT,

user_id bigint(11) DEFAULT NULL COMMENT ‘用户id’,

product_id bigint(11) DEFAULT NULL COMMENT ‘产品id’,

count int(11) DEFAULT NULL COMMENT ‘数量’,

money decimal(11,0) DEFAULT NULL COMMENT ‘金额’,

PRIMARY KEY (id)

) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

ALTER TABLE seata-order.order ADD COLUMN status int(1) DEFAULT NULL COMMENT ‘订单状态:0:创建中;1:已完结’ AFTER money ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值