System model
A first-principles model of distributed systems — processes, executions, and tasks — that grounds the rest of the specification.
The system model introduces a way of thinking about distributed systems that is foundational to the Distributed Async Await specification. It defines the rules that govern the behavior of distributed software systems.
Establishing a clear and concise definition of a distributed system is foundational to a first-principles approach to a coherent system model.
A distributed system is a collection of concurrent components — processes — that communicate by exchanging messages over the network. Each component has exclusive access to its local state as well as its local channel to the network. Components do not share state and cannot directly observe each other.
The behavior of a distributed system emerges from the behavior of its processes.
The system model is structured into three parts:
- Processes — the fundamental unit of locality, with a well-defined lifecycle and a fail-stop failure model.
- Function Executions — the fundamental unit of computation, bound to a process, with a logical layer that can survive physical-process crashes.
- Tasks — the unit of work the server delivers to a worker, with a lease-based liveness model that operationalizes recovery.
The communication layer that ties these together — message events, addressing, the wire envelope — lives in the Message Passing Protocol.
Processes
The fundamental unit of locality. Lifecycle, fail-stop failure, and the logical/physical distinction.
Function Executions
The fundamental unit of computation. Lifecycle, long-running semantics, and logical vs physical executions.
Tasks
The unit of work the server delivers to a worker. State machine, lease and heartbeat, version-based concurrency control.