防止掉进Dubbo与Seata集成坑里的那些事

前言

博主最近在搞Dubbo分布式业务,相信来看此篇文章的开发朋友们对分布式这个名词肯定不陌生,在分布式业务中肯定就会牵涉到分布式事务,对于分布式事务博主开始听了这个词就觉得很难,但是其实还好,就是在整合Dubbo与Seata的其中踩了一些坑,并没有如同官方那么一帆风顺,那么本次就将整合步骤以及一些坑给大家爆出来,以防大家重蹈覆辙~

防止掉进Dubbo与Seata集成坑里的那些事

整合步骤

前提说明

我的业务框架是Dubbo+Mybatis-Plus+Zookeeper+Nacos+Seata,至于为什么要同时使用Zookeeper+Nacos呢,因为前期没有整合分布式事务的时候用的zk做的服务注册中心,后面可能进行移除,换为全局Nacos作为注册中心

安装Nacos

关于Zookeeper我就不多于说明了,因为本文主要是讲述DubboSeata的集成方面的业务。

Nacos我是用的Docker安装的,相关命令如下:

启动好Nacos之后直接访问http://{ip}:8848/nacos/index.html即可登录:

下载/配置/启动Seata

进入到https://github.com/seata/seata/releases下载seata的发行版,我这里使用的0.9.0版本。

下载完成之后进行解压,其中bin目录下存放为启动脚本,conf目录下存放为配置文件以及相关SQL和配置注入脚本,lib目录下是seata的相关依赖。

进入到conf目录修改registry.conf
打开文件我们可以看见可以使用file、nacos 、apollo、zk、consul的注册和配置中心,本次主要是搭配nacos进行食用~

注意:在registry中config没有namespace属性,否则会出现服务启动失败或no available!

接着我们修改file.conf,其配置主要为:

配置好上述配置文件之后,我们将conf目录下的db_store.sql文件导入到我们的数据库,我这里的数据库名为seata(上述配置文件可以看出)

接着我们再修改目录下的nacos-config.txt,这个文件其实就是将file.conf翻译成properties格式的,这里我就不做过多的说明了,写好之后我们将配置写入到nacos中:

写入成功之后,你会看到这样一行小绿字:
init nacos config finished, please start seata-server.

启动seata-server

启动成功之后,你会看到Nacos的「控制台」-「服务列表」中会新增一项服务名为serverAddr的服务,如图:

业务整合

业务架构分为

导入日志数据表

将seata的conf目录下的db_undo_log.sql到你的业务数据库

业务配置

我们要在三个provider服务中写入如下配置:

/resources/file.conf

file.conf与seata的conf目录下一致

/resources/registry.conf

registry.conf与seata的conf目录下一致

pom.xml

引入需要的依赖包

SeataAutoConfig.java

进行Seata的配置,包括数据库资源/数据库代理设置/SqlSessionFactory等

业务接口

order服务下有创建订单的接口

storage服务下有减少库存的接口

user服务下有减少账户余额以及购买的接口

创建订单/扣除库存/扣除账户余额这三个接口我就不在此展示了,因为都是基本的CURD+业务判断,主要展示一下购买产品的业务接口实现,因为我们需要对此业务的过程中处理分布式事务:

由上述代码可以看出,我们只需要添加一个@GlobalTransactional注解就可以进行分布式事务控制,其中name为该项目spring.application.name的值。

对于事务回滚,我们只需要将用户的余额设置为0,这个时候扣除余额就会失败,那么业务失败,就会进行事务回滚,当操作完成之后我们看到数据库的订单和库存并没有创建和减少,就代表我们的分布式事务Seata配置完成并可以成功使用。

后记

在配置Seata的时候确实踩了不少坑,现在回头过来有些都已经忘却(当时只顾得解决BUG,没有记录下来),所以此篇文章关于坑的展示并没有自己想的那么多,如果大家遇到了这方面的问题,可以在文章下方评论,博主将会尽可能的帮助你解决你的燃眉之急!

发表评论

请在下方填写评论信息

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

表情 粗体 斜体 图片 引用 链接 删除线 下划线 插代码 签到

目前评论:4   其中:访客  4   博主  0

  1. avatar 今日头条新闻 1  来自天朝的朋友 谷歌浏览器 Windows 10 广西 电信

    文章还不错支持一下

  2. avatar z 0  来自天朝的朋友 谷歌浏览器 Windows 7 安徽省合肥市 电信

    先收藏~

  3. avatar 头条新闻 2  来自天朝的朋友 谷歌浏览器 Windows 7 广西贺州市 联通

    文章不错非常喜欢,支持

  4. avatar 热搜榜 2  来自天朝的朋友 谷歌浏览器 Windows 7 广西玉林市 联通

    文章不错非常喜欢