RPC 的变革 —— ARPC 项目自荐

lesismal · · 5138 次点击
go mod主要是为了本项目依赖项的版本管理,由于目前ARPC的框架部分并不依赖标准库之外的包,所以加入go mod意义不大,如果放个空的go mod,也不会有什么作用,只是为了go mod而go mod 如果ARPC添加了非空的go mod,由于目前micro、protocol是放在ARPC下面的子包作为扩展性样例、有依赖etcd、quic、gorillia/websocket等,会引入很多三方包的依赖。而使用ARPC的项目可能依赖多个三方项目,这些多个三方项目各自依赖的某些相同库的不同版本又可能引起冲突、不兼容问题,需要额外的处理,或者有时go mod内记录的某个库的某个版本,被该库官方删掉了该版本时,也需要额外的处理,这些都是近两年遇到过的一些问题,不罚gin这种流行项目官方的中间件会遇到版本依赖冲突的情况。虽然不是大问题,但还是略显麻烦,所以我在实现ARPC时才希望保持最少依赖、不给用户制造额外的麻烦,甚至以此作为一个优势 并且,去年的统计好像go mod还没有普及,很多人仍旧在使用GOPATH的传统方式,不知道截止目前是什么情况、go mod普及度如何 有使用ARPC的项目,该项目自身使用go mod即可 如果以后ARPC加入了更多功能并且引入了三方依赖,或者有其他更好的理由支持,我会再考虑使用go mod
#5
更多评论
看了下楼主的项目, 好像目前没用go mod来管理? 如果可以,希望能用go mod
#1
<a href="/user/soluty" title="@soluty">@soluty</a> 帖子里最少依赖的部分有讲,因为ARPC框架部分package和自己子package本身不依赖标准库之外的其他三方库,所以不需要 go mod ^_^ micro、protocol里的子package实现了服务发现与注册、对quic和websocket的支持是作为样例,需要依赖etcd、gorillia等,但这属于业务层,并不是ARPC框架本身的依赖项
#2