# 1.1 Introduction

A distributed system is&#x20;

* "... a system in which the failure of a compute you didn't even know existed can render your own computer unsuable" -- Leslie Lamport&#x20;
* ... multiple computers communicating via a network
* ... trying to achieve some task together&#x20;
* Consists of "nodes" (computer, phone, car, robot, ...)&#x20;

Books

![](https://2097630930-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVORxAomcgtzVVUqmws%2Fuploads%2FO3A4HhxTg8hx24LRiHOQ%2Fimage.png?alt=media\&token=132cddf6-b7e7-4ae6-9dd0-367175ab73ac)

![](https://2097630930-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVORxAomcgtzVVUqmws%2Fuploads%2FLsueWvBaK75WAFdcpjtB%2Fimage.png?alt=media\&token=08205b60-54a4-4ce1-b4a5-66b5c1001dbd)

What make a system distributed?

* It's **inherently distributed**: e.g., sending a message from your mobile phone to your friend's phone&#x20;
* For **better reliability**: even if one node fails, the system as a whole keeps functioning&#x20;
* For **better performance**: get data from a nearby node rather than one halfway round the world&#x20;
  * Putting data closer to where the people are&#x20;
* To **solve bigger problem:** e.g. huge amounts of data, can't fit on one machine&#x20;

Why NOT make a system distributed?

* The trouble with distributed systems&#x20;
  * Communication may fail (and we might not even know it has failed)
  * Processes may crash (and we might not know)
  * All of this may happen nondeterminisitically&#x20;
* Fault tolerance: we want the system as a whole to continue working, even when some parts are faulty&#x20;
