ABSTRACT

The scale of contemporary Internet-based systems, along with their rate of growth, is daunting. Data repositories are growing at phenomenal rates. To address this explosion of data and processing requirements needs building systems that can be scaled up or down rapidly with controllable costs and schedules. Computer systems can be scaled up in terms of their computing capacity. But, just like physical systems, they also have intrinsic limits on scaling indefinitely. These limits do not usually lead to catastrophic system failure, but the increasing overhead can degrade system performance and consequently have a significant impact on capacity planning. The chapter begins by explaining various aspects of scalability and its relationship with load balancing. The latter part of the chapter describes static and dynamic load balancing schemes for peer-to-peer systems. This chapter’s appendix describes aspects related to virtulization: Virtualization is widely used to deliver customizable computing environments on demand. Virtualization technology is one of the fundamental components of cloud computing. Virtualization allows the creation of a secure, customizable, and isolated execution environment for running applications without affecting other users’ applications. For instance, we can run Windows OS on top of a virtual machine, which itself is running on Linux OS. Virtualization provides a great opportunity to build elastically scalable systems that can provision additional capability with minimum costs.