Skip to content
all episodes
Code of Architecture · episode 28

Distributed Systems — Episode 8

1:42:32

Episode participants

  • Denis Kostousov

    guest

  • Salikh Fakhrutdinov

    guest

Conversation

What we discussed on the recording

The eighth episode connects dependability with availability, reliability, safety, and maintainability. Failures are a normal condition of distributed systems. The speakers separate fault, error, and failure, then examine crash, omission, timing, response, and arbitrary models, including Byzantine behavior.

Next come redundancy and process groups. Physical copies, temporal repetition, and control data mask different faults. A group may be flat or hierarchical: a coordinator simplifies decisions but requires an election after failure, while a flat structure makes membership and communication harder.

Consensus is discussed through Paxos and operational Raft. A leader maintains a replicated log, followers catch up, and failure detection still relies on timeouts and suspicion. Reliable group communication adds delivery guarantees, multicast, and message ordering; redelivery requires idempotent handlers.

The finale covers distributed commit and recovery. Two-phase commit is straightforward until the coordinator fails; three-phase commit adds pre-commit to reduce blocking. Coordinated checkpoints must align process state with in-flight messages. Money transfers and other irreversible effects need deduplication and compensation because rollback alone cannot undo the real world.

Book series
Distributed Systems
Maarten van Steen, Andrew S. Tanenbaum
Book playlist