请教 mirrorbrain 技术的原理和可配置性

个人测试了一下:

家里杭州电信,mirrorbrain 分配到了日本的 riken 研究所镜像,

办公室杭州联通,分配到了清华大学,感觉合理性上来说还有提升空间。

查询之后,发现国内已经注册的比较近的,像是合肥中科大的镜像,上海大学的镜像,相对来说或许会更近,更快一些。

那些不在官方镜像列表里。官方镜像是镜像管理员申请,不是用户申请。

因为之前在写 rankmirror-ng,考察过国内镜像的情况,现在只剩五个镜像了。像之前华东科大重庆大学什么的镜像已经出于不明原因取消了

我以为这个网址列出来的都列入了官方镜像里。
https://mirrors.opensuse.org/

感觉实际可用镜像其实比官方的要多不少,像是下面几个,貌似都没列进去,但这几个速度肯定是一流的。

http://mirrors.zju.edu.cn/
http://mirrors.aliyun.com/opensuse/
http://mirrors.163.com/
http://mirrors.sohu.com/

https://mirrors.cloud.tencent.com/opensuse/

阿里和腾讯源最爽,下载镜像能跑满宽带,狗大户

很奇怪,最近持续的关注了 mirrorbrain 这玩意的导向,很不稳定。

杭州电信,大部分情况下是到了清华镜像,有几次是到了日本的 riken,还有一次最慢,到了我头一次认识的这个国家,Armenia;现在算是正常,分到了 ustc。

个人理解,是不是跟国内镜像是否同步成功也有关系,还是网络波动,或者不可描述的原因?

主要的影响:
1、系统安装以及 net install:不知道从哪个版本开始,大蜥蜴安装都要从网络下载一定数量的包,不管是 DVD 安装还是 u 盘,网络安装就更不用说了。由于官方 DVD 镜像安装源在安装过程中不可更改,抽风的话,会严重影响安装效率。
2、部分国内镜像由于同步效率和一定的同步不成功的几率,对于我等 TW 党来说,最安全稳定的做法,肯定是直接用官方的源,如果 mirrorbrain 技术有效的话,这也是最快,最安全的方式。如今这个技术的不稳定,更新源的选择就成了两难:用官方,几率抽风,更新效率极低;用国内镜像,滚翻车风险增大。

@notepad2

这些可以在官网 https://mirrorbrain.org/ 找到答案:

MirrorBrain uses geolocation and global routing data. In addition to network topography and country, the approximated geographical distance of mirrors is also taken into account. Mirror servers are monitored and scanned for files.

这句话笼统的解释了你的问题:

第一 MirrorBrain 监控镜像。所以同步不成功肯定不中转流量。
第二 MirrorBrain 使用地理位置和路由数据。

https://mirrorbrain.org/docs/mirrors/#a-mirror-record-explained

MirrorBrian 基于地区、国别、asn 和 IP 地址前缀去决定可供使用的源。

也就是说,你在中国,属性为 Asia 的所有的源理论上都是可用的,但如果你在日本,属性为 China 的你就用不了。asn 我不懂就不瞎说了。IP 地址前缀,好比 USTC 只允许电信的 IP 前缀,联通的就用不了。这样你就得到了一个可用镜像池。

https://mirrorbrain.org/docs/usecases/#giving-mirrors-a-different-weight-balancing-the-load

然后根据每个可用镜像的 score 来计算中转率,就是取平均数。比如所有可用镜像总评分是 100,清华镜像是 6,那中转率就是 6%。清华达到这个中转率,你离它近也要转到远一点的镜像。

以上是镜像管理员跟 MirrorBrian 管理员商量好的固定值。我们影响不了。

你的情况就是中转率造成的,中国境内的所有人可用的镜像池其实都差不多一样的。 MirrorBrian 设计没考虑到的其实就是国内的网络,不是说都在中国,就一定快的。

1赞

这里怒吹一波我在开发的 rankmirror-ng。它其实就是一个本机用的的 MirrorBrian。我是用服务器 IP 和你的本地 IP 去查经纬度,计算每个镜像距你的地理距离。辅之以路由的层数、路由的时间和 ping 的时间,也就是网络拓扑的情况。我的指标还有一个小文件的实际下载速度。MirrorBrain 的情况在地理位置方面跟我的差不多(区别是它是根据每个请求的 IP 去动态计算距离,我这个算好了就可以是静态的,因为你的本地 IP 的经纬度差异不大),网络拓扑它可能也用了别的方法,应该也是最基本的方法,因为一个 http request 能包含的内容不多,本机挂全局代理会影响它,也会影响我的程序,区别就是 MirrorBrian 不是你本机,知道的信息会少一些,也不那么精确一些。小文件下载速度这个指标 MirrorBrain 是不会有的,负载受不了。

现在如果只是拿来计算最快的源的话,是可以使用的:

git clone https://github.com/marguerite/rankmirror-ng
export GO111MODULES=on
go build

然后 mirrorlist.yaml 里你可以添加新的镜像:

- name: Tuna
  ip:
  raw: https://mirrors.tuna.tsinghua.edu.cn/opensuse
  distro: opensuse
  version:
  - distribution/leap/15.1
  - distribution/leap/15.2
  - tumbleweed
  country: China
  latitude:
  longitude
  distance:
  routelevel:
  routetime:
  pingspeed:
  downloadspeed:
  weight:
  ipv6: false

然后用 sudo 跑一次 update

sudo ./rankmirror-ng -update

之后就可以 list 了:

sudo ./rankmirror-ng -list

最快的那个在最上面。

之后手动换下 repo 地址就可以了。把 download.opensuse.org 替换成镜像。(自动替换的功能还在做)

1赞

本主题在最后一个回复创建后60分钟后自动锁定。不再允许添加新回复。