I. Assessment RequirementsYou must work individually on this assessment to develop a load balancer Java application. A report is required which explains what you had to change since assessment 1 and the challenges that you encountered and solved for your project.
II. Assessment Scenario/ProblemRestating the scenario from Assessment 1:For this assignment, you will be taking your design from assessment 1 and implementing it using Java.
Here, your standard or weighted round-robin algorithm will be running on the load balancing machine (i.e. the load balancing program will be working on a single computer) while some client applications will be running on each of the nodes. Your system will need to consider the following functionality and messaging (in no particular order):
- Standard/weighted round-robin algorithm working on a designated load balancer machine.
- Each node will register with the server by sending a message.
- The load balancer will record node details.
- The notion of a job (as a message) requires the load balancer to allocate the task to the next free node. The position 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. In the weighted round-robin strategy, the list could be ordered based on the nodes workload (i.e. the number of jobs given to them already by the scheduler). The least weighted node (i.e. the one that has the least amount of work) will be at the top.
- Weighted information to determine the order of the scheduled jobs can be gained by remembering how many jobs are currently running on a node.
- The load balancer assigns the task to a node by sending it a message to work for X seconds. Nodes will receive job requests and wait for
You will be expected to produce separate programs for:
- The load balancer
- General worker node (do not hardcode 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 systemTo achieve a good mark in this assignment, you will need to (at least):
- have different programs as stated above
- make use of multiple classes in each program
- ensure that the relevant functionality for the class is contained within it
- link levels 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 and covered in lectures 18 / 19).
- only use the primary method for extracting information from the arguments passed in from the command line and to start your system
- not provide a reliable solution (e.g. all code in one class or primary method)You can choose which load balancing algorithm you will implement. You will be able to get up to 60% for applying a round-robin approach or up to 100% if you use a weighted round-robin approach.For either option, you can provide clients that can be executed on the same machine but as separate programs to the load balancer system. This will allow you to develop and test your distributed system on your home computer, rather than to rely on access to the Raspberry Pis or multiple computers in the lab.The demonstration of your system will take place on a single or multiple devices, depending on what resources are available on the day. Make sure that you test that your programs can work on the same machine or separate machines before the demonstration as you will not be allowed to fix any problems during the presentation.