goproxy.cn - 為中國 Go 語言開發(fā)者量身打造的模塊代理

昨天 Go 1.13 終于發(fā)布了,雖然比預期延遲了半個月之久剖张,但畢竟遲到總比不到好。

Go 1.13 的發(fā)布為 Go 帶來了不少變化(詳見:https://golang.org/doc/go1.13 )搔弄,有些變化可能是開發(fā)者無法直接感覺到的顾犹,但有些又是和開發(fā)者日常開發(fā)息息相關的。其中炫刷,Go modules 的扶正就是這次 Go 1.13 發(fā)布中開發(fā)者能直接感覺到的最大變化。

Go modules 最早發(fā)布于 Go 1.11绍申,經過兩個版本的更新后锄奢,它作為依賴管理解決方案來說現(xiàn)在已經變得光彩奪目。隨著 Go modules 一起被發(fā)布的還有一個叫做 Module proxy protocol 的協(xié)議涂屁,通過它我們可以搭建 Go 模塊代理灰伟,最后交由 GOPROXY 環(huán)境變量以指引 go 命令后續(xù)在抓取模塊時的途徑。
對于咱們中國的開發(fā)者來說帖族,一個優(yōu)秀的 Go 模塊代理可以幫助我們解決很多問題挡爵。比如 Go 語言中最知名的 golang.org/x/... 模塊在中國大陸是無法訪問到的,以前我們會用很多其他的辦法來抓取他們涣雕,而若依靠一個可以訪問到它們的模塊代理闭翩,那么將事半功倍。

更因為 Go 1.13 將 GOPROXY 默認成了中國大陸無法訪問的 https://proxy.golang.org 兑障,所以我們中國的開發(fā)者從今以后必須先修改 GOPROXY 才能正常使用 go 來開發(fā)應用了。為此流译,我們聯(lián)合中國備受信賴的云服務提供商七牛云專門為咱們中國開發(fā)者而打造了一個 Go 模塊代理:goproxy.cn先蒋。

什么是 goproxy.cn宛渐?

goproxy.cn 是目前中國最可靠的 Go 模塊代理,這個如果有人存在質疑可以一一測試比對列表中所有能在國內訪問的代理窥翩。對于那個和 goproxy.cn 域名比較相近的 goproxy.io,我之前已經發(fā)表過一篇實測文章(詳見:https://studygolang.com/topic... )寇蚊。

goproxy.cn 還是是一個非營利性項目仗岸,目標是為中國和世界上其他地方的 Gopher 們提供一個免費的、可靠的扒怖、持續(xù)在線的且經過 CDN 加速的模塊代理。正因為 goproxy.cn 由中國 Go 語言第一個吃螃蟹的大公司七牛云運行蚂蕴,所以它的穩(wěn)定性和運行速度都是毋庸置疑的俯邓,如果你的網絡環(huán)境本身不差的情況下,它能快到讓你不可思議鸟整,比 go get 傳統(tǒng)的抓取方式快上了不止幾倍朦蕴。

有人可能會問阿里云的也很快,而且阿里云也是大廠兑燥,為什么不用阿里云的模塊代理(mirrors.aliyun.com/goproxy)琴拧。我只能說,當我在使用阿里云的代理做初始化 github.com/kubernetes/kubernetes 的測試時挣饥,出現(xiàn)了大量的 404 錯誤以至于初始化操作無法完成……而且它還不支持代理 GOSUMDB 的默認值也就是 sum.golang.org,因此你還得手動修改 GOSUMDB 才能夠正常使用 go汛聚。在速度旗鼓相當的情況下短荐,為什么不考慮直接使用一個更穩(wěn)定、高可用的呢痕貌?而且畢竟 goproxy.cn 這個域名也很好記不是嘛~你只用記住 goproxy.cn糠排,就沒了。

Q&A

問:在 Go 1.13 中如何使用 goproxy.cn哺徊?

答:一條 go env -w GOPROXY=https://goproxy.cn,direct 即可乾闰。之所以在后面拼接一個 ,direct,是因為通過這樣做我們可以在一定程度上解決私有庫的問題(當然淋硝, goproxy.cn 無法訪問你的私有庫)宽菜。這個 GOPROXY 設定的工作原理是:當 go 在抓取目標模塊時,若遇見了 404 錯誤继谚,那么就回退到 direct 也就是直接去目標模塊的源頭(比如 GitHub) 去抓取阵幸。而恰好,GitHub 等類似的代碼托管網站的原則基本都是“你無權訪問的你來說就是不存在的”诡壁,所以我才說通過這樣設定可以在一定程度上解決私有庫無法通過模塊代理訪問的問題荠割。

問:在 Go 1.13 之前如何使用 goproxy.cn旺矾?

答:同樣也是設置環(huán)境變量即可夺克,但是得你手動配置,而且還不能使用上述的那個 ,direct 后綴柬帕,因為那是 Go 1.13 剛加的特性狡门。詳細配置方法可以參見 goproxy.cnREADME 文件

問:在 Go 1.13 中如何解決私有庫問題盼铁?

答:在上述的回答中我有提到可以通過 Go 1.13 為 GOPROXY 新增的“代理列表”特性來為goproxy.cn 做一個 fallback 選項尝偎,也就是 direct(直接從目標模塊源頭抓扰艨亍)当辐,它就是解決私有庫的一種途徑,但并不是一個完美的解決方案缘揪。為此找筝,Go 1.13 還推出了一個 GONOPROXY 環(huán)境變量(詳見: https://golang.org/cmd/go/#hdr-Environment_variables ),通過設置它我們可以實現(xiàn)控制讓哪些 module path 忽略 GOPROXY曹抬,無腦回源急鳄。比如 GONOPROXY=*.corp.example.com 就意味著 go 在抓取所有 corp.example.com 的三級子域名下的所有模塊時都將忽略 GOPROXY 設置直接回源到目標模塊的原地址。

問:在 Go 1.13 中如何防止從公共模塊代理中抓取的模塊被篡改疾宏?

答:Go 1.13 新推出了一個 GOSUMDB(默認值是 sum.golang.org 坎藐,國內無法訪問),就是為了實現(xiàn)這個目的,它的值是一個可信任的模塊校驗和數據庫地址凌那,通過指定它吟逝,go 將在抓取完模塊時(無論是否是經過模塊代理抓取的)對所有模塊進行哈希校驗块攒,只有和校驗和數據庫中現(xiàn)有的一致時才算抓取成功。同 GONOPROXY 一樣囱井,Go 1.13 也為 GOSUMDB 配對發(fā)布了一個 GONOSUMDB庞呕,用法一致,作用是控制 go 應該忽略校驗哪些 module path 下的模塊住练。

問:分別設置 GONOPROXYGONOSUMDB 很麻煩,有沒有更好的辦法讲逛?

答:有亏吝,Go 1.13 為了方便管理私有庫規(guī)則,還推出了一個 GOPRIVATE盏混,可以簡單地理解成通過設置它就同時設置了 GONOPROXYGONOSUMDB蔚鸥。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市许赃,隨后出現(xiàn)的幾起案子止喷,更是在濱河造成了極大的恐慌,老刑警劉巖图焰,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件启盛,死亡現(xiàn)場離奇詭異,居然都是意外死亡技羔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門藤滥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鳖粟,“玉大人,你說我怎么就攤上這事拙绊∠蛲迹” “怎么了泳秀?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長榄攀。 經常有香客問我嗜傅,道長,這世上最難降的妖魔是什么檩赢? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任吕嘀,我火速辦了婚禮,結果婚禮上贞瞒,老公的妹妹穿的比我還像新娘偶房。我一直安慰自己,他們只是感情好军浆,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布棕洋。 她就那樣靜靜地躺著,像睡著了一般乒融。 火紅的嫁衣襯著肌膚如雪掰盘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天簇抵,我揣著相機與錄音庆杜,去河邊找鬼。 笑死碟摆,一個胖子當著我的面吹牛,可吹牛的內容都是我干的叨橱。 我是一名探鬼主播典蜕,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼罗洗!你這毒婦竟也來了愉舔?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤伙菜,失蹤者是張志新(化名)和其女友劉穎轩缤,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體贩绕,經...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡火的,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了淑倾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馏鹤。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖娇哆,靈堂內的尸體忽然破棺而出湃累,到底是詐尸還是另有隱情勃救,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布治力,位于F島的核電站蒙秒,受9級特大地震影響,放射性物質發(fā)生泄漏宵统。R本人自食惡果不足惜晕讲,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望榜田。 院中可真熱鬧益兄,春花似錦、人聲如沸箭券。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辩块。三九已至蛔六,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間废亭,已是汗流浹背国章。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留豆村,地道東北人液兽。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像掌动,于是被迫代替她去往敵國和親四啰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內容