2011-12-13 6 views

答えて

3

サーバーがあるとします。abcdです。そして対応する体重は5,123です。あなたは次のように重み付けラウンドロビンを行うことができます。

Random rand = new Random(seed); 

void processRequest(Request r){ 

    // assume rand.next() returns a uniformly distributed integer >= 0 
    int i = rand.next() % 11; // 11 is sum of weights 

    if(i <= 4)  // process r with server a 
    else if(i == 5) // process r with server b 
    else if(i <= 7) // process r with server c 
    else   // process r with server d 
} 

rand.next() % 11[0, 10](包括的)の範囲に一様に分布する整数を返します。可能な値のうちの5つについてのサーバaでリクエストを処理します。可能な値は5のようにサーバーbでリクエストを処理します。

使用する特定のランダムメソッドとシード値に特に注意してください。

+0

上記のコードでは、私は4,5,7の数を理解していますが、私のウェブサイトにはサーバーと重量が設定されています。 – Net205

+0

上記のコードでは、希望する重み付けがあらかじめわかっているものと仮定しています。だからあなたは希望の重み付けを知らないのですか?どのように/いつこれを理解しますか? – SundayMonday

+0

@SundayMondayこれはしばらくの間探してきた解決策のようです。私の場合は、これを.aspxページに実装して、ユーザーをデータベースから引き出している適切なURLにリダイレクトすることを想定しています。私の状況に合わせて詳細をあなたの答えに詳しく説明してください。 Thanxと素敵な仕事...私はC#もデータベースから取得しているサーバーの重みを使用しています。 –

関連する問題