I need to write a round robin algorithm to schedule load to n endpoints?
So if I have servers A, B and C
I wanted to make sure to round-robin through them for each request I get. How do I do this in C#?
Round Robin (RR) The simplest preemptive scheduling algorithm is round-robin, in which the processes are given turns at running, one after the other in a repeating sequence, and each one is preempted when it has used up its time slice.
What Is Round-Robin Load Balancing? Round‑robin load balancing is one of the simplest methods for distributing client requests across a group of servers. Going down the list of servers in the group, the round‑robin load balancer forwards a client request to each server in turn.
Average Turn Around time = (27 + 23 + 30 + 29 + 4 + 15) / 6 = 128 / 6 = 21.33 unit. Average waiting time = (22 + 17 + 23 + 20 + 2 + 12) / 6 = 96 / 6 = 16 unit.
Just for the record, definition of round robin:
http://en.wikipedia.org/wiki/Round-robin_scheduling
Just use a queue. Take one off of the top, use it and put it back. This ensures that the most recent one used will always be the last one to be picked up.
Queue<Server> q = new Queue<Server>();
//get the next one up
Server s = q.DeQueue();
//Use s;
//put s back for later use.
q.Enqueue(s);
Link to the queue class:
http://msdn.microsoft.com/en-us/library/7977ey2c.aspx
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With