Skip to content

aaronp/riff

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

yet another Raft implementation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages