分布式事务管理器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独创了【二阶段消息】解决方案,用以替代【本地消息表】解决方案和【事务消息】解决方案。
空补偿的意思是补偿操作早于正向操作。
悬挂的意思是
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了