ytnobody / Testament

This repository is old. Please see https://github.com/testament-testing-env/Testament
Other
7 stars 2 forks source link

Fastest Mirror のピックアップ方法の検討 #41

Open moznion opened 11 years ago

moznion commented 11 years ago

現状の方法だとftp サーバのアドレスの国別ドメインを取得して、それをベースに最速のミラー (同じリージョンのミラー) をピックアップしてきていますが、いくつか問題があります。

  1. 国別ドメインの位置がサーバーによってまちまち 例えば、
    • ftp://ftp.foobar.org.jp
    • ftp://ftp.jp.foobar.org

と、色々なルールが混在していて、現状の方法 (正規表現1ルールでなんとかするぜ、という方法) では結構面倒くさい感じです。

  1. そもそも国別ドメインが記述されていないURL が存在する
    • ftp://ftp.foobar.net
    • ftp://ftp.foobar.org

などなど、そもそも国別ドメインが存在しないものもあります。 これらに関しては現状の方法では対応することがままなりません。

moznion commented 11 years ago

現在はマッチするリージョンのサーバーが見つからない場合は、フォールバックして適当に (いい加減に) サーバーをアサインしているので、致命的な事態にはならないので優先度は比較的低めで良いと思います

moznion commented 11 years ago

考えられる方法として、

というのがパッと思いつきますが、どれくらい (通信) コストがかかるのかが見積もれないので、要検討な感じがします。

何か良い方法があればお願いします。

ytnobody commented 11 years ago

とりあえずNet::DNSあたりつかって、ホストのAレコード引っ張ってきますかー。 で、IPアドレスからお国を判断(IP::Countryで引っ張れる)して、最寄りのホストを洗い出す、というかんじでどうでしょう。

https://github.com/ytnobody/Ipsefact/blob/master/lib/Ipsefact.pm

↑あたりでIP::Countryつかって国コード引っ張ってきてるんで、参考になるかなーと

moznion commented 11 years ago

良いですね。ちょっと実装してみます。