Go 模块代理超大型库初始化速度实测:goproxy.cn vs goproxy.io

aofei · 2019-08-31 21:17:20 · 7259 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2019-08-31 21:17:20 的主题,其中的信息可能已经有所发展或是发生改变。

今天我对 Go 模块代理 goproxy.cngoproxy.io 分别做了一次超大型库 github.com/kubernetes/kubernetes 在初始化时拉取依赖模块的速度实测。(测试实录视频:goproxy.cn/assets/videos/goproxy.cn-vs-goproxy.io.mp4

注:本来也会有阿里云的模块代理 mirrors.aliyun.com/goproxy 的测试结果的,可是在使用阿里云的模块代理时总是无法初始化 Kubernetes 这个库,原因未知,但确定不是网络的问题(找了几个朋友帮忙试了),谁有空的话也可以试试看能成功不(阿里云的模块代理失败结果截图)。至于为什么没有 athens.azurefd.net 的测试结果,是因为 Athens 的作者本人说了它是一个作为 Demo 用的服务,存在不稳定因素,故而没将测试结果加到视频中,同样环境下它的测试结果是总耗时 44.430 秒。没有 gocenter.io 的测试结果是因为它实在是太慢了,慢到我无法坚持等到测试结果出来……而且由于 gocenter.io 是个知名的“404 服务”,意思也就是说它总是会出现无法找到目标模块的情况,原因是它在设计上有意地没有添加实时回源措施,属于主动发现式的服务,故而不建议使用。

国内代理说明(参考自:github.com/golang/go/wiki/Modules#are-there-always-on-module-repositories-and-enterprise-proxies):

  • goproxy.cn:由七牛云运行,支持代理 sum.golang.org,经过 CDN 加速,高可用,可应用进公司复杂的开发环境中,亦可用作上游代理;
  • mirrors.aliyun.com/goproxy:由阿里云运行,不支持 sumdb 代理,经过 CDN 加速,高可用,可应用进公司复杂的开发环境中,亦可用作上游代理;
  • goproxy.io:由个人运行,支持代理 sum.golang.org

测试环境:

  • MacBook Pro (15-inch, 2016)
  • 北京移动 100 Mbit/s 宽带

goproxy.cn-vs-goproxy.io.png


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

7259 次点击  ∙  2 赞  
加入收藏 微博
6 回复  |  直到 2019-09-11 08:45:47
canzyp
canzyp · #1 · 6年之前

goproxy.cn 就是你维护的吧?利益相关是否要先提出来?

aofei
aofei · #2 · 6年之前
canzypcanzyp #1 回复

goproxy.cn 就是你维护的吧?利益相关是否要先提出来?

老哥说的“利益相关”是指的啥意思?这所以有这个实测视频,是因为 goproxy.cn 在 telegram 一个群里被黑了,只要有人提到了 goproxy.cn,就有人在下面跟一句 goproxy.cn 不靠谱用着总失败,建议用 goproxy.io,所以我才突然意识到宣传得实在是太少了,得出来证明一下。至于为啥做这个项目,老哥你可以看一下我在 https://mp.weixin.qq.com/s/45DTGk90CQzvqN1-y4WvVw 这篇推送里的留言。😊

jermyBo
jermyBo · #3 · 6年之前

升级到go1.13后 设置了GONOPROXY和七牛云这个代理 还是 不能 go get到私有库的代码 大佬有遇到这个问题吗image.png image.png

saberlong
saberlong · #4 · 6年之前
jermyBojermyBo #3 回复

升级到go1.13后 设置了GONOPROXY和七牛云这个代理 还是 不能 go get到私有库的代码 大佬有遇到这个问题吗![image.png](https://static.studygolang.com/190905/c1072b01e50d546de9879067c4437085.png) ![image.png](https://static.studygolang.com/190905/6306da5f41656dacae11928414f4b3d0.png)

这个问题目测是go-get=1的处理的问题。我用gitea有类似问题。我修改源码解决了。 问题出在现在go-get获取元数据时,会并发执行。 比如原来是先[xxx/tools/redis?go-get=1]找不到然后[xxx/tools?go-get=1]。 现在是[xxx/tools/redis?go-get=1]、[xxx/tools?go-get=1]、[xxx?go-get=1]并发执行,然后添加gopath/pkg/mo/cache/中的vcs中,认为是需要下载的包。然后会执行go get。但实际上[xxx/tools?go-get=1]、[xxx?go-get=1]是不存在的,应该返回404。我在gitea中修改源码解决了。gitlab不知道怎么修改,思路类似。你可以关注下github中别人提的问题,看看有没有解决

jermyBo
jermyBo · #5 · 6年之前
saberlongsaberlong #4 回复

#3楼 @jermyBo 这个问题目测是go-get=1的处理的问题。我用gitea有类似问题。我修改源码解决了。 问题出在现在go-get获取元数据时,会并发执行。 比如原来是先[xxx/tools/redis?go-get=1]找不到然后[xxx/tools?go-get=1]。 现在是[xxx/tools/redis?go-get=1]、[xxx/tools?go-get=1]、[xxx?go-get=1]并发执行,然后添加gopath/pkg/mo/cache/中的vcs中,认为是需要下载的包。然后会执行go get。但实际上[xxx/tools?go-get=1]、[xxx?go-get=1]是不存在的,应该返回404。我在gitea中修改源码解决了。gitlab不知道怎么修改,思路类似。你可以关注下github中别人提的问题,看看有没有解决

老哥 你这个修改源码 是直接修改 针对go sdk的源码 还是针对说修改 gitlab中仓库重定向那边的源码了

saberlong
saberlong · #6 · 6年之前

@jermyBo 不是针对go sdk的,是修改gitea

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传