When we design a distributed system, we hope it could satisfy blow requirements:
- The network is reliable (impossible, no network is absolutely reliable)
- Latency is zero
- Bandwidth is infinite
- The network is secure
- Topology doesn’t change
- There is one administrator
- Transport cost is zero
- The network is homogenerous
- System clocks are identical
Most assumptions above are impossible, they are just perfectionists’ fantasy.