Rast
Fast. Rust. Raft.
Rast is a toy implementation of the raft consistency protocol with a focus on
steady-state speed.
This is a proof of concept and not ready for production use.
Features
- Fully pipelined. The raft logic is non-blocking and can continue to respond to
incoming rpcs and clock ticks during disk IO.
- [Not yet implemented] Zero-copy serde. One thing that Kafka got right was
making the network format and the disk format the same. This allowed for use
of the Linux zero-copy optimization that copies the incoming network traffic
straight to disk for persistance. There's no reason a Raft log implemenation
couldn't work the same way and io_uring makes this even easier.
- [Not yet implemented] Zero-alloc, lazy serde. The Raft logic in the steady
state hot-path only looks at a couple fields of each incoming message, but
popular serde implementations (like the Protocol Buffers of GRPC) require
that an entire message be deserialized and allocate while doing so.
Alternative wire formats like Cap’n Proto and FlatBuffers avoid this.
v0.1.0-alpha.0
v0.1.0-alpha.1
v0.1.0
After v0.1.0