MicroRaft Save

Feature-complete implementation of the Raft consensus algorithm in Java

Project README

Java CI with Maven CircleCI Integration

MicroRaft is a feature-complete and stable open-source implementation of the Raft consensus algorithm in Java. It is a single lightweight JAR file of a few hundred KBs of size. It can be used for building fault tolerant and strongly-consistent (CP) data, metadata and coordination services. A few examples of possible use-cases are building distributed file systems, key-value stores, distributed lock services, etc.

MicroRaft works on top of a minimalistic and modular design. It is a single lightweight JAR with a few hundred KBs of size and only logging dependency. It contains an isolated implementation of the Raft consensus algorithm, and a set of accompanying abstractions to run the algorithm in a multi-threaded and distributed environment. These abstractions are defined to isolate the core algorithm from the concerns of persistence, thread-safety, serialization, networking, and actual state machine logic. Users are required to provide their own implementations of these abstractions to build their custom CP distributed systems with MicroRaft.

Please note that MicroRaft is not a high-level solution like a distributed key-value store or a distributed lock service. It is a core library that offers a set of abstractions and functionalities to help you build such high-level systems.

Features

MicroRaft implements the leader election, log replication, log compaction (snapshotting), and cluster membership changes components of the Raft consensus algorithm. Additionally, it offers a rich set of optimizations and enhancements:

Get started

See the User Guide.

Use MicroRaft in your project

Add MicroRaft to your dependency list:

<dependency>
    <groupId>io.microraft</groupId>
    <artifactId>microraft</artifactId>
    <version>0.5</version>
</dependency>

Build from source

Pull the latest code with gh repo clone MicroRaft/MicroRaft and build with cd MicroRaft && ./mvnw clean package.

Source code layout

microraft module contains the source code of MicroRaft along with its unit and integration test suite.

microraft-hocon and microraft-yaml modules are utility libraries for parsing HOCON and YAML files to start Raft nodes.

microraft-metrics module contains the integration with the Micrometer library for publishing MicroRaft metrics to external systems.

afloatdb contains a simple in-memory distributed KV store project built with MicroRaft and gRPC.

site-src contains the source files of microraft.io.

Contribute to MicroRaft

You can see this guide for contributing to MicroRaft.

License

MicroRaft is available under the Apache 2 License.

MicroRaft originates from the Raft implementation that powers Hazelcast IMDG's CP Subsystem module. You can see the announcement for details.

Open Source Agenda is not affiliated with "MicroRaft" Project. README Source: MicroRaft/MicroRaft
Stars
191
Open Issues
8
Last Commit
1 month ago
Repository
License

Open Source Agenda Badge

Open Source Agenda Rating