Weighted Round Robin Java programs (3 programs)

Job ID: 33328335

Budget: £10 – £20 GBP

I require 3 java programs using NetBeans based on weighted round robin where it will be running on a load balancing machine (i.e. load balancing program works on single machine in own project but a number of node programs will be running on each node).

The 3 programs I require:

1. Load Balancer System.

2. General Worker Node, ensure that any names or IP Addresses are passed on as parameters and not hard coded as the node program will be run on multiple machines or one machine many times.

3. A program for sending jobs into the program.

Important things to note is:

- They have to be separate programs.

- Each program must have multiple classes.

- Ensure functionality for the class contained in it is relevant.

-link classes together to form the overall algorithm;

- use multi-threading where necessary;

- send, receive and process messages.

- only use the main method for extracting information from the arguments

passed in from the command line and to start your system to ensure that

you are not hard-coding any system specific information;

- do not provide a monolithic solution (e.g. all code in one class or main

method); and,

- do not introduce any form of OS scheduling techniques. As this is a

coordination system, you will only need to consider how to deal with working out which worker node needs to be sent a job message.

Important functional things to note:

1. Separate standard/weighted round-robin algorithm working on a designated server machine (the load balancer).

2. Each node will register with the load balancer by sending a message.

3. The scheduler will record node details.

4. Jobs require the load-balancer to assign the job to the next free node. The job information will detail the number of seconds that a job will take to run, rather than trying to include some form of code that is required to be executed.

5. The load balancer will need to store an ordered list of nodes. In the weighted round-robin strategy, the list could be ordered based on the node’s workload (i.e. the number of jobs given to it already by the load balancer). The least weighted node (i.e. the one that has the least amount of work) will be the one that the job will be sent to.

6. Weighted information to determine the order of the nodes can be gained by remembering how many jobs are currently running on a node along with what its maximum load is.

7. The load balancer assigns the job to a node by sending it a message to work for X seconds. Nodes will receive job requests and wait for the required time. Once a job has finished on a node, a message will be sent back.

You can provide a client (or a program to initiate and send messages into your system) that can be running on the same machine but as a separate program to the load balancer system. This will allow you to develop and test your distributed system on your home machine, or on multiple machines in the lab if lab access is possible.