Valentin Cristea (Politehnica University of Bucharest, Romania), Ciprian Dobre (Politehnica University of Bucharest, Romania), Corina Stratan (Politehnica University of Bucharest, Romania) and Florin Pop (Politehnica University of Bucharest, Romania)
DOI: 10.4018/978-1-61520-703-9.ch001


The general presentation of Large Scale Distributed Computing and Applications can be done from different perspectives: historical, conceptual, architectural, technological, social, and others. This Introduction takes a pragmatic approach. It starts with a short presentation of definitions, goals, and fundamental concepts that frame the subjects targeted in the book: the Internet, the Web, Enterprise Information Systems, Peer-to-Peer Systems, Grids, Utility Computer Systems, and others. Then, each of these actual large scale distributed system categories is characterized in terms of typical applications, motivation of use, requirements and problems posed by their development: specific concepts, models, paradigms, and technologies. The focus is on describing the Large Scale Distributed Computing such as it appears today. Nevertheless, presenting actually used solutions will offer the opportunity to found that older theoretical results can still be exploited to build high performance artifacts. Also, the ever-ending stimulating relationship between users, who require better computing services, and providers, who discover new ways to satisfy them, is the motivation to introduce future trends in the domain, which pave the way towards the next generation Cyberinfrastructure. The chapter introduces a comprehensive set of concepts, models, and technologies, which are discussed in details in the next chapters.
Chapter Preview

Basic Concepts

There are several definitions of distributed systems. For the purpose of this work, we reproduce two definitions that reflect similar approaches in the study, design, development, implementation, and use of these systems. One definition belongs to Coulouris et al (2001), which state that “We define a distributed system as a collection of autonomous computers linked by a network, with software designed to produce an integrated computing facility.” Very common and well known examples are the Internet, the Web, intranets, peer-to-peer systems, mobile and ubiquitous networks, and others. The second definition belongs to Tanenbaum and van Steen 2007), and describes a distributed system as a “collection of independent computers that appears to its user as a single coherent system.” Being independent means that processing units can execute separate programs. On the other hand, they appear as a single system (in other words they present a single system image), which represents an important design goal for the developers of these systems. From the designers' point of view, a distributed system is organized according to a specific paradigm. In distributed file systems, such as the Network File System (NFS), everything is a file. Similarly, distributed systems can be organized as a collection of software objects (like in CORBA, DCOM, etc.), as linked documents (the Web), or as distributed coordination (Jini, for example).

Obviously, a distributed system runs parallel / distributed programs, collectively named concurrent programs. A concurrent program describes a collection of two or more sequential processes that cooperate in performing data transformations. Processes cooperate by communication (sharing some common data) and synchronization (execute actions in a specific order or at specific moments in time). In a parallel program, these processes are executed in parallel on multiple processors. In a distributed program, processes are executed on different computers that communicate through a network. Thus, concurrent programs encompass parallel programs and distributed programs.

Among various distributed system architectures, we can identify two basic models: client-server and peer-to-peer. In client-server systems, there are two kinds of processes that run on different machines. The server process implements and offers a specific service (such as a file service, name service, print service, etc.), while the client process requests a service. The server waits to be invoked by clients. When it receives a request, the server executes the service and sends the result to the requesting client. The client that needs a service makes a request and then waits for the result from the server and uses (consumes) it. A common example of a client-server distributed system is an Intranet with several clients running on different workstations and several specialized servers (print, file, directory, mail, web, etc.) running on more powerful machines.

Complete Chapter List

Search this Book: