Lol: A new Raft library

This is an announcement of my new project "lol" (this name is not a joke. one of the two L means log) which is a generic Raft library based on tokio. The design is mostly fixed and it is good time to share.

Raft is a consensus algorithm in distributed environment: Nodes in cluster make a consensus by consistent log replication. This algorithm is used in famous application like etcd.

This library is useful if you want to make a distributed application that share the same log (or state) in the same order strictly. To make an application you need to implement RaftApp trait but it has only 4 functions and easy to implement. (kvs/kvs_server.rs is an example)

For detail, please read these documents:

Thank you for reading.

5 Likes

Hey, looks cool. :slight_smile: I might try that some day if I ever get to making one of my distributed orchestration tools.

I like that you've already got a guide up for it. :+1:

1 Like

Thank you. I am improving this library day by day so design would still change a bit but the document-level concept is fixed. Please keep watching.

1 Like

Announcement of version update: v0.5.0 is released

The biggest change in this release is introducing a new concept SnapshotTag.

SnapshotTag is an indirection to actual snapshot resource. A SnapshotTag is just a sequence of byte which is able to express any identity pointing to a resource. For example, if the resource is a local file it could be a file path and if the resource is on AWS S3 it could be an object key.

The SnapshotTag is maintained in RaftStorage which is an abstraction of backend storage to store log, vote, etc. lol already provides two tested implementations: in-memory and persistent. Persistent one is backed by RocksDB. If you have an idea of more sophisticated implementation PR is welcome.

For more information, please refer to doc.rs and project wiki.

Thanks.

2 Likes