Skip to content
This repository has been archived by the owner on Apr 20, 2023. It is now read-only.
/ zio-raft Public archive
forked from ariskk/zio-raft

An Implementation of Raft using ZIO in Scala

License

Notifications You must be signed in to change notification settings

bitlap/zio-raft

 
 

Repository files navigation

zio-raft

License: MIT CI codecov

An Implementation of Raft using ZIO in Scala.

Raft

Raft is a popular consensus algorithm. It solves the problem of multiple servers needing to agree on a single value. It is a coordination primitive often used in databases and other distributed systems. For more info, check out the paper https://raft.github.io/

This is a work in progress implementation in Scala using ZIO for effect management. Log, Storage and StateMachine are pluggable and thus different implementations can be provided. The repo currently provides a Storage implementation using RocksDB.

Raft contains the core implementation of the consensus algorithm. The implementation is fully asynchronous. The consensus module is decoupled from the RPC layer and communicates with the outside world using Queues. RaftServer contains a reference implementation of RPC using a lightweight ZIO wrapper around Java's NIO.

For examples on how to use the RaftServer, please refer to RaftServerSpec

About

An Implementation of Raft using ZIO in Scala

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Scala 100.0%