dtm-labs / dtm

219 阅读1分钟

licenseBuild StatuscodecovGo Report CardGo ReferenceMentioned in Awesome Go

英语 |简体中文

分布式交易管理器

什么是DTM

DTM是一个分布式事务框架,它提供跨服务的最终数据一致性。它为各种应用场景提供saga, tcc, xa, 2-phase message, outbox模式。它还支持多语言和多存储引擎,以形成以下交易。

function-picture

特点

谁在使用DTM(部分)?

腾讯公司

佰特思

淘宝网

更多

烹饪书

快速启动

运行dtm

git clone https://github.com/dtm-labs/dtm 

开始一个例子

假设我们想进行银行间转账。转出(TransOut)和转入(TransIn)的操作被编码在不同的微服务中。

下面是一个例子,说明dtm对这个问题的解决方案。

git clone https://github.com/dtm-labs/dtmcli-go-sample 

代码

使用

  

当上述代码运行时,我们可以在控制台中看到TransOut、TransIn服务已经被调用。

时序图

一个成功完成的SAGA事务的时序图如下。

saga-success

失败时回滚

如果任何前向操作失败,DTM会调用每个子事务的相应补偿操作来回滚,之后事务会成功回滚。

让我们故意让第二个子事务的前向操作失败,看看会发生什么

app

预期失败的时序图如下。

saga-failed

更多的例子

上面的例子主要演示了一个分布式事务的流程。更多的内容,包括如何与实际的数据库对接,如何做补偿,如何做回滚等实际的例子,请参考dtm-examples

聊天组

通过discord.gg/dV9jS5Rb33 加入聊天群

给一颗星!⭐

如果你认为这个项目很有趣,或者对你有帮助,请给一颗星!谢谢。