dtm-labs / dtm

A distributed transaction framework, supports workflow, saga, tcc, xa, 2-phase message, outbox patterns, supports many languages.
http://d.dtm.pub
BSD 3-Clause "New" or "Revised" License
10.12k stars 970 forks source link

征求大家最想要的功能和特性 #5

Open yedf2 opened 3 years ago

yedf2 commented 3 years ago

dtm开源至今,受到了大量用户的青睐,现征求大家最想要的功能和特性,希望大家多给好的意见

ctyytc commented 3 years ago

请问目前有Java SDK的计划吗?我们目前是PHP和Java混合项目,期待能有Java SDK出现

yedf2 commented 3 years ago

@ctyytc 您好,您能否参与进来,帮忙提供Java的SDK?这个工作的意义挺大,需要的工作量不大,例如python客户端,支持TCC,我大约花了1天全部弄完。 我可以把您加到维护者里面来,方便您修改和提交代码,不知您是否有兴趣?

geffzhang commented 3 years ago

C# 的SDK 很想要,有相关的SDK开发文档吗

yedf2 commented 3 years ago

C# 的SDK 很想要,有相关的SDK开发文档吗

目前我们有PHP、python、node、go的SDK,您可以参考。这些项目都在  http://github.com/yedf 下面能找到

geffzhang commented 3 years ago

C# 的SDK 已经可以支持TCC 了https://github.com/yedf/dtmcli-csharp

yedf2 commented 3 years ago

请问目前有Java SDK的计划吗?我们目前是PHP和Java混合项目,期待能有Java SDK出现

已有Java SDK,参考 https://github.com/yedf/dtmcli-java

hisunwei commented 3 years ago

代码结构有点乱, dtmcli 是golang版本的http  sdk, dtmgrpc 是 grpc sdk,  但是dtmsvr 又依赖了dtmcli的代码? 以及大量的字符串常量用来表示状态,影响可读性。 希望能改进一下

yedf2 commented 3 years ago

代码结构有点乱, dtmcli 是golang版本的http  sdk, dtmgrpc 是 grpc sdk,  但是dtmsvr 又依赖了dtmcli的代码? 以及大量的字符串常量用来表示状态,影响可读性。 希望能改进一下

对于dtmsvr和dtmcli公用的代码,您认为如何组织更好?dtmsvr依赖dtmcli看起来并没有造成混乱,这样的主要目的是为了保持dtmcli的简单,不用再引入一个包。对于大多数用户来说,关心dtmcli就可以了

字符串表示状态,这样的可读性并不差呀,不太清楚您想要如何改善可读性?

anden007 commented 2 years ago

建议提供Dubbo-go的gRPC实现,强强联手!

csimplestring commented 2 years ago

能否把提供OpenAPI Specification的swagger文件,这样方便各种语言client的自动生成?

yedf2 commented 2 years ago

能否把提供OpenAPI Specification的swagger文件,这样方便各种语言client的自动生成?

能否给个参考资料,我看看

csimplestring commented 2 years ago

@yedf2 dtm的server是基于Gin开发的,所以应该可以使用 https://github.com/swaggo/gin-swagger 来自动生成swagger文档, 有了swagger文档后,任何语言就可以根据它来生成client,比如 https://github.com/OpenAPITools/openapi-generator

yedf2 commented 2 years ago

我有空再研究一下,因为dtm一般不会裸着用http请求,通常会封装一层比较薄的SDK,要处理一下branch_id,子事务屏障等,所以直接生成的http client不太实用

wthdt commented 2 years ago

子事务分支存在依赖关系,这么怎么做呢

yedf2 commented 2 years ago

子事务分支存在依赖关系,这么怎么做呢

这个是指什么样的依赖?

CharlesZhong commented 2 years ago

请问是否有支持事物表分库分表的计划,如果业务上面日均业务量比较大,可能需要进行水平扩展。

yedf2 commented 2 years ago

请问是否有支持事物表分库分表的计划,如果业务上面日均业务量比较大,可能需要进行水平扩展。

参考一下这个建表语句:sqls/dtmsvr.tdsql.sql。如果你已经有相关的实际场景,可以在群里讨论

liuxzhi commented 2 years ago

PHP 的两阶段提交SDK什么时候能支持,文档说目前仅支持TCC,希望优先考虑

yedf2 commented 2 years ago

PHP 的两阶段提交SDK什么时候能支持,文档说目前仅支持TCC,希望优先考虑

因为我不熟悉PHP,所以PHP的相关代码是由社区贡献的,欢迎PR

wthdt commented 2 years ago

比如补偿分支依赖正向分支的结果呢?感觉这个框架不能解决相对复杂的场景

yedf2 commented 2 years ago

比如补偿分支依赖正向分支的结果呢?感觉这个框架不能解决相对复杂的场景

补偿分支依赖正向分支的结果,这个可以直接在业务层解决,解决方案通常比较简单。如果放到分布式事务框架里面来做,反而非常复杂

Bryant-Yang commented 2 years ago

针对python的sdk,看到业务回调需要依赖pymysql的cursor对象。希望业务代码回调能支持基于sqlalchemy的session的形式。补充:查阅barrier.py中使用cursor主要是用来执行commit, rollback,具体行为和session相似,只是对dtm_barrier表的写操作获取affected数量还不太确定session是否可以达成和cursor相同的效果。

yedf2 commented 2 years ago

针对python的sdk,看到业务回调需要依赖pymysql的cursor对象。希望业务代码回调能支持基于sqlalchemy的session的形式。补充:查阅barrier.py中使用cursor主要是用来执行commit, rollback,具体行为和session相似,只是对dtm_barrier表的写操作获取affected数量还不太确定session是否可以达成和cursor相同的效果。

您的建议非常好,欢迎提PR

dengyangxi commented 2 years ago

希望能支持 Dapr https://github.com/dapr/dapr

dengyangxi commented 2 years ago

希望能支持 Dapr https://github.com/dapr/dapr

shuqingzai commented 2 years ago

希望可以支持 opentelemetry

aksu-104128 commented 1 year ago

二阶段消息,分支事务的请求payload需要在本地事务执行完成后才能获取,比如将本地事务insert后得到的ID传给分支事务