Java Distributed Programming

The standard round-robin algorithm will be running on the load balancing machine (i.e. the load balancing program will be working on a single machine) while a number of client programs will be running on each of the nodes.  Your system will need to consider the following functionality and messaging (in no particular order):


  1. Standard round-robin algorithm working on a designated load balancer machine.
  2. Each node will register with the load balancer by sending a message.
  3. The scheduler will record node details.
  4. Jobs (as a message) 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.
  6. 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.


Expected to produce separate programs for:


  1. The load balancer
  2. General worker node. Do not hard code names or IP address into this but instead have these passed in as parameters on the command line.
  3. A program for sending jobs into the system


(at least):


  1. have different programs / projects as stated above
  2. make use of multiple classes in each program
  3. ensure that the relevant functionality for the class is contained within it
  4. link classes together to form the overall algorithm
  5. use multi-threading where necessary
  6. send, receive and process messages as explained in the lectures (lecture on messaging systems).
  7. only use the main method for extracting information from the arguments passed in from the command line and to start your system
  8. not provide a monolithic solution (e.g. all code in one class or main method)


find the cost of your paper