This is an implementation of the Raft Consensus Algorithm. It relies on a simplified functional actor system (assembled by me with inspiration from a couple of places) built on top of fs2 queues and cats-effects.
The purpose behind this was to learn more/exercise my knowledge about cats-effects and concurrency while having fun.
Since this is a toy project and I started working in the funnier segment, let's do some planning to ensure its completion in a, hopefully, close future.
Raft Consensus Algorithm:
- Leader Election.
- Log replication.
- Dynamic cluster members changes.
Software Engineering:
- Functional actors using concurrency primitives.
- Logging.
- Add a code formatter tool. (Scalafmt FTW.)
- Add CI integration. (Travis FTW.)
- Testing. (Damn it!: I was too excited about getting a MVP.)
- Benchmarking against an implementation using akka actors. (Because why not?)
Knowledge sharing:
- Write a blog post. (This is the hardest part. I'm super-lazy for writing.)