Skip to content

Latest commit

 

History

History
37 lines (26 loc) · 1.52 KB

README.md

File metadata and controls

37 lines (26 loc) · 1.52 KB

Riff

Build Status

A Raft implementation written in scala which cleanly separates the Raft logic from any particular transport/framework.

Check out the project documentation here

API docs

Reasoning

The core project only has a dependency on eie (a tiny IO library), and then offers support for akka,monix,fs2,http4s,etc in separate sub-projects.

The outer-most representation clearly takes its inputs (requests, responses and timer messages) and produces addressed messages which can then be used by the sub-projects to send REST requests, put messages on queues, pipe them through a stream, etc.

From the outside, the Raft node takes requests, responses and timer messages as inputs and produces requests/responses as outputs.

Internally, the Raft log or ephemeral node state can also easily implement a reactive streams Publisher so that clients of this library can e.g. observe the log, state transitions, etc.

Building

It is currently built using sbt, though I hope to add Mill (and fury?) support shortly Mill certainly looks really promising!

sbt clean coverage test coverageReport