Top load balancing algorithms in cloud computing


Load balancing in cloud computing has a significant impact on the performance of cloud, which is an emerging technology today in distributed and intelligently connected environments, consisting of several data centers, servers, virtual machines, load balancers, etc.

The cloud deals with several things at once, from storing and retrieving of documents, sharing multimedia, fault tolerance, and allocating resources at a rapid rate. Therefore, it requires a proper load balancing to make it more efficient, responsive, reliable, and flexible.

Efficient task scheduling and resource management are challenging in distributed computing, but cloud engineers use genetic and conventional algorithms to enhance the performance of load balancing and to handle the operations intelligently. This post will look at five typical load balancing algorithms that improve scheduling, optimal resource allocation, etc.

1. Round Robin

Round Robin is one of the famous and commonly used load balancing algorithm, in which the processes are divided between processors. The process allocation order is kept locally independent from the remote processor allocations. In the round-robin, fixed quantum time is given to the job. The main emphasis in round-robin is on fairness and time limitation.

2. Weighted Round Robin (WRR)

Weighted Round Robin (WRR) scheduling facilitates controlled sharing of the network bandwidth. WRR assigns a weight to each queue; then, it is used to determine the amount of bandwidth allocated to the queue. The round-robin scheduling allows serving each queue in a set order, sending a limited amount of data before moving to the next queue and cycling back to the highest priority queue after servicing the lowest priority queue.

3. Least-connections

One of the dynamic scheduling algorithms, the least-connection scheduling algorithm directs network connections to the server with the least number of established connections. To dynamically to estimate its load, it needs to count the number of connections for each server. The load balancer records each server’s connection number, increases a server’s connection number when a new connection is dispatched to it and decreases a server’s connection number when a connection is terminated or timeouts.

4. Weighted Least Connections

We have seen what Weighted Round Robin does to Round Robin. Weighted Least Connections algorithm does the same thing to Least Connections. It introduces a component of “weight,” based on each server’s respective capacities. As in the Weighted Round Robin, you will need to specify the “weight” of each server in advance.

5. Random

The random algorithm matches clients and servers by random, i.e., using a random number generator that underlies it. In cases where the load balancer receives a large number of requests, the requests will be distributed evenly to the nodes by a Random algorithm. Like Round Robin, the algorithm Random is sufficient for clusters that consist of nodes with similar configurations.

Now, we look at some of the bio-inspired dynamic load balancing algorithms, which are gaining popularity as load balancing techniques in cloud engineering. They mimic the natural behavior of living creatures, such as ants, bees, birds, and fishes, to improve the efficiency of other load balancing systems.

1. Ant colony algorithm

Ant colony algorithms apply the food searching behavior of ants in load balancing. Larger weight means that resource has a high power of computation. Load balancing ant colony optimization (LBACO) balances the load and minimizes make span. All tasks are assumed to be computationally intensive and independent of one another.

2. Honey bee foraging algorithm

This algorithm is based on the foraging behavior of honey bees. When an underloaded VM assigns a task, it updates several priority tasks and the load of VM to other tasks on the waiting list. This approach aids other processes in selecting their VM. If a task has high priority, a VM with a minimum number of priority tasks is selected. It does not consider only load balancing but also keeps track of priorities of tasks which are currently removed from heavily loaded machines. It increases throughput and minimizes response time.

3. Throttled load balancing

This algorithm depends upon the theory of a suitable search for a virtual machine. The task manager makes a list of virtual machines. By using the list, the client request allotted to the relevant machine. If the machine’s size and capability are suitable for request, then the job is given to that machine. This algorithm is better than a round-robin algorithm.

4. Pareto based fruit fly optimization algorithm

The Pareto-based fruit fly optimization algorithm (PFOA) is used to solve the task scheduling and resource allocating (TSRA) problem in a cloud computing environment. First, a heuristic based on the property of minimum cost initializes the population. Second, a resource reassign operator is used to generating non dominated solutions. Third, a critical path based search operator is used to improve exploitation capability.

5. Multi-objective Scheduling cuckoo algorithm

CSA mimics the breeding behavior of cuckoos. Each individual searches for the most appropriate nest for the laying of an egg to maximize the survival rate of the egg and achieve the best habitat society. Fuzzy set theory is used to create the fuzzy search domain for membership, where it consists of all possible compromise solutions. CSA is searching for the best compromise solution within the fuzzy search domain, tuning the fuzzy boundary design variables simultaneously. The tuning of fuzzy design variables eliminates the requirement of the expertise needed for setting these variables.

6. Min-Min algorithm in a cloud environment

Load Balancing Min-Min algorithm has a three-level load balancing framework. Architecture at first level LBMM is the request manager who is responsible for receiving the task and assigning it to the service manager when the service manager receives the request. It divides it into subtasks and assigns the subtask to a service node based on node availability, remaining memory, and the rate of transmission that is responsible for performing the task.