Persistent • Consistent • Fault-tolerant • Database • Coordination • Framework
Copycat is both a low-level implementation of the Raft consensus algorithm and a high-level distributed coordination framework that combines the consistency of ZooKeeper with the usability of Hazelcast to provide tools for managing and coordinating stateful resources in a distributed system. Its strongly consistent, fault-tolerant data store is designed for such use cases as configuration management, service discovery, and distributed synchronization.
Copycat exposes a set of high level APIs with tools to solve a variety of distributed systems problems including:
Additionally, Copycat is built on a series of low-level libraries that form its consensus algorithm. Users can extend Copycat to build custom managed replicated state machines. All base libraries are provided as standalone modules wherever possible, so users can use many of the following components of the Copycat project independent of higher level libraries:
- A low-level I/O & serialization framework
- A generalization of asynchronous client-server messaging
- A fast, persistent, cleanable commit log designed for use with the Raft consensus algorithm
- A feature-complete implementation of the Raft consensus algorithm
- A lightweight Raft client including support for linearizable operations via sessions
Copycat is still undergoing heavy development and testing and is therefore not recommended for production!
Jepsen tests are currently being developed to verify the stability of Copycat in an unreliable distributed environment. There is still work to be done, and Copycat will not be fully released until significant testing is done both via normal testing frameworks and Jepsen. In the meantime, Copycat snapshots will be pushed, and a beta release of Copycat is expected within the coming weeks. Follow the project for updates!