它來了!它來了!Seata Go Client 它來了!!!

抱歉抱歉,這個標題一看就是個很標題黨的標題。本文所述的 Seata Go Client 只支持 TCC 模式,並不像 Java 版的能支持到 AT 模式、SAGA 模式、XA 模式,聊勝於無。說到這裏,我要再次呼籲有相同想法的 Gopher 加入,一起來完善 Seata 的 Golang 版本。

源碼👇seata-golang

TC Server 調試

  • 先在 Goland 配置環境變量,配置爲 config.yaml 文件的絕對路徑

    image-20200425113815056

    image-20200425113443475

  • 運行 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。

image-20200425115159565

訪問 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,分享出來僅作技術交流與研究,非常歡迎志同道合的朋友一起來共建。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章