I know some of you already know about this project, but I don't think I've ever mentioned it in the group and I know there has been some interest in it if only from an academic standpoint.
CopyCat is a framework for building highly-consistent, fault-tolerant replicated state machines. The project actually started out as a an implementation of the
Raft consensus algorithm on the Vert.x event bus. However, I've recently refactored it into an abstract framework. CopyCat is now simply a pure implementation of the Raft algorithm that features a pluggable messaging layer. Additionally, it includes extensions for developing systems on the Vert.x event bus or using Vert.x TCP/HTTP clients and servers, which is why I'm still mentioning it here.
For those who are unfamiliar with Raft, it's a consensus algorithm for managing a replicated log - in the same family as Paxos. Raft uses leader election to maintain log consistency and coordinate state changes across a cluster. CopyCat now supports all the features of the Raft algorithm - many of which are quite complex - including local snapshots, snapshot replication, and cluster membership changes. The framework supports custom protocols and endpoints as service providers, allowing users to build replicated state machines over a variety of transports (TCP, event bus, other messaging systems, etc) and with custom user-facing interfaces (TCP, HTTP, REST, etc). I suppose using Vert.x's EventBusBridge, one could even develop a client-side Javascript application backed by a highly-consistent, fault-tolerant replicated state machine. But I digress.
Happy hacking!
Jordan Halterman
Disclaimer: This project is primarily just an academic exercise. Consensus algorithms are notoriously difficult to implement, and I make no guarantees as to the reliability, usability, safety, or efficiency of this particular implementation. However, with some time and contributions I have no doubt it can become a stable and useful framework.