问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

kratos分布式事务最佳实践

发布网友 发布时间:2022-12-23 06:01

我来回答

1个回答

热心网友 时间:2024-11-24 17:12

随着业务的快速发展、业务复杂度越来越高,微服务作为最佳解决方案之一,它解耦服务,降低复杂度,增加可维护性的同时,也带来一部分新问题。

当我们需要跨服务保证数据一致性时,原先的数据库事务力不从心,无法将跨库、跨服务的多个操作放在一个事务中。这样的应用场景非常多,我们可以列举出很多:

面对这些本地事务无法解决的场景,我们需要分布式事务的解决方案,保证跨服务、跨数据库更新数据的一致性。

dtm作为一款非常流行的分布式事务框架,已经支持接入多种微服务框架,下面我们就来着重介绍一下 https://github.com/go-kratos/kratos 如何接入dtm,解决分布式事务的问题

我们来看一个可运行的例子,然后再看如何自己开发完成一个完整的分布式事务

下面以etcd作为注册服务中心,可以按照如下步骤运行一个kratos的示例:

MicroService:
Driver: 'dtm-driver-kratos' # name of the driver to handle register/discover
Target: 'discovery://127.0.0.1:2379/dtmservice' # register dtm server to this url
EndPoint: 'grpc://localhost:36790'

# 前提:已安装etcd
etcd

# 请先配置好dtm的数据库
go run app/main.go -c conf.yml # conf.yml 为你对应的 dtm 配置文件

git clone https://github.com/dtm-labs/dtmdriver-clients && cd dtmdriver-clients
cd kratos/trans
make build && ./bin/trans -conf configs/config.yaml

# 在 dtmdriver-clients 的目录下
cd kratos/app && go run main.go

当您在trans的日志中看到

那就是事务正常完成了

参考 https://github.com/dtm-labs/dtmdriver-clients 的代码

在 kratos 使用 dtm 的分布式事务时,许多的调用是从 dtm 服务器发起的,例如 TCC 的Confirm/Cancel,SAGA/MSG 的所有调用。

dtm 无需知道组成分布式事务的相关业务 api 的强类型,它是动态的调用这些api。

grpc 的调用,可以类比于 HTTP 的 POST,其中:

通过下面这部分代码,dtm就拿到了完整信息,就能够发起完整的调用了

Add(busiServer+"/api.trans.v1.Trans/TransIn", &busi.BusiReq{Amount: 30, UserId: 1})

kratos 的微服务还有非 etcd 的其他方式,下面列出它们的接入方式

对于直连这种方式,您只需要在上面 dtm 的 etcd 配置基础上,将 Target 设置为空字符串即可。

直连的情况,不需要将 dtm 注册到注册中心

项目地址:https://github.com/dtm-labs/dtm 欢迎访问,并star支持我们

kratos地址:https://github.com/go-kratos/kratos
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 网络用语中 昂 什么意思? 应读什么音节,有几种意思? 京东白条便宜那么多东西会不会不好 Seata:分布式事务解决方案 梦到喜欢的人是什么意思啊? 卡卡西的真面目在哪一集卡卡西的真面目是第几集 丝绸之路的作文(以前、现在、将来) 不但反而造句子 为什么 房地产广告 禁止以时间表示距离 食品、酒类、( )广告的内容必须符合卫生许可的事项,并不得使用医疗用语... 如何遵守广告行业职业道德,100-200字之间 中华人民共和国广告法(修订草案)的实行方式 在三星平板上下载哪个软件可以免费观看仙武帝尊 authority怎么读 教你如何打领带 几个英语句子的语法分析!求助英语大神们帮帮忙! have over 造句 德阳银行是私人银行? 请问一般个体户能在银行贷款能贷到吗?一般贷款最低需要什么样的基础才... 成语昂什么挺什么 八方股份要裁员吗 霹雳mit鬼鬼和亚伦的吻戏 《沈羽十二夜》txt下载在线阅读全文,求百度网盘云资源 王清华和贺先兵什么关系 精工裁剪是什么意思 长安uni-t怎么样 为什么EXCEL粘贴为数值之后小数点后面还有数值? 长安UNI-T2021款自动挡多少钱能落地? 硫酸比重与浓度对照表 怎么看苹果11主板动过吗 绛消缕薄冰肌莹,雪腻酥香是什么意思? 自 自四字词语 橡皮泥怎么说比较好听 《网游之盗版神话》 橡皮泥,太空泥叫教学器具吗 去年电视新北方报的沈阳世达羽绒服翻新定做连锁店在哪呀?(铁西 沈河... 捏橡皮泥的美术专业术语怎么说 沈阳那有修改真皮羽绒服的? 高品质创意文案句子古风 明日方舟风暴瓶什么电池