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.
- Support HTTP and gRPC, provide easy-to-use programming interfaces, lower substantially the barrier of getting started with distributed transactions. Newcomers can adapt quickly.
## 与其他框架对比
* Easy to use
- Relieving developers from worrying about suspension, null compensation, idempotent transaction, and other tricky problems, the framework layer handles them all.
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.
The following is a comparison of the main features of dtm and Seata.
## 快速开始
| Features | DTM | Seata | Remarks |
| :-----: | :----: | :----: | :----: |
| 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:red">✗</span> | <spanstyle="color:green">✓</span> | AT is similar to XA with better performance but with dirty rollback |
| SAGA | <spanstyle="color:orange">Simple mode</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.