notexOPENOverview
Notex/Systems/Knowledge, Truth, and Lies
10.13LESSON 13 OF 19 · 2 MIN READ

Knowledge, Truth, and Lies

Always free to read

So far in this topic we have explored the ways in which distributed systems are different from programs running on a single computer. Distributed systems have no shared memory, only message passing via an unreliable network with variable delays, and the systems may suffer from partial failures, unreliable clocks, and processing pauses.

The consequences of these issues are profoundly disorienting if you’re not used to distributed systems. A node in the network cannot know anything for sure about other nodes—it can only make guesses based on the messages it receives (or doesn’t receive). A node can find out another node’s state (what data it has stored, whether it is correctly functioning, etc.) only by exchanging messages with it. If a remote node doesn’t respond, there is no way of knowing its state, because problems in the network cannot reliably be distinguished from problems at a node.

Discussions of these systems border on the philosophical: What do we know to be true or false in our system? How sure can we be of that knowledge, if the mechanisms for perception and measurement are unreliable? Should software systems obey the laws that we expect of the physical world, such as cause and effect?

Fortunately, we don’t need to go as far as figuring out the meaning of life. In a distributed system, we can state the assumptions we are making about the behavior (the system model) and design the actual system in such a way that it meets those assumptions. Algorithms can be proved to function correctly within a certain system model. This means that reliable behavior is achievable, even if the underlying system model provides very few guarantees.

However, although it is possible to make software well behaved in an unreliable system model, doing so is not straightforward. In the rest of this topic we will further explore the notions of knowledge and truth in distributed systems, which will help us think about the kinds of assumptions we can make and the guarantees we may want to provide. In the related discussion we will proceed to look at some examples of distributed algorithms that provide particular guarantees under particular assumptions.

Progress is saved on this device.
KEEP EXPLORING

One note leads to another.

Back to the library →
⌕
Search across the entire library ⌘ K