Skip to content

spacewalkhq/raft-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Raft-rs

An understandable, fast, scalable and optimized implementation of Raft consensus algorithm. It is asynchronous(built on tokio runtime) and supports zero-copy. It does not assume storage to be non-malicious, if corrupted, it will repair the logs via peer-to-peer communication.

Note

  • This project is still under development and is not yet production-ready. It is not recommended to use this in production environments.

  • We are actively working on this project to make it better and more reliable. If you have any suggestions or feedback, please feel free to open an issue or a pull request. This is true until we reach version 1.0.0.

  • Release every 2 weeks.

Goals

  • Understandable
  • Fast
  • Scalable
  • Zero-Copy support
  • Asynchronous
  • Default Leader
  • Leadership preference
  • Log compaction
  • Snapshot Support
  • Tigerbeetle style replica repair
  • Dynamic cluster membership changes support
  • Test for dynamic cluster membership changes

To-Do

  • Production-ready
  • Test replica repair thoroughly
  • io_uring support for linux
  • Complete batch write implementation
  • Improve Log compaction
  • RDMA support
  • Deterministic Simulation Testing
  • Benchmarking

How to Run the Project

  1. Ensure you have Rust installed. If not, follow the instructions here.
  2. Clone the repository:
    git clone https://github.com/your-username/raft-rs.git
    cd raft-rs
  3. Run the project:
    cargo run --example simple_run
  4. Release the project:
    cargo build --release

Contributing

Contributions are welcome! If you have any ideas, suggestions, or issues, please feel free to open an issue or a pull request. We aim to make this project better with your help.

License

This project is licensed under the MIT License. For more information, please refer to the LICENSE file.

Contact

For any questions or feedback, please reach out to [[email protected]].