{"repo":"tikv/raft-rs","free":true,"listed":false,"github":"https://github.com/tikv/raft-rs","clone":"git clone https://github.com/tikv/raft-rs.git","description":"Raft distributed consensus algorithm implemented in Rust.","language":"Rust","stars":3376,"topics":["distributed-consensus-algorithms","distributed-systems","raft","rust"],"license":"Apache-2.0","category":"dev-tools","readme_excerpt":"Raft Problem and Importance When building a distributed system one principal goal is often to build in fault-tolerance . That is, if one particular node in a network goes down, or if there is a network partition, the entire cluster does not fall over. The cluster of nodes taking part in a distributed consensus protocol must come to agreement regarding values, and once that decision is reached, that choice is final. Distributed Consensus Algorithms often take the form of a replicated state machine and log. Each state machine accepts inputs from its log, and represents the value(s) to be replicated, for example, a hash table. They allow a collection of machines to work as a coherent group that can survive the failures of some of its members. Two well known Distributed Consensus Algorithms are Paxos and Raft. Paxos is used in systems like Chubby by Google, and Raft is used in things like tikv or etcd . Raft is generally seen as a more understandable and simpler to implement than Paxos. Design Raft replicates the state machine through logs. If you can ensure that all the machines have the same sequence of logs, after applying all logs in order, the state machine will reach a consistent state. A complete Raft model contains 4 essential parts: 1. Consensus Module, the core consensus algorithm module; 2. Log, the place to keep the Raft logs; 3. State Machine, the place to save the user data; 4. Transport, the network layer for communication. Note: This Raft implementation in Rust in","default_branch":null,"files":null,"tree":[],"storefront":"/r/tikv","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/tikv/raft-rs/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}