Consensus algorithms at scale: Part 2 - Rules of consensus

This post defines a generalized set of rules for leader-based consensus systems, abstracting away from specific implementations like Paxos and Raft. It emphasizes single-leader designs and outlines four core rules: 1. A leader's job is to fulfill requests by satisfying mandated durability requirements. 2. To elect a new leader, the previous leadership must be terminated, necessary nodes recruited, and previously completed requests propagated to satisfy the new leader's durability requirements. 3. Forward Progress: If a leader election fails, a subsequent re-attempt should have a path to success. 4. Race: If concurrent attempts are made to elect a leader, at most one leader must prevail. These rules are presented as intentionally generic to allow for creative implementations and deviate from traditional requirements like majority quorums and proposal numbers.