This is a fully asynchronous and single-thread C library implementing the raft algorithm. It has modular design so you can swap out the I/O implementation if needed, but it also comes with batteries included and a stock I/O implementation based on libuv, so it should pretty straightforward to use.
Besides leader election, log replication, membership changes and compaction, it also includes a few optional enhancements:
Optimistic pipelining
Writing to leader's disk in parallel
Automatic stepping down when the leader loses quorum
It has been used in production for a few months now as backend raft engine for the dqlite project (a distributed version of SQLite), which is in turn used by LXD (a systems container manager).
This is a fully asynchronous and single-thread C library implementing the raft algorithm. It has modular design so you can swap out the I/O implementation if needed, but it also comes with batteries included and a stock I/O implementation based on libuv, so it should pretty straightforward to use.
Besides leader election, log replication, membership changes and compaction, it also includes a few optional enhancements:
It has been used in production for a few months now as backend raft engine for the dqlite project (a distributed version of SQLite), which is in turn used by LXD (a systems container manager).