commit | d0466b23b508edd72bd407620dad609226b52e32 | [log] [tgz] |
---|---|---|
author | NAND86 <32132003+NAND86@users.noreply.github.com> | Wed Feb 09 09:07:55 2022 +0800 |
committer | GitHub <noreply@github.com> | Wed Feb 09 09:07:55 2022 +0800 |
tree | a7a26b56788c93ca12dbd13c530f82c84c5f5c6f | |
parent | 758bc4d9044f5966d865a819c9f40628c3ca0fbe [diff] |
升级getty版本、bug解决、增加异常处理、优化日志打印、整理go mod (#102) * upgrade getty, fix bug, optimize log
钉钉群号 33069364
作为一个刚入 Golang 坑的普通微服务开发者来讲,很容易产生一个朴素的想法,希望 Golang 微服务也有分布式事务解决方案。我们注意到阿里开源了 Java 版的分布式事务解决方案 Seata,本项目尝试将 Java 版的 Seata 改写一个 Golang 的版本。 在 Seata 没有 Golang 版本 client sdk 的情况下,Golang 版本的 TC Server 使用了和 Java 版 Seata 一样的通信协议,方便调试。 希望有同样朴素想法的开发者加入我们一起完善 Golang 版本的分布式事务解决方案。本方案参考了 dubbo-go 的实现。由于时间有限,且对 golang 的一些特性不甚了解,有些实现不太优雅,希望有更多开发者来参与并优化它。
mysql driver 集成 seata-golang 的工作已经完成,该 driver 基于 https://github.com/go-sql-driver/mysql 开发,开发者可以使用该 driver 对接到各种 orm 中,使用更方便。driver 的项目地址:https://github.com/opentrx/mysql 。 参考 demo:https://github.com/opentrx/seata-go-samples 。
为了更加贴近云原生,我们将通信层换成了 grpc 协议,简化了服务发现机制,可使用域名或 host 进行 rpc 调用,而 v1 版本使用基于 tcp 的 rpc 协议,需要在 tc 内部维护 client 的注册信息,实现上相对更复杂。grpc 版本的代码见于 https://github.com/opentrx/seata-golang/tree/v2 ,demo 见于 https://github.com/opentrx/seata-go-samples/tree/v2 。理论上使用 grpc 协议的 seata 可以集成到 istio,实现链路追踪。
cd ${projectpath}/cmd/tc go build
mv cmd ${targetpath}/ cd ${targetpath}
./cmd start -config ${projectpath}/cmd/profiles/dev/config.yml