抱歉抱歉,这个标题一看就是个很标题党的标题。本文所述的 Seata Go Client 只支持 TCC 模式,并不像 Java 版的能支持到 AT 模式、SAGA 模式、XA 模式,聊胜于无。说到这里,我要再次呼吁有相同想法的 Gopher 加入,一起来完善 Seata 的 Golang 版本。
源码??seata-golang
先在 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 中。
可能 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