Basics of Distributed Systems
Davinia Hernández-Leo
Aplicaciones Telemáticas (Unit 1)
1
Distributed system: definition
• A distributed system is one in which (hardware or
software) components located at networked computers
communicate and coordinate their actions by passing
messages… in such a way that users perceive the
system in a single, integrated computing facility
(Coulouris et al., 2005)
2
Centralized systems
vs.
Distributed Systems
3
Centralized systems
• Have non-autonomous parts
• Often built using homogeneous technology
• Multiple users share the resources
• Single point of control and failure
4
Distributed systems
• Have autonomous parts
• May be built using heterogeneous technology
• Parts may be used exclusively
• Executed in concurrent processes
• Multiple points of failure
5
Distributed computing systems
• Comprise:
– Devices: PCs, server computers, etc.
– Local, wide area networks, Internet
– Systems: distributed operating systems,
distributed applications
Focus of the course!
6
Example: Internet
intranet %
%
% ISP
backbone
satellite link
desktop computer:
server
network :
link:
(Coulouris et al., 2005)
7
Example: Distributed operating
systems
• An operating system which manages a
collection of independent computers
and makes them appear to the users of
the system as a single computer.
– Chorus (INRIA)
– Amoeba (Vrije Universiteit, Amsterdame)
–…
8
Examples: Application to support distributed
football league management
• National association managing football leagues:
– Keep account of football clubs and their teams
– Players need a license from the association, teams need to be
registered
– Association selects the best players for the national team
• Distribution
– League management provides services to register players and
teams
– Clubs provide services to the association to make appointments
with players for games of the national team
9
Examples: Application to support distributed
football league management
• Heterogeneous application
– Clubs are autonomous, they want to use their existing computing
infrastructure (different operating systems, different programming
languages, already existing databases…)
• Multiple points of control
– “Part” run by the association needs to be multi-threaded (able to
react to multiple concurrent requests of clubs registering players for a license)
– “Part” run by the clubs need to react to a player appointment
request from the association
• Multiple points of failure
– Slow connections, computers in clubs might switched
occasionally,… 10
Why distributed systems /
applications?
11
Distributed system requirements
• Factors that influence the choice of a distributed
system architecture
-> software engineering process
– Establish core requirements
– Develop a model of the desired behaviour (analysis)
– Create an architecture (design)
– Evolve the implementation (evolution)
– Manage postdelivery execution (maintenance)
• The need to distribute a system is often derived
from non-functional requirements
12
Distributed system requirements
• Scalability
• Openness
• Heterogeneity
• Resource Sharing
• Fault-Tolerance
• Concurrency
• Transparency
13
Scalability
• A system is scalable if it remains effective when
there is a significant increase in the number of
resources and the number of users (Coulouris,
2015)
14
Scalability
– Ability to accommodate a growing load in the
future
• maximum number of concurrent users
• number of transactions that the system execute in
a given period
• data volume
… we expect certain qualities of service
– Distributed architectures achieve scalability
through employing more than one host
15
Openness
• The openness of a computer system is the
characteristic that determines whether the
system can be extended and re-implemented in
various ways (Coulouris, 2015).
• The openness of distributed systems is achieved
by specifying the key software interface of the
system and making it available to software
developers so that the system can be extended
in many ways (Weijia, 2005).
16
Openness
• Open system can easily be extended and
modified
– Preserve investments within institutions
(if new functional requirements)
– Parts need to have well-defined and
well-documented interfaces
• Communication between “parts”
• Declaring services the “part” offers (so that other
parts can use these services)
– Interfaces should be “published” “standard”,
not dependent on a particular vendor
17
Heterogeneity
• Variety and difference of:
– Programming languages
– Operating systems
– Hardware platforms
– Network protocols
• Why?
– Reuse “parts” off-the-shelf, legacy parts,
different contractors
• Heterogeneity can be addressed by
distributed systems
18
Resource access and sharing
• Resources, i.e., hardware, software and data,
from different “parts” of the system are shared
by multiple users
• Security implications, request access
19
Fault-Tolerance / failure handling
• Operations that continue even in the
presence of faults are referred to as
fault-tolerant
• Distributed systems achieve fault-tolerance
by means of replication
20
Concurrency
• Several clients may attempt to access a shared
resource at the same time
• Consider potential data inconsistency
21
Transparency
• The system is perceived as a whole
rather than a collection of distributed
components
– I.e., the fact that a system is composed
from distributed “parts” should be hidden
from users and application programmers
22
Access transparency
• Enables local and remote resources to be
accessed using identical operations
Location transparency
• Enables resources to be accessed without
knowledge of their physical or network
location
23
Concurrency transparency
• Enables several processes to operate
concurrently using shared resources
without interference between them
Replication transparency
• Enables multiple instances of resources to
be used to increase reliability and
performance without knowledge of the
replicas by users or application
programmers
24
Failure transparency
• Enables the concealment of faults, allowing
users and application programs to
complete their tasks despite the failure of
hardware of software components
Mobility (migration) transparency
• Allows the movement of resources and
clients within a system without affecting
the operation of users or programs
25
Performance transparency
• Allows the system to be reconfigured to
improve performance as loads vary
Scaling transparency
• Allows the system and applications to
expand in scale without change to the
system structure or the application
algorithms
26
Distributed applications
• Access to data transport services
– E.g., Sockets
– Very limited transparency
– Complex development due to complexity
associated to distribution
• Middleware (distributed processing platforms)
– Layer of software that mask heterogeneity and
provide a convenient programming model to
application developers
27
Middleware
• klñk
28
Middleware
• Between application and transport
• Distribution transparency
– To the developer!!!
• Solves heterogeneity
• Hardware
• Operating systems
• Networks
• Programming Languages
• Development and execution environment
for distributed applications
29
Types of middleware
• Message-oriented middleware
• Transaction-oriented middleware
• RPC (Remote Procedure Call)
• Object-oriented Middleware
• Component-oriented Middleware
• Service-oriented Middleware
30