--- obj: concept website: https://raft.github.io wiki: https://en.wikipedia.org/wiki/Raft_(algorithm) rev: 2024-02-07 --- # Raft Consensus Algorithm Raft is a consensus algorithm designed to manage replicated logs in distributed systems. Developed as an alternative to Paxos, Raft prioritizes understandability and simplicity, making it an attractive choice for building fault-tolerant distributed systems. ## Concepts ### Leader Election Raft employs a leader election mechanism where nodes contend to become the leader. Nodes transition through follower, candidate, and leader states based on timeouts and votes. ## Log Replication The leader manages log replication by sending heartbeat messages and append entries to followers. Followers replicate the leader's log, ensuring consistency across the system. ## Term and Commit Index Raft introduces the concept of terms to track changes in leadership. Each leader's term is associated with a commit index, indicating the highest log entry replicated to a majority of nodes. ## How Raft Works - Follower State: Nodes start as followers, waiting for incoming leader messages. If a follower doesn't receive a message within a specified timeout, it transitions to the candidate state. - Candidate State: In the candidate state, a node requests votes from other nodes in the system. If a candidate receives votes from a majority, it transitions to the leader state. - Leader State: The leader manages log replication by sending heartbeat messages to maintain its leadership. It appends new log entries and sends append entries messages to followers for replication. - Log Replication: Followers replicate the leader's log, responding with acknowledgments to confirm successful replication. Log entries are committed when they have been replicated to a majority of nodes. - Handling Failures: Raft ensures fault tolerance by allowing nodes to detect leader failures and initiate new elections. Only the most up-to-date log entries are committed, preventing inconsistencies. ## Use Cases - Distributed Databases: Raft is widely used in distributed databases to ensure data consistency and reliability. - Distributed Systems: Applications requiring consensus for critical decision-making leverage Raft for its simplicity and reliability.