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):
- Standard round-robin algorithm working on a designated load balancer machine.
- Each node will register with the load balancer by sending a message.
- The scheduler will record node details.
- 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.
- The load balancer will need to store an ordered list of nodes.
- 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:
- The load balancer
- 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.
- A program for sending jobs into the system
- have different programs / projects as stated above
- make use of multiple classes in each program
- ensure that the relevant functionality for the class is contained within it
- link classes together to form the overall algorithm
- use multi-threading where necessary
- send, receive and process messages as explained in the lectures (lecture on messaging systems).
- only use the main method for extracting information from the arguments passed in from the command line and to start your system
- not provide a monolithic solution (e.g. all code in one class or main method)