Laws of Software Engineering · Law
Law
Two Generals' Problem
Two parties communicating over an unreliable channel cannot guarantee they have agreed on anything.
How to use it. Stop trying to design protocols where both sides know for certain that the other has received the message. The guarantee is impossible. Pick a side that bears the risk, or accept "good enough" agreement.
How it gets misused. Treated as an abstract puzzle. Every payment system, every distributed lock, every "did the message get through" question hits this. It is the reason exactly-once delivery is a lie.
Related
-
Law CAP Theorem When part of a distributed system is cut off, you must choose between consistent data and available service.
-
Law FLP Impossibility In a distributed system where any one node might fail, you cannot guarantee that all working nodes will agree on a value within a fixed time.
-
Principle Idempotency An operation should produce the same result whether you run it once or run it ten times.
Clusters
- The Distributed Systems cluster - The mathematics of what is possible across a network.