保定景点:介入 Seata 社区到 go 与 Seata 的邂逅

2020-05-16 13 views 1

扫一扫用手机浏览

  众所周知,这几年微服务、云原生提得很火热。2017年,那时公司的向导刘巍,敏锐得提出公司转型微服务。那时,提到微服务人人一头雾水,经由两年的实践,逐渐有了一些心得。但有个问题始终萦绕在微服务开发者的头上,分布式事务到底若何解决,有没有对照完善的方案?二阶段提交、柔性事务、最终一致性?

  2019 年,我注意到阿里巴巴的同砚在社区调研分布式事务需求,立刻加入了社区群。在 seata 0.2 版本的时刻,那时还不叫 seata,叫 fescAR,我看到 seata 代码仓库里只有 dubbo 连系 seata 的 sample,随即在博客园写了一篇 spring boot 若何连系 seata 的博文 Spring Boot微服务若何集成seata解决分布式事务问题? ,这篇文章厥后被收录到 seata wiki 内里,收获到了 18000+ 的阅读量,是我阅读量最高的一篇博客。

  厥后,由于事情对照忙,频频想介入 seata 孝敬,发现了几个 bug,本来想修改来着,效果看社区里边已经有人在做了。

  由于接触微服务,自然而然接触到 k8s 手艺,接触到云原生,接触到 golang。小我私家对 golang 对照感兴趣,对照看好它的未来。看到社区内里也有关于 seata go client 的呼声,遂萌生了打造 golang 版 seata 的想法。

  有人问:喂,同砚,我手艺差,不懂 seata,我能介入 seata-golang 项目吗?实在我刚最先写 seata-golang 的时刻也有这样的疑问,我接触 golang 不久,seata 有些细节也不是太明了,我怎么最先?实在掌握到方法论,最先就不难了。首先,掌握几个观点,TC(Transaction Coordinator)、TM(Transaction Manager)、RM(Resource Manager);然后弄明了这几个观点是干什么的,下面这张图就很好的归纳综合了他们的职责、功效。清晰这些器械后,就是抽象接口啦。接口抽象出来后,就实现,seata 内里那么多的实现,通讯序列化协议有 seata、protobuf、jackson、kryo、hessian、fst,sesssion manager 有基于内存的,也有基于 DB 的,先选择最简朴你最有掌握的实现。

  现在 seata-golang 版本,已经实现基于内存的事务数据管理(session manager),client 端已经实现 TCC 模式。AT 模式的实现还有些细节没有思量好,好比 sql 剖析,主键若何处置等;metrics 收集器还未思量;从设置中央读取设置等。这些问题,都是值得思索并介入孝敬的。

源码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 Client 调试

  可能 Gopher 们对照关心 Seata Go Client。如文章一最先提到的,当前只支持TCC 模式。运行也对照简朴,直接运行 samples 文件夹中,tcc 文件夹下的 main.go,默认会去毗邻 127.0.0.1:8091。

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

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

可以毗邻 Go 版本的 TC Server,也可以毗邻 Java 版的 TC Server,都能准确提交回滚。

声明:当前的 Seata Golang 版还对照粗拙简陋,存在一些未知 bug,分享出来仅作手艺交流与研究。Go 版本的 TC,全局事务、分支事务是直接存放在内存中的,还未持久化,预计五一假期竣事支持持久化事务数据到 DB 中,届时可以体验原汁原味的 golang 版的分布式事务解决方案。最后,异常迎接志同道合的同伙一起来共建。

,

SuNBet

www.0-577.com欢迎您的加入。

Sunbet网站内容转载自互联网,如有侵权,联系Sunbet删除。

本文链接地址:http://www.caac-feixingjia.com/post/768.html

相关文章

发表评论

  • www.66rfd.com(www.mingjiumingcha.com)是Sunbet 申博的官方网站。www.66rfd.com提供申博开户(sunbet开户)、SunbetAPP下载、Sunbet代理合作等业务。可以,我反正爱了

    2020-05-16 00:40:01 回复该评论