Skip to content
A production-grade java implementation of RAFT consensus algorithm.
Java Shell
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Update issue templates Mar 28, 2019
jraft-core solve PeerId cached toString result incorrect problem. Fixes gh-393 (#… Jan 9, 2020
jraft-example (feat): add learner support for rheakv (#381) Dec 30, 2019
jraft-rheakv (feat): add learner support for rheakv (#381) Dec 30, 2019
jraft-test
tools feat/tools (#73) Mar 28, 2019
.gitignore Segment log storage (#156) Sep 12, 2019
.travis.yml Feature/some changes (#358) Nov 28, 2019
CONTRIBUTING.md
LICENSE Initial commit Mar 4, 2019
README.md (feat) Improve readme (#376) Dec 24, 2019
README_zh_CN.md (feat) Improve readme (#376) Dec 24, 2019
pom.xml (feat) Upgrade sofabolt version (#382) Dec 30, 2019

README.md

SOFAJRaft

Build Status License Maven Central

Overview

SOFAJRaft is a production-level, high-performance Java implementation based on the RAFT consistency algorithm that supports MULTI-RAFT-GROUP for high-load, low-latency scenarios. With SOFAJRaft you can focus on your business area. SOFAJRaft handles all RAFT-related technical challenges. SOFAJRaft is very user-friendly, which provides several examples, making it easy to understand and use.

Features

  • Leader election and priority-based semi-deterministic leader election
  • Log replication and recovery
  • Read-only member (learner)
  • Snapshot and log compaction
  • Cluster membership management, adding nodes, removing nodes, replacing nodes, etc.
  • Mechanism of transfer leader for reboot, load balance scene, etc.
  • Symmetric network partition tolerance
  • Asymmetric network partition tolerance
  • Fault tolerance, minority failure doesn't affect the overall availability of system
  • Manual recovery cluster available for majority failure
  • Linearizable read, ReadIndex/LeaseRead
  • Replication pipeline
  • Rich statistics to analyze the performance based on Metrics
  • Passed Jepsen consistency verification test
  • SOFAJRaft includes an embedded distributed KV storage implementation

Requirements

Compile requirement: JDK 8+ and Maven 3.2.5+ .

Documents

Contribution

How to contribute

Acknowledgement

SOFAJRaft was ported from Baidu's braft with some optimizing and improvement. Thanks to the Baidu braft team for opening up such a great C++ RAFT implementation.

License

SOFAJRaft is licensed under the Apache License 2.0. SOFAJRaft relies on some third-party components, and their open source protocol is also Apache License 2.0. In addition, SOFAJRaft also directly references some code (possibly with minor changes), which open source protocol is Apache License 2.0, including

  • NonBlockingHashMap/NonBlockingHashMapLong in JCTools
  • HashedWheelTimer in Netty, also referenced Netty's Pipeline design
  • Efficient encoding/decoding of UTF8 String in Protobuf
You can’t perform that action at this time.