diff --git a/technology/tools/Raft.md b/technology/tools/Raft.md new file mode 100644 index 0000000..e92002c --- /dev/null +++ b/technology/tools/Raft.md @@ -0,0 +1,43 @@ +--- +obj: concept +website: https://raft.github.io +--- + +# 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.