in reply to Load Balancing

With such a small number of hosts, you are very likely to hit the same host repeatedly by grabbing a random host.

Why do you feel that you can't keep track of which host was previously called? Have you seen Storable and DBM::Deep?

Another solution, which can be just as problematic as using rand may be to use Time::HiRes. Divide a second into 4 quarters and choose which host to use based on which quarter you are in at runtime.

Cheers - L~R

Replies are listed 'Best First'.
Re^2: Load Balancing
by onegative (Scribe) on Nov 16, 2007 at 15:45 UTC
    Thanks ya'll, I forgot to mention that my hosts needed to be in a list...also the reason I wanted to not require an external call is because the script calling my hosts doesn't belong to me thus I was attempting to make the code simple and not require additional Modules to be installed/called...

    After some thought/research I have decided upon the following code as my solution...

    #!/usr/bin/perl sub get_hosts { @hosts=("","","","h"); @app = (); while (@hosts) { $rv = int(rand(@hosts)); push @app,$hosts[$rv]; $hosts[$rv] = $hosts[$#hosts]; pop @hosts; } $thosts = "$app[0],$app[1],$app[2],$app[3]"; return $thosts; } print &get_hosts();
    Thanks again everyone for your suggestions...