Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

What is a

distributed system?
A distributed system is one in which the failure
of a computer you didnt even know existed
can render your own computer unusable.
CS 378
Leslie Lamport
Intro to
Distributed Computing
Lorenzo Alvisi
Anurag Agarwal

What is a Goals (and auto-goals)


distributed system? of a Distributed System
A distributed system is software through which a
collection of independent computers appears to its Connecting Resources and Users
users as a single, coherent system Transparency
Machine A Machine B Machine C

Openness
Distributed Applications
Middleware Scalability

Local OS Local OS Local OS

Network
Transparency Openness
Easily interact with other open systems
Transparency Description
Access Hides differences in data representation and invocation
mechanisms
Conform to well-defined interfaces
Location Hides where an object resides
Achieve independence in heterogeneity wrt
Migration Hides from an objec that objects location
Hardware
Relocation Hides from a client the change of location of an object to
which the client is bound Platform
Replication Hides that an object may be replicated, with replicas at
different locations Languages
Concurrency Hides coordination of activities between objects

Failure Hides the failure and recovery of object Support different app/user-specific policies
Persistence Hides whether a resource is in memory or on disk

Openness Scalability
Easily interact with other open systems

Conform to well-defined interfaces Size scalability


number of users and processes
Achieve independence in heterogeneity wrt
Hardware Geographical scalability
Platform maximum distance between nodes
Languages
Administrative scalability
Support different app/user-specific policies number of administrative domains
ideally, provide only mechanisms!
A first course in
Sca ling
c y Distributed Computing...
Distribute

e n
t
partition data and computation across multiple machine

s
Two basic approaches

i
Java applets, DNS, WWW

s
Replicate cover many interesting systems, and distill

n
make copies of data available at different machines
from them fundamental principles

o
mirrored web sites, replicated fs, replicated db
focus on a deep understanding of the

C
Cache fundamental principles, and see them
allow client processes to access local copies instantiated in a few systems
Web caches, file caching

A few intriguing
questions
How do we talk about a distributed execution?
Can we draw global conclusions from local information?
Can we coordinate operations without relying on synchrony?
For the problems we know how to solve, how do we
characterize the goodness of our solution?
Are there problems that simply cannot be solved?
What are useful notions of consistency, and how do we
maintain them?
What if part of the system is down? Can we still do useful
work? What if instead part of the system becomes
possessed and starts behaving arbitrarily: All bets are off?
Two Generals Problem
Romans win if
S.P.Q.R S.P.Q.R attack simultaneously

Saving the world


Otherwise,
Barbarians win
Romans must
coordinate attack

before bedtime

Two Generals Problem Two Generals Problem


S.P.Q.R S.P.Q.R
Claim There is no non-trivial protocol that guarantees
Problem: that the Romans will always attack simultaneously
Save Western
Civilization Proof: Let P be shortest such protocol
(i.e. design a protocol consider last message mlast
that ensures Romans P must work if mlast never arrives
always attack so dont send it
simultaneously) but now we have a new protocol shorter than P !
Fundamental Limitation: Solution needs
unbounded number of messages or
only communication is by messenger
guaranteed message delivery
messengers must sneak through the valley
they dont always make it Otherwise, attack may never take place!

You might also like