Introduction To Distributed Systems
Introduction To Distributed Systems
Introduction:
Networks of computers are everywhere. The Internet is one, as are the many networks of which it is
composed. Mobile phone networks, corporate networks, factory networks, campus networks, home networks,
in-car networks – all of these, both separately and in combination, share the essential characteristics that make
them relevant subjects for study under the heading distributed systems.
We define a distributed system as one in which hardware or software components located at networked
computers communicate and coordinate their actions only by passing messages. This simple definition covers
the entire range of systems in which networked computers can usefully be deployed.
Definition: - A distributed system is a collection of independent computers that appear to the users of the
system as a single computer.
Fig. 1-1 shows four networked computers and three applications, of which application B is distributed across
computers 2 and 3. Each application is offered the same interface. The distributed system provides the means
for components of a single distributed application to communicate with each other, but also to let different
applications communicate. At the same time, it hides, as best and reasonable as possible, the differences in
hardware and operating systems from each application.
Examples:
a network of workstations allocated to users
a single file system (all users access files with the same path name)
user command executed in the best place (user workstation, a workstation belonging to someone else,
or on an unassigned processor in the machine room)
Advantages and Disadvantages of Distributed Systems:-
Trends in distributed systems:
Distributed systems are undergoing a period of significant change and this can be traced back to a number of
influential trends:
The situation becomes quite different in the case of grid computing. This subgroup consists of
distributed systems that are often constructed as a federation of computer systems, where each system
may fall under a different administrative domain, and may be very different when it comes to
hardware, software, and deployed network technology.
An important part of this middleware is formed by the libraries for executing parallel programs. As
we will discuss in Chap. 4, many of these libraries effectively provide only advanced message-based
communication facilities, but are not capable of handling faulty processes, security, etc.
The architecture consists of four layers. The lowest fabric layer provides interfaces to local resources
at a specific site. The connectivity layer consists of communication protocols for supporting grid
transactions that span the usage of multiple resources. The resource layer is responsible for managing
a single resource. It uses the functions provided by the connectivity layer and calls directly the
interfaces made available by the fabric layer. The next layer in the hierarchy is the collective layer, it
deals with handling access to multiple resources and typically consists of services for resource
discovery, allocation and scheduling of tasks onto multiple resources, data replication, and so on.
Challenges:
The construction of distributed systems produces many challenges:
Heterogeneity: They must be constructed from a variety of different networks, operating systems, computer
hardware and programming languages. The Internet communication protocols mask the difference in
networks, and middleware can deal with the other differences.
Openness: Distributed systems should be extensible – the first step is to publish the interfaces of the
components, but the integration of components written by different programmers is a real challenge.
Security: Encryption can be used to provide adequate protection of shared resources and to keep sensitive
information secret when it is transmitted in messages over a network. Denial of service attacks are still a
problem.
Scalability: A distributed system is scalable if the cost of adding a user is a constant amount in terms of the
resources that must be added. The algorithms used to access shared data should avoid performance
bottlenecks and data should be structured hierarchically to get the best access times. Frequently accessed data
can be replicated.
Failure handling: Any process, computer or network may fail independently of the others. Therefore each
component needs to be aware of the possible ways in which the components it depends on may fail and be
designed to deal with each of those failures appropriately.
Concurrency: The presence of multiple users in a distributed system is a source of concurrent requests to its
resources. Each resource must be designed to be safe in a concurrent environment.
Transparency: The aim is to make certain aspects of distribution invisible to the application programmer so
that they need only be concerned with the design of their particular application. For example, they need not be
concerned with its location or the details of how its operations are accessed by other components, or whether
it will be replicated or migrated. Even failures of networks and processes can be presented to application
programmers in the form of exceptions – but they must be handled.
Quality of service: It is not sufficient to provide access to services in distributed systems. In particular, it is
also important to provide guarantees regarding the qualities associated with such service access. Examples of
such qualities include parameters related to performance, security and reliability.