精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何欺騙 Go Mod ?

存儲
Promethues 也有其自身局限性,其中影響最大的就是其數(shù)據(jù)的高可用方案和集群方案。監(jiān)控也是業(yè)務(wù)系統(tǒng)的重中一環(huán),不能因為監(jiān)控系統(tǒng)宕機(jī)導(dǎo)致報警無法及時發(fā)出。

[[420434]]

 hi,大家好,我是 haohongfan。

最近在做 prometheus 生態(tài)的 cortex 優(yōu)化工作,遇到一個比較坑的 go mod 的問題,這里分享一下。

我為什么將標(biāo)題稱為:如何欺騙 Go mod 呢?這個挺有意思的,這里先賣個關(guān)子,不過確實是突破了 Go mod 的相關(guān)特性。(嗯,曹大的 Go mod 十宗罪又可以增加一宗了)

在正式展開這個話題之前,需要簡單的介紹下 cortex 和 thanos 這兩個項目。

Prometheus 的局限性

說到業(yè)務(wù)開發(fā)基本上都離不開監(jiān)控系統(tǒng),Prometheus 做為云原生的寵兒,以優(yōu)秀的設(shè)計,靈活的使用方式,以優(yōu)異成績從 CNCF 順利畢業(yè),也是很多公司做監(jiān)控的首選。

但是呢,Promethues 也有其自身局限性,其中影響最大的就是其數(shù)據(jù)的高可用方案和集群方案。監(jiān)控也是業(yè)務(wù)系統(tǒng)的重中一環(huán),不能因為監(jiān)控系統(tǒng)宕機(jī)導(dǎo)致報警無法及時發(fā)出。

Prometheus 官方也有提出聯(lián)邦方案來解決集群問題,但是這個方案極其復(fù)雜而且很多問題還是解決不了,于是就造就了另外兩個 CNCF 的沙箱項目:cortex 和 thanos。這兩個項目都是為了解決 Promethues 的集群,高可用的。

由于這兩個項目要解決問題的目的是一致的,所以就會出現(xiàn)很多功能都是可以相互復(fù)用的,于是有趣的事情就發(fā)生了。

cortex

話說因為某些的需求,不得已需要更改下 thanos 的相關(guān)代碼。我本地調(diào)試的時候?qū)?cortex 依賴的 thanos 給 replace 了一下。

  1. replace github.com/thanos-io/thanos => /Users/hhf/goproject/cortex/thanos 

再等我編譯的時候,就編譯不過了。

  1. # github.com/sercand/kuberesolver 
  2. ../../../go/pkg/mod/github.com/sercand/kuberesolver@v2.1.0+incompatible/builder.go:108:82: undefined: resolver.BuildOption 
  3. ../../../go/pkg/mod/github.com/sercand/kuberesolver@v2.1.0+incompatible/builder.go:163:32: undefined: resolver.ResolveNowOption 

這就讓人很無奈,別著急,我們看看這個 kuberesolver 是被誰依賴的。

先看下被 replace 之前:

  1. ▶ go mod graph| grep kuberesolver 
  2. github.com/weaveworks/common@v0.0.0-20210419092856-009d1eebd624 github.com/sercand/kuberesolver@v2.1.0+incompatible 
  3. github.com/weaveworks/common@v0.0.0-20210112142934-23c8d7fa6120 github.com/sercand/kuberesolver@v2.1.0+incompatible 
  4. github.com/weaveworks/common@v0.0.0-20200206153930-760e36ae819a github.com/sercand/kuberesolver@v2.1.0+incompatible 
  5. github.com/weaveworks/common@v0.0.0-20201119133501-0619918236ec github.com/sercand/kuberesolver@v2.1.0+incompatible 
  6. github.com/weaveworks/common@v0.0.0-20200914083218-61ffdd448099 github.com/sercand/kuberesolver@v2.1.0+incompatible 
  7. github.com/weaveworks/common@v0.0.0-20200625145055-4b1847531bc9 github.com/sercand/kuberesolver@v2.1.0+incompatible 
  8. github.com/thanos-io/thanos@v0.13.1-0.20200731083140-69b87607decf github.com/sercand/kuberesolver@v2.4.0+incompatible 

可以看到正常版本下,kuberesolver@2.4.0 被 thanos 所依賴,kuberesolver@v2.1.0 被 weaveworks 所依賴。

replace 之后

  1. ▶ go mod graph| grep kuberesolver 
  2. github.com/weaveworks/common@v0.0.0-20210419092856-009d1eebd624 github.com/sercand/kuberesolver@v2.1.0+incompatible 

是不是很神奇,kuberesolver@v2.4.0 這個版本竟然消失了。由于 kuberesolver 的 v2.1.0 和 v2.4.0 是不兼容的,所以導(dǎo)致 replace 之后就無法編譯了。

Gomod replace 語義

其實這并不神奇,這個涉及到 Go mod 的 replace 語義,不過也是很容易讓人忽略的特性。

replace directives:(https://golang.org/ref/mod#go-mod-file-replace)

  1. replace directives only apply in the main module’s go.mod file and are ignored in other modules. See Minimal version selection for details. 

其實很簡單,replace 只對主模塊(也就是你的當(dāng)前項目)是生效的??梢宰鋈缦碌目偨Y(jié):

  • 主模塊的 replace 對于被依賴的模塊是不生效的
  • 被依賴的模塊的 go.mod 的 replace 對主模塊也是不生效的

所以,當(dāng) replace 之后,cortex 依賴的 thanos 的 replace 是不生效的。我們理一下依賴樹:

  • 主模塊 cortex => require github.com/weaveworks/common v0.0.0-20210419092856-009d1eebd624
  • weaveworks => requre github.com/sercand/kuberesolver v2.1.0+incompatible
  • 于是整體上 kuberesolver 就只有了 v2.1.0 了

這個邏輯是跟 gomod 的 replace 語義是吻合的,也就是 replace 之后編譯不過是正確的。

欺騙 gomod

那就更加神奇了,為何 cortex 直接 require thanos 就能編譯成功,按照 gomod replace 語義來說,這也是編譯不過的才是正確的。

因為根據(jù)文檔我們知道,replace 僅僅作用于主模塊,脫離了主模塊是一律不生效的,這個是毋庸置疑的。

我做了個實驗放在了 https://github.com/georgehao/gomodtestmain ,有興趣的可以試一下,這個能驗證 gomod 是遵循 gomod replace 語義 和 MVS (最小版本選擇)算法的。

問題基本陷入了僵局,我們?nèi)绾纹凭帜?

繼續(xù)使用 go mod graph 功能,來查看 cortex 依賴的 thanos 的依賴樹。

  1. github.com/thanos-io/thanos@v0.19.1-0.20210729154440-aa148f8fdb28 gopkg.in/yaml.v3@v3.0.0-20210107192922-496545a6307 
  2. github.com/thanos-io/thanos@v0.13.1-0.20210401085038-d7dff0c84d17 github.com/Azure/azure-pipeline-go@v0.2.2 
  3. github.com/thanos-io/thanos@v0.8.1-0.20200109203923-552ffa4c1a0d k8s.io/utils@v0.0.0-20191114200735-6ca3b61696b6 
  4. github.com/thanos-io/thanos@v0.13.1-0.20210204123931-82545cdd16fe gopkg.in/yaml.v2@v2.3.0 
  5. github.com/thanos-io/thanos@v0.13.1-0.20201030101306-47f9a225cc52 go.uber.org/goleak@v1.1.10 
  6. github.com/thanos-io/thanos@v0.13.1-0.20200807203500-9b578afb4763 go.elastic.co/apm/module/apmot@v1.5.0 
  7. .... 
  8. github.com/thanos-io/thanos@v0.13.1-0.20200731083140-69b87607decf github.com/gogo/protobuf@v1.3.1 

由于這個依賴樹太長(700多行),我就不貼了,基本上也能看出來,cortex 依賴了 thanos N 多個版本,其中在最后一個版本中的 go.mod 中我們發(fā)現(xiàn)了一個有意思的東西:

  1. require ( 
  2.   github.com/sercand/kuberesolver v2.4.0+incompatible // indirect 
  3. ) 

也就是鬧了半天,由于 thanos 某個很古老的版本的 gomod require kuberesolver@v2.4.0,讓 gomod 誤以為 cortex 依賴的 thanos 依然是 require 了 kuberesolver@v2.4.0 了。雖然 thanos 早就改成了 repace kuberesolver,但也就讓 cortex 順利編譯過去了。

這算不算 gomod 的 bug 呢?

為什么 cortex 會依賴 thanos 這么多版本呢?這就要回到開篇說的 cortex 和 thanos 功能復(fù)用的問題了。

目前 cortex 和 thanos 這個兩個項目,基本上是這么依賴的:

  1. cortex 1.9.0 -> thanos v0.19.1-0.20210729154440-aa148f8fdb28 
  2. thanos v0.19.1-0.20210729154440-aa148f8fdb28 -> cortex v1.8.1-0.20210422151339-cf1c444e0905 
  3. cortex v1.8.1-0.20210422151339-cf1c444e0905 -> thanos v0.13.1-0.20210401085038-d7dff0c84d17 
  4. .... 

cortex 與 thanos 之間的相互引用,就像俄羅斯套娃一樣,簡直就是 gomod 的噩夢。go mod replace 語義,竟然讓這兩個套娃給破解了。

如何解決

對應(yīng)如何cortex replace thanos 的問題,其實知道問題的根本所在,解決起來就很簡單了,有兩種方式吧:

  1. 由于 gomod MVS 算法,我們直接在主項目 cortex 中指定 kuberesolver 的版本為 v2.4.1
  2. 方案 1 僅對于向下兼容的項目比較適用,如果某項目沒有這個責(zé)任心的話,這么做可能是會出問題的,所以比較直接的解決辦法,直接修改 thanos 的 go.mod, 將 thanos 的所依賴的 kuberesolver 從 replace 挪到 require 中

 

 

責(zé)任編輯:武曉燕 來源: HHFCodeRv
相關(guān)推薦

2023-12-27 19:52:08

Go模塊命令

2010-09-16 15:39:18

2010-08-06 10:38:59

2021-01-16 10:39:11

欺騙攻擊網(wǎng)絡(luò)犯罪網(wǎng)絡(luò)安全

2021-03-01 18:48:21

Go管理工具

2019-04-12 09:28:46

2025-04-29 08:59:37

2014-09-29 09:01:33

2010-01-11 10:46:31

2012-10-11 10:11:09

2021-02-19 09:01:37

Go項目模塊

2019-05-07 09:29:19

欺騙蜜罐網(wǎng)絡(luò)攻擊

2019-03-22 07:44:01

2010-09-16 13:42:34

2013-09-17 09:08:07

ARP欺騙IP

2009-12-31 15:36:52

2020-11-11 10:13:08

PPID欺騙DLL注攻擊

2012-12-13 10:34:35

ARP欺騙

2022-08-08 08:48:15

Go版本偽版本

2025-02-12 08:50:22

點贊
收藏

51CTO技術(shù)棧公眾號

欧美性猛交xxxx偷拍洗澡| 亚洲综合自拍| 午夜久久久影院| 久久精品日产第一区二区三区精品版| 国产一级做a爱片久久毛片a| 亚洲综合小说图片| 欧美日韩成人在线| 亚洲人精品午夜射精日韩| 欧美大片aaa| 国产在线麻豆精品观看| 91sao在线观看国产| 成人黄色短视频| 韩国女主播一区二区三区| 色婷婷久久一区二区三区麻豆| 在线观看一区二区三区三州| 日本黄色不卡视频| 久草精品在线观看| 2021久久精品国产99国产精品| www.99re6| 欧美绝顶高潮抽搐喷水合集| 67194成人在线观看| 国产免费黄色av| а天堂中文在线官网| 国产亚洲午夜高清国产拍精品 | 国产高清不卡一区| 人人澡人人澡人人看欧美| 日本aⅴ在线观看| 成人情趣视频| 日韩成人性视频| 欧美成人精品一区二区综合免费| 成人a在线观看高清电影| 狠狠色狠狠色综合日日小说| 免费网站在线观看视频| 欧美jizzhd欧美| 国产亲近乱来精品视频| 久久婷婷开心| 免费av网站在线播放| 国产真实乱偷精品视频免| 国产精品入口免费视| 中文在线第一页| 亚洲女人av| 97热精品视频官网| 国产真实夫妇交换视频| 亚洲欧美伊人| 久久成人亚洲精品| chinese全程对白| 日韩欧美大片| 日韩亚洲欧美中文在线| 懂色av粉嫩av浪潮av| 欧美日一区二区| 国产一区二区三区欧美| 精品无码人妻一区二区免费蜜桃| 国产99久久久国产精品成人免费| 亚洲精品天天看| 91精彩刺激对白露脸偷拍| 综合亚洲自拍| 亚洲人在线视频| 少妇无套高潮一二三区| 欧美偷拍自拍| 日韩有码在线电影| 日韩精品123区| 午夜国产精品视频免费体验区| 精品中文字幕在线观看| 精品无码免费视频| 99伊人成综合| 国产a级全部精品| 免费黄色片视频| 蜜臀久久99精品久久久久宅男 | 欧美爱爱视频免费看| 日本不卡1234视频| 日本道在线观看一区二区| 一区二区三区韩国| 久久精品九色| 亚洲精品久久久久国产| 亚洲AV无码国产成人久久| 日韩免费视频| 欧美激情在线有限公司| 日韩色图在线观看| 美女www一区二区| 91精品中文在线| 免费a视频在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美一区少妇| 国产最新在线| 福利微拍一区二区| 国产视频1区2区3区| 五月亚洲婷婷| 日韩精品在线第一页| 99热99这里只有精品| 黄色另类av| 国产精品极品美女在线观看免费| 一本一道精品欧美中文字幕| 国产麻豆午夜三级精品| 久久99精品久久久久久水蜜桃 | 国产精品自拍视频在线| 亚洲小说春色综合另类电影| 亚洲视频在线看| 免费麻豆国产一区二区三区四区| 先锋影音久久久| 91麻豆蜜桃| 国产一级在线| 亚瑟在线精品视频| 天天干天天玩天天操| 欧美91在线| 久久av.com| 看黄色一级大片| av欧美精品.com| 7777在线视频| 欧美日韩在线精品一区二区三区激情综合| 欧美一二三区在线观看| 538精品视频| 一区二区激情| 成人动漫在线观看视频| 77导航福利在线| 欧美特黄级在线| 91精品国产高清91久久久久久 | 久久精品一级| 丝袜情趣国产精品| 男人天堂av在线播放| 成人高清在线视频| 免费观看国产视频在线| 美女网站视频一区| 亚洲精品视频免费| 天堂网一区二区三区| 国产黄色91视频| 亚洲日本理论电影| 成人看片网站| 日韩大片在线观看视频| 久久久久久久中文字幕| 国产乱子轮精品视频| 亚洲人成网站在线播放2019| 久久爱91午夜羞羞| 日韩大片在线观看视频| 国产成年人免费视频| 国产精品自拍av| 超碰97免费观看| 狂野欧美性猛交xxxx| 亚洲网站在线播放| 亚洲精品中文字幕乱码三区91| 成人18视频日本| 阿v天堂2018| 国偷自产av一区二区三区| 九九热最新视频//这里只有精品| 92久久精品一区二区| 国产精品久久久久久久久快鸭| 亚洲五月天综合| 国产一区二区三区四区五区传媒| 日韩av免费在线| 欧美日韩影视| 在线免费不卡电影| 99久久久无码国产精品衣服| 日日夜夜精品视频天天综合网| 日韩欧美亚洲v片| 国产成人毛片| 久久九九免费视频| а√天堂资源在线| 亚洲v精品v日韩v欧美v专区 | 国产日韩欧美激情| 妺妺窝人体色www在线观看| 女厕嘘嘘一区二区在线播放 | 亚洲国产精品精华液ab| 污版视频在线观看| 一区二区在线影院| 国产69精品久久久久9999apgf | 九色视频网站在线观看| 在线一区二区三区四区| 日韩av毛片在线观看| 国产成人免费视频网站| 成人一对一视频| 精品99在线| 91网在线免费观看| 国精产品一区一区三区mba下载| 亚洲国产91色在线| 亚洲 欧美 日韩 在线| 国产精品久久久久久久午夜片| 特级黄色片视频| 亚洲另类视频| 亚洲成人av动漫| 中文字幕日韩高清在线| 日韩av手机在线| 国产网站在线免费观看| 亚洲第一色中文字幕| 日韩电影在线观看一区二区| 亚洲欧美怡红院| 国产精品入口麻豆| 日本三级亚洲精品| 国产美女作爱全过程免费视频| 亚洲制服欧美另类| 亚洲v日韩v综合v精品v| 亚洲国产成人二区| 欧美老女人在线视频| 男女视频在线观看免费| 91精品国产91久久久久久一区二区| 日本少妇在线观看| 国产精品人妖ts系列视频| 三级视频网站在线观看| 美女mm1313爽爽久久久蜜臀| 131美女爱做视频| 色综合咪咪久久网| 精品国产综合久久| 欧美专区一区| 国产精品久久久久福利| 136福利第一导航国产在线| 中文字幕亚洲欧美日韩高清 | 中文字幕一区日韩电影| 亚洲av激情无码专区在线播放| 91精选在线观看| 天堂网一区二区| 亚洲福利一区二区三区| 性生交大片免费全黄| 久久免费国产精品| jjzzjjzz欧美69巨大| 捆绑调教美女网站视频一区| 91视频 -- 69xx| 欧美日韩1区| 正义之心1992免费观看全集完整版| 青青草原在线亚洲| 成人欧美一区二区三区在线观看| 四虎国产精品永久在线国在线 | 国产女主播喷水视频在线观看| 一区二区免费看| 国产稀缺精品盗摄盗拍| 日本一二三不卡| 中文字幕av久久爽一区| 91色porny| 亚洲制服丝袜在线播放| 亚洲人成777| 55夜色66夜色国产精品视频 | 亚洲精品视频在线看| 亚洲不卡的av| 国产欧美日韩久久| 亚洲精品国产91| 久久久青草青青国产亚洲免观| 亚洲欧美日韩偷拍| 粉嫩av亚洲一区二区图片| 在线观看中文av| 国产乱码精品一区二区三| 最新免费av网址| 久久精品国产精品亚洲红杏| 天天干天天操天天玩| 六月婷婷色综合| 中文字幕66页| 国产麻豆午夜三级精品| 亚洲一级片免费观看| 国产精品亚洲一区二区三区在线| 91精品999| 国产大陆a不卡| 精品人妻一区二区三区日产| www.亚洲在线| 91精品国产自产| 国产女人18水真多18精品一级做| 怡红院一区二区三区| 国产精品天美传媒| 中文字幕在线观看2018| 亚洲另类色综合网站| 精品99在线观看| 亚洲成人一区在线| 97人人澡人人爽人人模亚洲| 欧美日韩在线另类| 免费黄色片视频| 欧美精品少妇一区二区三区| 国产美女裸体无遮挡免费视频| 日韩午夜中文字幕| 农村少妇久久久久久久| 精品一区二区三区电影| av播放在线| 欧美成人合集magnet| 1区2区3区在线| 国产精欧美一区二区三区| 久久婷婷五月综合色丁香| 91久久爱成人| 日韩美女毛片| 亚洲一区二区三区午夜| 欧美视频二区| 国产xxxxx在线观看| 另类小说一区二区三区| 成人三级做爰av| 91视频观看视频| 久久精品国产亚洲AV成人婷婷| 亚洲毛片av在线| 久久99精品波多结衣一区| 欧美日韩在线播| 亚洲精品一区二区三区不卡| 亚洲色图35p| 18视频在线观看| 欧美最猛性xxxx| 国产精选久久| 久久免费视频1| 亚洲色图88| 男人的天堂99| 国产东北露脸精品视频| 日本一道本视频| 亚洲大尺度视频在线观看| 五月天中文字幕| 亚洲成人黄色网址| 香蕉视频在线播放| 欧美一区二区视频97| 日韩欧美中文字幕一区二区三区 | 欧美自拍偷拍| 男女私大尺度视频| 久久成人18免费观看| 变态另类丨国产精品| 亚洲免费观看高清在线观看| 伊人中文字幕在线观看| 精品久久久久99| 欧美69xxx| 日本精品视频在线播放| 国产精品极品国产中出| 日本免费在线视频观看| 欧美一级播放| 久久久高清视频| 亚洲精品国久久99热| 中文字幕 视频一区| 亚洲码在线观看| xxxx视频在线| 91亚色免费| 永久91嫩草亚洲精品人人| 波多野结衣天堂| 久久综合狠狠综合| 日韩久久久久久久久| 日韩欧美久久久| 黄色网址在线免费播放| 国产精品午夜视频| 国产一区不卡| 日韩欧美xxxx| 2023国产一二三区日本精品2022| 精品午夜福利在线观看| 91精品国产91久久久久久最新毛片| 爱久久·www| 国产精品久久久久久久av电影| 性欧美lx╳lx╳| 国产亚洲精品网站| 91在线观看高清| 日韩在线视频免费播放| 日韩经典第一页| 色戒汤唯在线观看| 久久99九九| 久久精品91| 一级黄色性视频| 日本电影亚洲天堂一区| 国产区视频在线播放| 国产成人精品在线| jizzjizz欧美69巨大| 国产91色在线观看| 国产精品成人一区二区三区夜夜夜 | 欧美视频综合| 久久久伊人日本| 理论片一区二区在线| 日韩网站在线免费观看| www.亚洲人| 欧美一区二区三区网站| 亚洲视屏在线播放| 欧美极品在线| 国产av第一区| jlzzjlzz亚洲日本少妇| 国产www在线| 中文在线不卡视频| 在线精品高清中文字幕| 538精品视频| 欧美色精品在线视频| 1769在线观看| 成人a在线观看| 欧美韩国一区| 亚洲精品乱码久久| 一本色道久久综合亚洲91 | 国产一区第一页| 欧美一区二区精美| 成人免费网站观看| 日本在线观看一区二区| 精品在线播放午夜| 精品少妇theporn| 亚洲天堂精品在线| 91嫩草国产线观看亚洲一区二区| 日韩成人手机在线| 91免费看片在线观看| 在线观看xxxx| 久久久久久国产三级电影| 亚洲男人都懂第一日本| 免费av不卡在线| 五月婷婷激情综合| 国产九色在线| 国产精品乱码| 男人操女人的视频在线观看欧美| 五月婷婷一区二区| 亚洲精品一区二区三区婷婷月| 国产精品黄色片| www插插插无码视频网站 | 日韩av电影免费在线观看| 激情五月婷婷综合网| 日韩成人免费观看| 自拍偷拍亚洲一区| 黑色丝袜福利片av久久| 亚洲一级片网站| 狠狠做深爱婷婷久久综合一区| 伊人免费在线| 久久国产一区| 国产在线精品视频| 亚洲中文无码av在线| 欧美黑人性视频| 久久久久免费av|