Introduction Flashcards
(7 cards)
What is a distributed system?
(Defintion, Concept, work done)
A distributed system is a collection of autonomous computing elements that appears to its users as a single coherent system.
Concept: Multiple interconnected computers that cooperate together to provide some service.
You can get work done:
* wherever you are
* whenever you want
* even if parts of the system aren’t working
* no matter how many other people are using it
* as if it was a single dedicated system just for you
* that (almost) never fails
Why are distributed Systems used?
(4 points) (ARAC)
- allow geographic separation
- Reliable Systems
- Combine systems for higher capacity
- Customise computers for specific tasks (email server, backup server)
What are the main challenges with Distributed Systems?
(2 Points) (KH)
- Keep working in the presence of partial failures, without effecting user experience.
- Handle inherent concurrency in the application context (Managing multiple tasks that can occur simultaneously)
Solutions to the first aggravate/worsen the second!
How is reliablity / Failure measured in distributed systems? (Leave for now?)
Mean Time before Failure
Why is Distributed Systems hard?
(6 points) (SFCPIS)
- System Design (Spliting responsibilities between client and server)
- Failures are regularly occuring, partial and ambigious.
- Concurrency and consistency.
- Performance
- Implementation and testing
- Security
What properties do we want in a Distributed System?
(6 Points) (FHSRCS)
- Fault-Tolerant
- Highly Available
- Scalable
- Recoverable
- Consistent
- Secure
What is Brewer’s Conjecture (2000)
(Definition)
A computer science theory, in which Eric Brewer states; “it is impossible for a distributed service to provide more than two of the following”:
1. Consistency (all clients see the same data at the same time)
2. Availability (any client making a request for data gets a response, even in presence of partial failures)
3. Partition Tolerance (The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes.)