关于Go分布式事务DTM比较少见的几个问题
近些时间在使用分布式事务解决方案 dtm 的时候,遇到了几个问题,给大家分享下,有类似问题的,可以做下参考。
第一个问题
问题描述
使用dtmcli
包的时候,启动服务异常
github.com/dtm-labs/dtmcli/dtmimp
/go/pkg/mod/github.com/dtm-labs/dtmcli@v1.15.0/dtmimp/vars.go:48:22: undefined: dtmdriver.GetHTTPDriver
解决方案
我调试了很久,发现dtmcli
原来的仓库已经弃用了,需要使用新包github.com/dtm-labs/client
。
然后将项目中使用github.com/dtm-labs/dtmcli
的地方改为github.com/dtm-labs/client/dtmcli
。
github.com/dtm-labs/dtmgrpc
改为github.com/dtm-labs/client/dtmgrpc
。
第二个问题
问题描述
使用了dtm
的gozero
驱动包github.com/dtm-labs/driver-gozero
,启动服务报错
github.com/zeromicro/zero-contrib/zrpc/registry/consul
/go/pkg/mod/github.com/zeromicro/zero-contrib/zrpc/registry/consul@v0.0.0-20220228111653-d672d81f39ab/builder.go:20:54: url.Authority undefined (type resolver.Target has no field or method Authority)
/go/pkg/mod/github.com/zeromicro/zero-contrib/zrpc/registry/consul@v0.0.0-20220228111653-d672d81f39ab/builder.go:20:65: cannot use url.Endpoint (value of type func() string) as string value in array or slice literal
解决方案
这个问题一开始还是挺纳闷的,看了报错,用的是etcd
来注册dtm
服务,关consul
什么事。
后面点进去github.com/dtm-labs/driver-gozero
看了下代码,init方法中,有引用到github.com/zeromicro/zero-contrib/zrpc/registry/consul
。
去作者的github查了下issues,有位老哥也提交了 这个问题 ,同样是0.0.0-20220228111653-d672d81f39ab
的版本。
后面确认了下,实际上是有新的提交版本,mod自动下载的不是最新的,使用命令手动更新下。
|
|