0% found this document useful (0 votes)
24 views13 pages

IntroDS - Introds

Uploaded by

Joseph
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views13 pages

IntroDS - Introds

Uploaded by

Joseph
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

What is a distributed system?

Many definitions
Ø [Coulouris]
§ A distributed system is one in which hardware or software
components located at networked computers communicate and
coordinate their actions only by passing messages.
Ø [Tanenbaum & van Steen]
§ A distributed system is a collection of independent computers
that appears to its users as a single coherent system.
Ø [Lamport]
§ A distributed system is a system that prevents you from doing
any work when a computer you have never heard about, fails.
Ø The above definitions take different perspectives
§ Operational perspective
§ User perspective
§ DS characteristics perspective

Frank Eliassen, Ifi/UiO 3

Examples of distributed
systems

ØWeb search
§ Index the entire contents of the Web.
ØMassively multiplayer online games
§ Very large number of users sharing a virtual
world.
ØFinancial trading
§ Real time access and processing of a wide
rage of information sources.
Frank Eliassen, Ifi/UiO 4

2
Implications of distributed systems
§ Concurrency
– components execute in concurrent processes that read and update
shared resources. Requires coordination
§ No global clock
– makes coordination difficult (ordering of events)
§ Independent failure of components
– “partial failure” & incomplete information
§ Unreliable communication
– Loss of connection and messages. Message bit errors
§ Unsecure communication
– Possibility of unauthorised recording and modification of messages
§ Expensive communication
– Communication between computers usually has less bandwidth, longer
latency, and costs more, than between independent processes on the
same computer

Frank Eliassen, Ifi/UiO 5

Why
distributed systems?
§ resource sharing
– the possibility of using available resources any where
§ openness
– an open distributed system can be extended and improved
incrementally
– requires publication of component interfaces and standards
protocols for accessing interfaces
§ scalability
– the ability to serve more users, provide acceptable response
times with increased amount of data
§ fault tolerance
– maintain availability even when individual components fail
§ allow heterogeneity
– network and hardware, operating system, programming
languages, implementations by different developers
Frank Eliassen, Ifi/UiO 6

3
Resource sharing

Ø The opportunity to use available hardware,


software or data anywhere in the system
Ø Resource managers control access, offer a
scheme for naming, and control concurrency
Ø A service is a software module that manages a
collection of related resources and presents their
functionality to users.
Ø A resource sharing model describes how
§ resources are made available
§ resources can be used
§ service provider and user interact with each other
Frank Eliassen, Ifi/UiO 7

Models for resource sharing

Ø Client-server resource model


§ Server processes act as resource managers, and offer services
(collection of procedures)
§ Client processes send requests to servers
§ (HTTP defines a client-server resource model)
Ø Object-based resource model
§ Any entity in a process is modeled as an object with a message
based interface that provides access to its operations
§ Any shared resource is modeled as an object
§ Object based middlewares (CORBA, Java RMI) defines object-
based resource models

Frank Eliassen, Ifi/UiO 8

4
Scalability
Ø A system is scalable if it remains effective when there is
a significant increase in the amount of resources (data)
and number of users
§ Internet: number of users and services has grown enormously
Ø Scalability denotes the ability of a system to handle an
increasing future load
Ø Requirements of scalability often leads to a distributed
system architecture (several computers)

Frank Eliassen, Ifi/UiO 9

Scalability problems (1)


ØOften caused by centralized solutions

Frank Eliassen, Ifi/UiO 10

5
Scalability problems (2)
ØCharacteristics of decentralized
algorithms:
§ No machine has complete information about
the system state.
§ Machines make decisions based only on local
information.
§ Failure of one machine does not ruin the
algorithm.
§ There is no implicit assumption that a global
clock exists.
Frank Eliassen, Ifi/UiO 11

Scaling techniques
Ø Distribution
§ splitting a resource (such as data) into smaller parts,
and spreading the parts across the system (cf DNS)
Ø Replication
§ replicate resources (services, data) across the system
§ increases availability, helps to balance load
§ caching (special form of replication)
Ø Hiding communication latencies
§ avoid waiting for responses to remote service requests
(use asynchronous communication or design to reduce
the amount of remote requests)

Frank Eliassen, Ifi/UiO 12

6
Fault tolerance
Ø Hardware, software and network fail!!
Ø DS must maintain availability even in cases where
hardware/software/network have low reliability
Ø Failures in distributed systems are partial
§ makes error handling particularly difficult
Ø Many techniques for handling failures
§ Detecting failures (checksum a.o.)
§ Masking failures (retransmission in protocols)
§ Tolerating failures (as in web-browsers)
§ Recovery from failures (roll back)
§ Redundancy (replicate servers in failure-independent ways)

Frank Eliassen, Ifi/UiO 13

Example: Google File-System


Early days…

Challenges:
…today
- Scalability
- Reliability
- Performance
- Openness

Frank Eliassen, Ifi/UiO 14

7
Distribution transparency

ØAn important goal of a distributed system


is to hide the fact that its processes and
resources are physically distributed across
multiple computers
ØA distributed system that is able to present
itself to its users and applications as if it
were only a single computer system is said
to be transparent
Frank Eliassen, Ifi/UiO 15

Transparency in a distributed
system

Different forms of transparency in a distributed system (ISO, 1995).


Trade-off between degree of transparency and performance of a system
Frank Eliassen, Ifi/UiO 16

8
Pitfalls when Developing
Distributed Systems

ØFalse assumptions made by first time


developer:
§ The network is reliable.
§ The network is secure.
§ The network is homogeneous.
§ The topology does not change.
§ Latency is zero.
§ Bandwidth is infinite.
§ Transport cost is zero.
§ There is one administrator.
Frank Eliassen, Ifi/UiO 17

Quality of Service (QoS)

ØNon-functional properties of the system:


§ Reliability
§ Security
§ Performance (Responsiveness and
throughput)
Ø Adaptability to meet changes is an
important aspect of QoS

Frank Eliassen, Ifi/UiO 18

9
The role of middleware in
distributed systems
Ø Layer of software offering a single-system view
Ø Offers transparencies (access, location, …)
Ø Simplifies development of distributed applications
and services
Distributed
applications
and services

Platform Independent API - transaction oriented (ODTP XA)


- message oriented(IBM MQSeries)
DISTRIBUTION MIDDEWARE
- remote procedure call (X/Open DCE)
Platform Dependent API - object-based (CORBA, COM, Java)
Local OS Local OS Local OS
... n
1 2
Frank Eliassen, Ifi/UiO 19

Types of distributed system


Ø Distributed Computing Systems
§ Used for high performance computing tasks
§ Cluster and Cloud computing systems
§ Grid computing systems
Ø Distributed Information Systems
§ Systems mainly for management and integration of
business functions
§ Transaction processing systems
§ Enterprise Application Integration
Ø Distributed Pervasive (or Ubiquitous) Systems
§ Mobile and embedded systems
§ Home systems
§ Sensor networks
Frank Eliassen, Ifi/UiO 20

10
Distributed Computing Systems:
Cluster Computing Systems
Collection of similar PCs, closely connected, all run same OS

An example of a cluster computing system.


Frank Eliassen, Ifi/UiO 21

Distributed Computing Systems:


Grid Computing Systems
Federation of autonomous and heterogeneous
computer systems (HW,OS,...), several adm domains

A layered architecture for grid computing systems.


Frank Eliassen, Ifi/UiO 22

11
Distributed Information Systems:
Enterprise Application Integration
Allowing existing applications to directly exchange
information using communication middleware

Middleware as a communication facilitator in enterprise


application integration Frank Eliassen, Ifi/UiO 23

Example communcation
middleware: CORBA
Clients may invoke methods of remote objects without worrying about:
object location, programming language,
operating system platform, communcation
protocols or hardware.

X Y Z Different
invoke Z’s programming languages
method foo()
foo() (or object models)
IDL IDL IDL
Common object model

RMI over IIOP


Object Request Broker (ORB)

Frank Eliassen, Ifi/UiO 24

12
Distributed Pervasive
Systems

Ø Pervasive systems is about exploiting the increasing


integration of services and (small/tiny) computing
devices in our everyday physical world
Ø (Mobile) Devices in distributed pervasive systems
discovers the environment (its services) and
establishes themselves in this environment as best
as possible.
Ø Requirements for pervasive applications
§ Embrace contextual changes.
§ Encourage ad hoc and dynamic composition.
§ Recognize sharing as the default.
Frank Eliassen, Ifi/UiO 25

Distributed pervasive system :


MUSIC context-aware adaptation middleware
http://www.euronews.net/2010/06/16/music-to-you-mobile-s-ears/

services
temperature devices
light
context-aware,
varying context provided utility self-adaptive
applications
environment
context user

user optimizes
context adapts
monitors (reconfigures)
device
context MUSIC Context & Adaptation Middleware
Inspects &
reasons about
activity
position
(e.g., driving) Application
memory use
variability
model
battery
26
CPU use http://ist-music.berlios.de/

13
Distributed Computing as a
Utility
Ø View: Distributed resources as a commodity or utility
Ø Resources are provided by service suppliers and effectively
rented rather than owned by the end user.
Ø The term cloud computing capture the vision of computing as
a utility
SalesForce CRM
SaaS
Clients LotusLive

Google App
Internet PaaS Engine

IaaS
Frank Eliassen, Ifi/UiO 27

Summary
Ø Distributed systems:
§ components located in a network that communicates and
coordinates their actions exclusively by sending messages.
Ø Consequences of distributed systems
§ Independent failure of components
§ Unsecure communication
§ No global clock
Ø Distribution transparency: providing a single computer
system view
Ø Requirements like resource sharing, openness,
scalability, fault tolerance and heterogeneity can be
satisfied by distributed systems
Ø Many pitfalls when developing distributed systems
Frank Eliassen, Ifi/UiO 28

14

Common questions

Powered by AI

Scalability is crucial in distributed systems as it allows the system to handle an increasing load, whether that be an increase in data, the number of users, or services. It is integral to maintaining performance levels as demand grows. Achieving scalability often leads to the adoption of distributed architectures. Techniques to support scalability include distribution, where resources like data are split and spread across systems (e.g., DNS); replication, which duplicates resources to improve availability and balance load; and latency hiding, which involves asynchronous communications or reducing remote requests. These techniques aim to ensure that increases in load do not degrade system responsiveness or user satisfaction.

In a client-server model, resource sharing is organized with server processes managing resources and providing services through a set of procedures, while clients request these services. This model simplifies resource management and user interactions but may become a bottleneck at the server if not properly managed. Conversely, an object-based model treats entities as objects with a message-based interface to access operations, with all shared resources modeled as objects. This model provides a flexible approach to resource sharing, enabling more direct interaction with resources and potentially better load distribution. However, it requires robust implementation of middleware like CORBA or Java RMI to manage object interactions efficiently. Each model has its trade-offs, with client-server favoring simplicity and object-based enhancing flexibility.

Middleware acts as a layer of software that provides a single-system view, enabling transparent access and simplifying the development of distributed applications. It handles complexities such as communication protocols, data translation, and network management, allowing developers to focus on application logic rather than underlying infrastructure intricacies. Core types of middleware include transaction-oriented middleware (e.g., ODTP XA), message-oriented middleware (e.g., IBM MQSeries), remote procedure call middleware (e.g., X/Open DCE), and object-based middleware (e.g., CORBA, COM, Java). These middleware solutions provide various services like data exchange, transaction management, and object invocation that are critical for distributed applications across heterogeneous environments.

Distributed computing as a utility shifts resource management from ownership to being service-oriented, where resources are rented from service providers rather than owned by users. This model aligns with cloud computing paradigms like SaaS, PaaS, and IaaS where infrastructures and applications are provided on-demand over the internet. This approach facilitates scalability and flexibility, allows for cost-effective resource use, and reduces the overhead of managing hardware and infrastructure. However, it involves reliance on service providers for reliability and performance, prompting careful evaluation of service agreements to meet business needs effectively. This shift necessitates mindful consideration of security, compliance, and interoperability within service-based infrastructures.

Key challenges in distributed systems include concurrency, the absence of a global clock, independent component failure, unreliable communication, and unsecure communication. Concurrency requires complex coordination as multiple processes concurrently read and update shared resources. The lack of a global clock complicates the ordering of events, impacting synchronization efforts. Independent component failures, known as partial failures, mean that while some system components may fail, others continue to operate, requiring robust error handling and recovery mechanisms. Unreliable communication can result in lost messages and connection issues, necessitating retransmission protocols and error detections such as checksums. Unsecure communication may lead to unauthorized message modifications, advocating for strong encryption and authentication measures. Together, these challenges can degrade performance through increased latencies and may impact stability if not adequately addressed.

Pervasive distributed systems focus on integrating computing services into the physical environment, leveraging small and mobile devices. Key characteristics include embracing contextual changes, supporting ad-hoc and dynamic compositions, and recognizing sharing as a default behavior. They influence the development of context-aware applications by requiring the applications to adapt to varying environmental contexts, such as user location or device capabilities. This adaptability is achieved through middleware like the MUSIC context-aware adaptation framework, which optimizes and reconfigures applications based on changing contexts, ensuring responsiveness and efficient resource use. Such systems and applications must be designed with flexibility and responsiveness to effectively manage diverse and dynamic environments.

Fault tolerance in distributed systems is managed through a combination of techniques designed to maintain availability even when components fail. Failures are often partial due to the distributed nature of the systems, complicating error handling. Strategies for managing failures include failure detection, using checksums and other methods to identify issues; masking failures by retransmitting data in communication protocols; tolerating failures by allowing systems to continue functioning under minor failures, as seen in web browsers; recovering from failures using rollback mechanisms; and redundancy, where servers are replicated in a failure-independent manner to ensure continuity of service. These strategies ensure that systems remain robust and maintain service levels despite component failures.

Developers new to distributed systems often make several false assumptions, such as believing the network is always reliable, secure, or homogeneous, and that it has zero latency or infinite bandwidth. These misassumptions can lead to inadequate system designs that fail under real-world conditions, where network reliability varies, security can be compromised, different parts of a system may use divergent technologies, and resource constraints affect performance. Recognizing these potentials for variability is essential for robust system design, prompting considerations like error handling, security measures, decentralized algorithms, and efficient resource management to address these challenges effectively.

Scalability techniques in distributed systems are critical for addressing growth demands. Distribution involves partitioning resources such as data across the network, as seen in DNS, which reduces bottlenecks and balances load across multiple systems. Replication enhances system availability by duplicating resources like services or data, which supports load balancing and failure recovery. Latency hiding involves strategies like asynchronous communication to prevent delays in remote service interactions. By implementing these techniques, distributed systems can manage increasing users and data without sacrificing performance and user experience, ensuring that systems can efficiently meet growing demands over time.

Distribution transparency in a distributed system aims to give users the impression that they are interacting with a single coherent system, masking the complexities of the system's distributed nature. This benefits users by simplifying the interaction process and enables ease of use, as users do not need to manage or be aware of the underlying distribution of resources and processes. However, achieving high transparency can lead to trade-offs in system performance. For example, ensuring location transparency might introduce additional latency as requests are rerouted to physically distant resources. Additionally, the effort to hide distribution details can lead to higher overheads in system management and resource allocation. Finding a balance between transparency and performance is crucial.

You might also like