-
2dc1f1db :one^
2006-04-28 21:09
-
>>9b364f34 >>3f399260
まず、ポエニーは、Winnyクローンとかいわれていますが、
コード自体は自分の考えで作っているので、基本的に全く違うソフトです。
(もちろん、クエリの出し方だとか、タイミングだとかの通信上、迷惑をかけそうな部分は、nyと近いようにしているつもり)
ポエニーのダウンローダーは、エアーエッジ環境で作ったので、
エアーエッジの超遅い回線でも効率よくダウンロードできるように作られています。
具体的には、ダウンロード登録したファイルに専用のダウンロード候補ノードリストを作って、
目的のファイルを保持しているノードをまず集めます。(画面上の「候補」というのがその数)
その候補へ順に試行してゆき、ダウンロード成功したら優先順位を上げたり、
接続エラーが出ると二度とそのノードへは接続へいかなかったり、
ビジー応答だと優先順位を下げたりしつつ、次第にダウンロード確率を上げていきます。
この候補リストは、各登録ファイルごとにありますが、リストを構成するノード情報はポエニー上に1つしかないので、優先順位はノード固有です。
これは、Winnyのダウンロードプロトコルが順番待ちの仕組みを持たない、
行き当たりばったり的プロトコルに見えたので、
アプリケーションレベルでできるだけ無駄な接続を行わないようにしているつもりです。
候補リストは単純に「ダウンロードできるか、できないか」だけを気にして、通信速度は関係ありません。
通信速度を計算に入れると、速度の速いノードの取り合いになると思ったからです。
つまり、ポエニーのダウンローダーが目指しているのは「遅くてもいいのでダウンロードし続ける(待ち状態がない)」ことです。
また、ダウンローダーは、分割ダウンロードを前提に作ってあるので、
候補リスト中で、少なくとも2ノードがダウンロード可能であれば多重ダウンロードされます。(他にダウンロードするファイルがなければ)
多重ダウンロードの範囲はかなり狭く(最低2MB単位で分割する)設定できるので、、
各ダウンローダーを管理するワーカーコントローラーが、ファイルのダウンロード状況と候補リストから
できるだけ早くダウンロードできそうなもの選出して、ワーカーへ振り分けることで、小刻みでもいいからダウンロードしようとします。
ダウンロードタブのダウンローダーが100%になるのは、ワーカーコントローラーが振り分けた仕事をダウンローダーが終えたときです。
ダウンロード完了していないのに、100%になるのは、そもそも一部分しかダウンローダに仕事を振っていないからです。
で、もしかしたら、ダウンロードに特化したnyになったかもしれないけど、
匿名性がないという理由をつければ、違法利用する人が多くないだろうから、
ネットワーク全体の負担にはならないだろうという憶測もありました。
合法ユーザに特権を与えたつもりでもあります。
ただ実際は、ダウンロード=アップロードと考えるとそう問題にもならないと思っています。
ポエニーは、アップロードを接続数以外で制限しません。
(それはダウンロード接続よりも大きく設定してあります)
ダウンロード制限しないアップローダと、
常にダウンロードし続けようと、頻繁にスケジュールを組みなおす意欲的なダウンローダがポエニーの特徴だといえます。
たまには、ポエニーをほめてみます。
もちろん、転送をしていないからというの大きいと思います。
Powered by shinGETsu.