Today, computing becomes steadily more important and
more used. The amount of data exchanged over the network or
stored on a computer is in constant increasing. Thus, the
processing of this increasing mass of data requires more
computer equipment to meet the different needs of
organizations. To better capitalize their investment, the overequipped
organizations open their infrastructure to others by
exploiting the Internet and related technologies like Web 2.0
and other emerging technologies such as virtualization by
creating a new computing model: the cloud computing.
Cloud computing can be defined as a model for
delivering dynamically to IT end users, computing
services (computing power, data storage, software packages,
programming environments ...) by a third party provider
through a private or public network, using various advanced
technologies like Web 2.0 and virtualization. Services can be
rapidly provisioned and released, according to use, with
minimal management effort or service provider interaction
[12].
Cloud computing emerges therefore as a new deployment
model of resources (hardware or software) as a service
accessible via public or private networks. However, by its
complexity and its emergence, cloud computing brings up new
challenges for providers and end users, in particular, the
response time must remain equivalent to the traditional systems
or better. A cloud computing is conceptually a distributed and
elastic system where resources will be distributed through the
network (Cloud). The full resources of the system must
cooperate to respond to a client request which requires
intercommunication between various components of the system
to design a component or subset of components to deal with the
request. This can lead to bottlenecks in the network and an
imbalanced charge in a distributed system where some
components will be overcharged while others will be not or
light charged. To solve this problem, we use load balancing
algorithms for distributed systems, but they are not fully
adapted to the system of cloud computing which requires
development of new algorithms or adaptation of those already
existing for distributed systems (Cluster, Grid Computing).
This paper is organized as follows: The first section
provides a definition and taxonomy of load balancing, the
second describes the different implementations of load
balancing in most used distributed systems, the third section
provides some challenges for the scientific research to achieve
effective load balancing and the final section describes two
related works.
II. OVERVIEW OF LOAD BALANCING
The goal of load balancing is improving the performance
by balancing the load among these various resources (network
links, central processing units, disk drives…) to achieve
optimal resource utilization, maximum throughput, maximum
response time, and avoiding overload.
To distribute load on different systems we use generally
traditional algorithms like whose used in web servers, but these
algorithms do not always give the expected performance with
large scale and distinct structure of service-oriented data
centers [10]. To overcome the shortcomings of these
algorithms, load balancing has been widely studied by
researchers and implemented by computer vendors in
distributed systems.