分布式事务管理器dtm第一篇:介绍

https://dtm.pub/guide/start.html

dtm全称是distributed transaction manager。dtm是cs架构。

dtm服务端部署:

docker run --name dtm -p 36789:36789 -p 36790:36790 -e STORE_DRIVER=mysql -e STORE_HOST=xxx -e STORE_PORT=xxx -e STORE_USER=xxx -e STORE_PASSWORD=xxx -d yedf/dtm:1.16.10

在run之前,要先在mysql中创建好dtm所需的表。如果数据库用的是本机的数据库,则STORE_HOST要写成

host.docker.internal。

在研究官方例子时,一定要注意dtm服务端地址(DefaultHTTPServer)、dtm客户端地址(Busi)、数据库(busi.BusiConf)的配置,否则验证不通过。

假如有一个业务逻辑需要A服务调用B服务接口和C服务接口。则现在要转变成A服务调用dtm服务端,然后服务端再调用B服务、C服务。A服务的角色是AP,dtm服务端的角色是TM,B、C服务的角色是RM。

AP是Application,应用程序,是全局事务发起人,负责编排全局事务,并将全局事务的编排信息提交给TM。

TM是Transaction Manager,事务管理器,会根据全局事务的编排情况,调用RM。

RM是Resource Manager,资源管理器,就是下游的微服务。比如订单管理服务、支付管理服务等。

对于不可回滚的操作,DTM的设计建议是,不可回滚的操作在业务上不允许返回失败。

不像seata中的saga,dtm中的saga没有采用状态机实现。

dtm独创了【二阶段消息】解决方案,用以替代【本地消息表】解决方案和【事务消息】解决方案。

空补偿的意思是补偿操作早于正向操作。

悬挂的意思是

posted on   koushr  阅读(481)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示