> For the complete documentation index, see [llms.txt](https://sliu583.gitbook.io/blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sliu583.gitbook.io/blog/distributed-system/distributed-systems-lecture-series/1.1-introduction.md).

# 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

![](/files/Tifbe6bugJRaw29W8zgC)

![](/files/f6OfvfK7i7UQ3HZBNf4p)

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;
