DTM is the first distributed transaction management framework in Golang. Unlike other frameworks, DTM provides extremely easy access interfaces of HTTP and gRPC, supports multiple language bindings, and handles tricky problems of unordered sub-transactions at the framework level.
[金数智联]()
## Features
## 亮点
* Extremely easy to adapt
- Support HTTP and gRPC, provide easy-to-use programming interfaces, lower substantially the barrier of getting started with distributed transactions. Newcomers can adapt quickly.
- Relieving developers from worrying about suspension, null compensation, idempotent transaction, and other tricky problems, the framework layer handles them all.
## 与其他框架对比
* Language-agnostic
- Suit for companies with multiple-language stacks.
Easy to write bindings for Go, Python, PHP, Node.js, Ruby, and other languages.
There is no mature open-source distributed transaction framework for non-Java languages.
Mature open-source distributed transaction frameworks for Java language include Ali's Seata, Huawei's ServiceComb-Pack, Jingdong's shardingsphere, himly, tcc-transaction, ByteTCC, and so on, of which Seata is most widely used.
| Supported languages | <spanstyle="color:green">Golang, Python, PHP, and others</span> | <spanstyle="color:orange">Java</span> | dtm allows easy access from a new language |
| XA | <spanstyle="color:green">✓</span> | <spanstyle="color:green">✓</span> | |
| AT | <spanstyle="color:orange">suggest XA</span> | <spanstyle="color:green">✓</span> | AT is similar to XA with better performance but with dirty rollback |
| SAGA | <spanstyle="color:green">support concurrency</span> | <spanstyle="color:green">complicated state-machine mode</span> | dtm's state-machine mode is being planned |
| Transactional Messaging | <spanstyle="color:green">✓</span> | <spanstyle="color:red">✗</span> | dtm provides Transactional Messaging similar to RocketMQ |
| Multiple DBs in a service |<spanstyle="color:green">✓</span>|<spanstyle="color:red">✗</span>||
| Communication protocols | <spanstyle="color:green">HTTP, gRPC</span> | <spanstyle="color:green">Dubbo, no HTTP</span> | |
| Star count | <imgsrc="https://img.shields.io/github/stars/yedf/dtm.svg?style=social"alt="github stars"/> | <imgsrc="https://img.shields.io/github/stars/seata/seata.svg?style=social"alt="github stars"/> | dtm 0.1 is released from 20210604 and under fast development |
## 快速开始
From the features' comparison above, if your language stack includes languages other than Java, then dtm is the one for you.
If your language stack is Java, you can also choose to access dtm and use sub-transaction barrier technology to simplify your business development.