A look at eBay/NuRaft: 1.2k stars on GitHub, written primarily in C++, tracked under the Backend category. C++ implementation of Raft core logic as a replication library
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
Raft implementation derived from the cornerstone project, which is a very lightweight C++ implementation with minimum dependencies, originally written by Andy Chen.
New features that are not described in the original paper, but required for the real-world use cases in eBay, have been added. We believe those features are useful for others outside eBay as well.
Features
In the original cornerstone
Core Raft algorithm
Log replication & compaction
Leader election
Snapshot
Dynamic membership & configuration change
Group commit & pipelined write
User-defined log store & state machine support
New features added in this project
Pre-vote protocol
Leadership expiration
Priority-based semi-deterministic leader election
Read-only member (learner)
Object-based logical snapshot
Custom/separate quorum size for commit & leader election
If you project needs to integrate with NuRaft and you build your project with Conan you might want
to have NuRaft built with Conan too. This is now supported: this project has conanfile.py which can be used
to build locally and export the package to conan cache/repository or use it in editable mode locally.
Install conan using one of the methods desribed here: https://conan.io/downloads
conan build . - builds Release configuration
conan build . -s build_type=Debug builds an alternative configuration supported by CMake
You can control supported build options via command line as well, ex:
conan build . -o build_tests=True
How to Use
Please refer to this document.
Example Implementation
Please refer to examples.
Benchmark
Please refer to tests/bench.
Quick Benchmark Results
Supported Platforms
Linux, OSX (extensively tested and widely used)
Windows (built with MSVC 2019, limited testing)
Contributing to This Project
We welcome contributions. If you find any bugs, potential flaws and edge cases, improvements, new feature suggestions or discussions, please submit issues or pull requests.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
3rd Party Code
URL: https://github.com/datatechnology/cornerstone
License: https://github.com/datatechnology/cornerstone/blob/master/LICENSE
Originally licensed under the Apache 2.0 license.
URL: https://github.com/stbrumme/crc32
Original Copyright 2011-2016 Stephan Brumme
See Original ZLib License: https://github.com/stbrumme/crc32/blob/master/LICENSE
URL: https://github.com/greensky00/simple_logger
License: https://github.com/greensky00/simple_logger/blob/master/LICENSE
Originally licensed under the MIT license.
URL: https://github.com/greensky00/testsuite
License: https://github.com/greensky00/testsuite/blob/master/LICENSE
Originally licensed under the MIT license.
URL: https://github.com/greensky00/latency-collector
License: https://github.com/greensky00/latency-collector/blob/master/LICENSE
Originally licensed under the MIT license.
URL: https://github.com/eriwen/lcov-to-cobertura-xml/blob/master/lcov_cobertura/lcov_cobertura.py
License: https://github.com/eriwen/lcov-to-cobertura-xml/blob/master/LICENSE
Copyright 2011-2012 Eric Wendelin
Originally licensed under the Apache 2.0 license.
URL: https://github.com/bilke/cmake-modules
License: https://github.com/bilke/cmake-modules/blob/master/LICENSE_1_0.txt
Copyright 2012-2017 Lars Bilke
Originally licensed under the BSD license.
The most recent commit recorded on eBay/NuRaft was 28 days ago, based on the GitHub push timestamp. The repository has 293 forks — one of the better signals of community interest.
How does eBay/NuRaft compare to other Backend projects?
eBay/NuRaft is tracked by TopGit in the Backend category, with 1.2k GitHub stars and written in C++. Browse the Backend topic page on TopGit to compare it against similar projects by stars and activity.
How many stars does eBay/NuRaft have?
eBay/NuRaft has 1.2k GitHub stars — refresh the page for the live number, or check github.com/eBay/NuRaft. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
Is eBay/NuRaft open source?
Yes — eBay/NuRaft ships under the Apache-2.0 license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/eBay/NuRaft.
What is eBay/NuRaft?
eBay/NuRaft (eBay/NuRaft) is a C++ project on GitHub. From the project's own README: C++ implementation of Raft core logic as a replication library
Where do I read more about eBay/NuRaft?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/eBay/NuRaft is the definitive source.
Read full README in the tab above.
Still deciding about NuRaft?
One click hands the question to an AI along with this page — see what it says about NuRaft.