{"id":19073345,"url":"https://github.com/dtm-labs/dtmcli-php","last_synced_at":"2025-04-28T18:57:38.677Z","repository":{"id":46106368,"uuid":"387655006","full_name":"dtm-labs/dtmcli-php","owner":"dtm-labs","description":"a php client for distributed transaction framework dtm. ","archived":false,"fork":false,"pushed_at":"2021-11-14T13:45:21.000Z","size":9,"stargazers_count":32,"open_issues_count":1,"forks_count":8,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-04-28T18:57:31.411Z","etag":null,"topics":["database","distributed","distributed-transactions","http","microservice","php","saga","seata","tcc","transaction"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dtm-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-07-20T02:58:58.000Z","updated_at":"2023-11-20T02:16:28.000Z","dependencies_parsed_at":"2022-08-30T19:22:36.396Z","dependency_job_id":null,"html_url":"https://github.com/dtm-labs/dtmcli-php","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtm-labs%2Fdtmcli-php","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtm-labs%2Fdtmcli-php/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtm-labs%2Fdtmcli-php/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtm-labs%2Fdtmcli-php/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dtm-labs","download_url":"https://codeload.github.com/dtm-labs/dtmcli-php/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251372466,"owners_count":21578964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","distributed","distributed-transactions","http","microservice","php","saga","seata","tcc","transaction"],"created_at":"2024-11-09T01:46:24.919Z","updated_at":"2025-04-28T18:57:38.652Z","avatar_url":"https://github.com/dtm-labs.png","language":"PHP","readme":"a client for distributed transaction manager [dtm](https://github.com/yedf/dtm)\n\n\n`dtmcli` 是分布式事务管理器[dtm](https://github.com/yedf/dtm)的客户端sdk\n\n## dtm分布式事务管理服务\n\nDTM是一款跨语言的开源分布式事务管理器，优雅的解决了幂等、空补偿、悬挂等分布式事务难题。提供了简单易用、高性能、易水平扩展的分布式事务解决方案。\n\n## 亮点\n\n* 极易接入\n  - 支持HTTP，提供非常简单的接口，极大降低上手分布式事务的难度，新手也能快速接入\n* 使用简单\n  - 开发者不再担心悬挂、空补偿、幂等各类问题，框架层代为处理\n* 跨语言\n  - 可适合多语言栈的公司使用。方便go、python、php、nodejs、ruby各类语言使用。\n* 易部署、易扩展\n  - 仅依赖mysql，部署简单，易集群化，易水平扩展\n* 多种分布式事务协议支持\n  - TCC、SAGA、XA、事务消息\n\n## 与其他框架对比\n\n目前开源的分布式事务框架，暂未看到非Java语言有成熟的框架。而Java语言的较多，有阿里的SEATA、华为的ServiceComb-Pack，京东的shardingsphere，以及himly，tcc-transaction，ByteTCC等等，其中以seata应用最为广泛。\n\n下面是dtm和seata的主要特性对比：\n\n|  特性| DTM | SEATA |备注|\n|:-----:|:----:|:----:|:----:|\n| 支持语言 |\u003cspan style=\"color:green\"\u003eGolang、python、php及其他\u003c/span\u003e|\u003cspan style=\"color:orange\"\u003eJava\u003c/span\u003e|dtm可轻松接入一门新语言|\n|异常处理| \u003cspan style=\"color:green\"\u003e[子事务屏障自动处理](https://zhuanlan.zhihu.com/p/388444465)\u003c/span\u003e|\u003cspan style=\"color:orange\"\u003e手动处理\u003c/span\u003e |dtm解决了幂等、悬挂、空补偿|\n| TCC事务| \u003cspan style=\"color:green\"\u003e✓\u003c/span\u003e|\u003cspan style=\"color:green\"\u003e✓\u003c/span\u003e||\n| XA事务|\u003cspan style=\"color:green\"\u003e✓\u003c/span\u003e|\u003cspan style=\"color:green\"\u003e✓\u003c/span\u003e||\n|AT事务|\u003cspan style=\"color:red\"\u003e✗\u003c/span\u003e|\u003cspan style=\"color:green\"\u003e✓\u003c/span\u003e|AT与XA类似，性能更好，但有脏回滚|\n| SAGA事务 |\u003cspan style=\"color:orange\"\u003e简单模式\u003c/span\u003e |\u003cspan style=\"color:green\"\u003e状态机复杂模式\u003c/span\u003e |dtm的状态机模式在规划中|\n|事务消息|\u003cspan style=\"color:green\"\u003e✓\u003c/span\u003e|\u003cspan style=\"color:red\"\u003e✗\u003c/span\u003e|dtm提供类似rocketmq的事务消息|\n|通信协议|HTTP|dubbo等协议，无HTTP|dtm后续将支持grpc类协议|\n|star数量|\u003cimg src=\"https://img.shields.io/github/stars/yedf/dtm.svg?style=social\" alt=\"github stars\"/\u003e|\u003cimg src=\"https://img.shields.io/github/stars/seata/seata.svg?style=social\" alt=\"github stars\"/\u003e|dtm从20210604发布0.1，发展快|\n\n从上面对比的特性来看，如果您的语言栈包含了Java之外的语言，那么dtm是您的首选。如果您的语言栈是Java，您也可以选择接入dtm，使用子事务屏障技术，简化您的业务编写。\n\n## 使用示例\n\n```\ncomposer require yedf/dtmcli-php:dev-main\n```\n\n```php\nfunction FireTcc () {\n    $dtm = 'http://192.168.69.128:8080/api/dtmsvr';\n    $svc = 'http://192.168.69.128:4005/api';\n\n    Dtmcli\\tccGlobalTransaction($dtm, function ($tcc) use ($svc) {\n        /** @var Dtmcli\\Tcc $tcc */\n\n        $req = ['amount' =\u003e 30];\n        echo 'calling trans out' . PHP_EOL;\n        $tcc-\u003ecallBranch($req, $svc . '/TransOutTry', $svc . '/TransOutConfirm', $svc . '/TransOutCancel');\n        echo 'calling trans in' . PHP_EOL;\n        $tcc-\u003ecallBranch($req, $svc . '/TransInTry', $svc . '/TransInConfirm', $svc . '/TransInCancel');\n    });\n}\n```\n\n# 可运行的使用示例\n\n见[https://github.com/yedf/dtmcli-php-sample](https://github.com/yedf/dtmcli-php-sample)\n\n# 特别说明\n使用[mix/guzzle](https://github.com/mix-php/guzzle)为http客户端，支持swoole协程请求\n","funding_links":[],"categories":["分布式事务 (Distributed Transaction)"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtm-labs%2Fdtmcli-php","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdtm-labs%2Fdtmcli-php","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtm-labs%2Fdtmcli-php/lists"}