Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sofastack/sofa-jraft

A production-grade java implementation of RAFT consensus algorithm.
https://github.com/sofastack/sofa-jraft

consensus distributed-consensus-algorithms java raft raft-algorithm raft-java sofa-bolt sofa-jraft sofastack

Last synced: about 1 month ago
JSON representation

A production-grade java implementation of RAFT consensus algorithm.

Awesome Lists containing this project

README

        

# SOFAJRaft

[![build](https://github.com/sofastack/sofa-jraft/actions/workflows/build.yml/badge.svg)](https://github.com/sofastack/sofa-jraft/actions/workflows/build.yml)
![License](https://img.shields.io/badge/license-Apache--2.0-green.svg)
[![Maven Central](https://img.shields.io/maven-central/v/com.alipay.sofa/jraft-parent.svg?label=maven%20central)](https://search.maven.org/search?q=g:com.alipay.sofa%20AND%20sofa-jraft)

[中文](README_zh_CN.md)
## Overview
SOFAJRaft is a production-level, high-performance Java implementation based on the [RAFT](https://raft.github.io/) 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](https://metrics.dropwizard.io/4.0.0/getting-started.html)
- Passed [Jepsen](https://github.com/jepsen-io/jepsen) consistency verification test
- SOFAJRaft includes an embedded distributed KV storage implementation

## Requirements
Compile requirement: JDK 8+ and Maven 3.2.5+ .

## Documents
- [User Guide](https://www.sofastack.tech/projects/sofa-jraft/overview)
- [Counter Example Details](https://www.sofastack.tech/projects/sofa-jraft/counter-example)
- [Release Notes](https://www.sofastack.tech/projects/sofa-jraft/release-log)

## Contribution
[How to contribute](https://www.sofastack.tech/projects/sofa-jraft/how-to-contribute-code-to-sofajraft)

## Acknowledgement
SOFAJRaft was ported from Baidu's [braft](https://github.com/brpc/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](./LICENSE). 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](https://github.com/JCTools/JCTools)
- HashedWheelTimer in [Netty](https://github.com/netty/netty), also referenced Netty's Pipeline design
- Efficient encoding/decoding of UTF8 String in [Protobuf](https://github.com/protocolbuffers/protobuf)

## Community
See our community [materials](https://github.com/sofastack/community/blob/master/ROLES-EN.md).

Join the user group on [Slack](https://join.slack.com/t/sofajraft/shared_invite/zt-1au6pb3hd-eRX_LpXPQ7r1raUu3z6wDA)

Scan the QR code below with DingTalk(钉钉) to join the SOFAStack user group.



Scan the QR code below with WeChat(微信) to Follow our Official Accounts.



## Known Users
These are the companies using SOFAStack (the names are in no particular order). Please leave a comment [here](https://github.com/sofastack/sofastack.tech/issues/5) to tell us your scenario to make SOFAStack better.


蚂蚁集团
网商银行
恒生电子
数立信息
Paytm
天弘基金
中国人保
信美相互
南京银行
民生银行
重庆农商行
中信证券
富滇银行
挖财
拍拍贷
OPPO金融
运满满
译筑科技
杭州米雅信息科技
邦道科技
申通快递
深圳大头兄弟文化
烽火科技
亚信科技
成都云智天下科技
上海溢米辅导
态赋科技
风一科技
武汉易企盈
极致医疗
京东
小象生鲜
北京云族佳
欣亿云网
山东网聪
深圳市诺安赛威
上扬软件
长沙点三
网易云音乐
虎牙直播
中国移动
无纸科技
黄金钱包
独木桥网络
wueasy
北京攸乐科技
易宝支付
威马汽车
亿通国际
新华三
klilalagroup