Thread overview
weighted round robin
Oct 08, 2016
vino
Oct 10, 2016
Marc Schütz
Oct 11, 2016
vino
Oct 12, 2016
Erikvv
Oct 18, 2016
vino
Oct 19, 2016
Marc Schütz
October 08, 2016
Hi,

 Can some one guide me on how to implement the weighted round robin, below is what i tried or any other better ways to do it

Main Requirement : Incoming socket connection has to be sent to 3 servers in the weighted round robin fashion.

Prog:1
import std.stdio;
import std.range;
import std.range.primitives;

void main()
{
    auto a = [1,2,3]; // E.g :Server Array
    auto b = [1,2,3,4,5]; // E.g: Socket Array
    auto r = roundRobin(a, b);
    writeln(r);
}
OUTPUT : [1, 1, 2, 2, 3, 3, 4, 5]
Requirement : [1, 1, 2, 2, 3, 3,1,4,2,5]

From,
Vino
October 10, 2016
On Saturday, 8 October 2016 at 22:48:53 UTC, vino wrote:
> Hi,
>
>  Can some one guide me on how to implement the weighted round robin, below is what i tried or any other better ways to do it
>
> Main Requirement : Incoming socket connection has to be sent to 3 servers in the weighted round robin fashion.
>
> Prog:1
> import std.stdio;
> import std.range;
> import std.range.primitives;
>
> void main()
> {
>     auto a = [1,2,3]; // E.g :Server Array
>     auto b = [1,2,3,4,5]; // E.g: Socket Array
>     auto r = roundRobin(a, b);
>     writeln(r);
> }
> OUTPUT : [1, 1, 2, 2, 3, 3, 4, 5]
> Requirement : [1, 1, 2, 2, 3, 3,1,4,2,5]

    auto r = roundRobin(a.cycle, b.cycle);

Beware though that this yields an infinite range. If you just need one round, you can use:

    import std.algorithm.comparison : max;
    writeln(r.take(max(a.length, b.length)));

October 11, 2016
On Monday, 10 October 2016 at 09:18:16 UTC, Marc Schütz wrote:
> On Saturday, 8 October 2016 at 22:48:53 UTC, vino wrote:
>> Hi,
>>
>>  Can some one guide me on how to implement the weighted round robin, below is what i tried or any other better ways to do it
>>
>> Main Requirement : Incoming socket connection has to be sent to 3 servers in the weighted round robin fashion.
>>
>> Prog:1
>> import std.stdio;
>> import std.range;
>> import std.range.primitives;
>>
>> void main()
>> {
>>     auto a = [1,2,3]; // E.g :Server Array
>>     auto b = [1,2,3,4,5]; // E.g: Socket Array
>>     auto r = roundRobin(a, b);
>>     writeln(r);
>> }
>> OUTPUT : [1, 1, 2, 2, 3, 3, 4, 5]
>> Requirement : [1, 1, 2, 2, 3, 3,1,4,2,5]
>
>     auto r = roundRobin(a.cycle, b.cycle);
>
> Beware though that this yields an infinite range. If you just need one round, you can use:
>
>     import std.algorithm.comparison : max;
>     writeln(r.take(max(a.length, b.length)));

Hi Marc,

 Thank you, I have made a small update as the Server Array is fixed length and the Socket array would be dynamic so made the below changes as now it is working as expected
Prog:1
import std.stdio;
import std.range;
import std.range.primitives;
import std.algorithm.comparison : max;

void main()
{
     auto a = [1,2,3]; 				     // E.g :Server Array
     auto b = [1,2,3,4,5,6,7,8,9,10,11,12];          // E.g: Socket Array
	 auto r = roundRobin(a.cycle, b.cycle);
	 writeln(r.take(max(a.length, b.length * 2)));
 }

From,
Vino.B
October 12, 2016
On Tuesday, 11 October 2016 at 06:28:10 UTC, vino wrote:
> On Monday, 10 October 2016 at 09:18:16 UTC, Marc Schütz wrote:
>>     [...]
>
> Hi Marc,
>
>  Thank you, I have made a small update as the Server Array is fixed length and the Socket array would be dynamic so made the below changes as now it is working as expected
> Prog:1
> import std.stdio;
> import std.range;
> import std.range.primitives;
> import std.algorithm.comparison : max;
>
> void main()
> {
>      auto a = [1,2,3]; 				     // E.g :Server Array
>      auto b = [1,2,3,4,5,6,7,8,9,10,11,12];          // E.g: Socket Array
> 	 auto r = roundRobin(a.cycle, b.cycle);
> 	 writeln(r.take(max(a.length, b.length * 2)));
>  }
>
> From,
> Vino.B

In your first post you mention it should be weighted, but I see no weights anywhere.
October 18, 2016
On Wednesday, 12 October 2016 at 13:44:59 UTC, Erikvv wrote:
> On Tuesday, 11 October 2016 at 06:28:10 UTC, vino wrote:
>> On Monday, 10 October 2016 at 09:18:16 UTC, Marc Schütz wrote:
>>>     [...]
>>
>> Hi Marc,
>>
>>  Thank you, I have made a small update as the Server Array is fixed length and the Socket array would be dynamic so made the below changes as now it is working as expected
>> Prog:1
>> import std.stdio;
>> import std.range;
>> import std.range.primitives;
>> import std.algorithm.comparison : max;
>>
>> void main()
>> {
>>      auto a = [1,2,3]; 				     // E.g :Server Array
>>      auto b = [1,2,3,4,5,6,7,8,9,10,11,12];          // E.g: Socket Array
>> 	 auto r = roundRobin(a.cycle, b.cycle);
>> 	 writeln(r.take(max(a.length, b.length * 2)));
>>  }
>>
>> From,
>> Vino.B
>
> In your first post you mention it should be weighted, but I see no weights anywhere.

Hi Marc,

  I am at the initial stage of implementing the round robin algorithm and still not reached the next part of weighted , if you have the code then please send me at present i am trying to implement this algorithm in my Server socket program and i would require few more days to complete it.


October 19, 2016
On Tuesday, 18 October 2016 at 16:43:19 UTC, vino wrote:
> On Wednesday, 12 October 2016 at 13:44:59 UTC, Erikvv wrote:
>> In your first post you mention it should be weighted, but I see no weights anywhere.
>
> Hi Marc,
>
>   I am at the initial stage of implementing the round robin algorithm and still not reached the next part of weighted , if you have the code then please send me at present i am trying to implement this algorithm in my Server socket program and i would require few more days to complete it.

Note that I'm not the one you wrote the above comment ;-)