Implementation
Once you have decided on the type of algorithm to implement, you will need to start programming the system. The language you will use is Java using the Netbeans IDE. Here, your round-robin 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 machine in its own project) while a number of node programs will be running on each of the nodes (separate machines or on the same machine if none available). Your system will need to at least consider the following functionality and messaging (in no particular order and not an exhaustive list):
You will be expected to produce separate programs for:
1. The load balancer system.
2. General worker node. Do not hard code names, IP address, etc into this but instead have these passed in as parameters on the command line. The node program will be running multiple times (either on the same machine or on separate ones)
3. A program for sending jobs into the system.
To potentially achieve a good mark in this assignment you will need to at least ensure your implementation considers:
1. having 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 (help will be given in the lecture on messaging systems and lab);
7. 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;
8. do not provide a monolithic solution (e.g. all code in one class or main method); and,
9. 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.
In addition, you should also consider the following functional aspects:
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. If you choose the round-robin method, the order is governed by order in the list of nodes.
6. If you choose the weighted round-robin method, 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.
Hi, I have just read your requirement and very interested in your Balancer Loading project.
I have 10+ years experience in Software Development and the JAVA is my top skill.
In my Java Experience, I already developed several web projects using Spring boot and also GUI projects using Swing or Java FX. CPU scheduling, Othello Network Games, Chess Games using Eclipse / Netbean /IntelliJ.
Hope to discuss with you soon.
Tuan.
Hello Akshat S.,
We would like to grab this opportunity and will work till you get 100% satisfied with our work.
We are an expert team which have many years of experience on PHP
Lets connect in chat so that We discuss further.
Regards
Hi I am java developer and I am developing desktop and web application. My expertise in Java core and advance, MySQL, JSP, Java Swing, Spring boot. I will do your work within in minimum time.