首页 > 其他 > 详细

它来了!它来了!Seata Go Client 它来了!!!

时间:2020-04-25 13:21:53      阅读:731      评论:0      收藏:0      [点我收藏+]

抱歉抱歉,这个标题一看就是个很标题党的标题。本文所述的 Seata Go Client 只支持 TCC 模式,并不像 Java 版的能支持到 AT 模式、SAGA 模式、XA 模式,聊胜于无。说到这里,我要再次呼吁有相同想法的 Gopher 加入,一起来完善 Seata 的 Golang 版本。

源码??seata-golang

TC Server 调试

  • 先在 Goland 配置环境变量,配置为 config.yaml 文件的绝对路径

    技术分享图片

    技术分享图片

  • 运行 main.go,系统默认监听 8091 端口。

  • Demo 客户端的代码??seata-demo,设置service.localRgroup.grouplist = "127.0.0.1:8091",运行 demo 即可调试。

目前,Java client 的 AT 模式和 TCC 模式,连接 Go 版 TC,能正确提交和回滚。需要注意的是,Go 版本的 TC,全局事务、分支事务是直接存放在内存中的,还未持久化,预计五一假期结束支持持久化事务数据到 DB 中。

Go Client 调试

可能 Gopher 们比较关心 Seata Go Client。如文章一开始提到的,当前只支持TCC 模式。运行也比较简单,直接运行 samples 文件夹中,tcc 文件夹下的 mai n.go,默认会去连接 127.0.0.1:8091。

技术分享图片

访问 http://localhost:8080/commit,模拟的 TCC 事务提交。

访问 http://localhost:8080/rollback,模拟的 TCC 事务回滚。

只对 Go Client 感兴趣的话,建议用 Go Client 连 Java Seata Server 去调试。下面我说一下存在的问题。

问题

在使用 Go Client 连 Go Server 去调试的时候,RM 向 TC 响应的 BranchSessionCommitResponse,TC 会在一个超时时间后收到这个响应,那自然的 TC 就认为分支事务没有提交成功,这个全局事务也就挂起了。目前这个问题尚未无解决方案。

声明:当前的 Seata Golang 版还比较粗糙简陋,存在一些未知 bug,分享出来仅作技术交流与研究,非常欢迎志同道合的朋友一起来共建。

它来了!它来了!Seata Go Client 它来了!!!

原文:https://www.cnblogs.com/DKSL/p/seata-golang.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!