C-Raft¶
Production grade asynchronous C implementation of the Raft consensus protocol.
Design¶
The library a has modular design: its core part implements only the core Raft algorithm logic (no I/O and no system calls). On top of that, various drivers are provided that implement actual network communication and persistent data storage.
The core part of the library is designed to work well with asynchronous or non-blocking I/O engines (such as libuv and io_uring), although it can be used in threaded or blocking contexts as well.
Features¶
C-Raft implements all the basic features described in the Raft dissertation:
Leader election
Log replication
Log compaction
Membership changes
It also includes a few optional enhancements:
Optimistic pipelining to reduce log replication latency
Writing to the leader’s disk in parallel
Automatic stepping down when the leader loses quorum
Leadership transfer extension
Non-voting servers
Source¶
The source tree is available on github.
Licence¶
This raft C library is released under a slightly modified version of LGPLv3, that includes a copyright exception letting users to statically link the library code in their project and release the final work under their own terms. See the full license text.