# airy-raft
**Repository Path**: open-byte/airy-raft
## Basic Information
- **Project Name**: airy-raft
- **Description**: airy-raft是一个基于Java实现的轻量级RAFT底层框架,您可以利用其较高的负载能力、较低的延迟、丰富的接口、清晰的实现逻辑去完成一款依赖RAFT协议的框架或软件。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2025-08-31
- **Last Updated**: 2025-12-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#### 介绍
airy-raft是一个基于Java实现的轻量级RAFT底层框架,您可以利用其较高的负载能力、较低的延迟、丰富的接口、清晰的实现逻辑去完成一款依赖RAFT协议的框架或软件,比如分布式缓存、消息队列、注册中心等分布式中间件,十分欢迎您来使用、提出issue和意见建议。
#### 什么是RAFT?
Raft协议是一种用于分布式系统的一致性算法,旨在通过简化Paxos算法来实现更易理解和实现的分布式一致性。

您可以通过相关论文来了解Raft协议:
- [Raft论文](http://https://docs.qq.com/doc/DY0VxSkVGWHFYSlZJ)
#### 您可以用来做什么?
#### 当前功能特性
1. Leader快速选举、主动变更,保证高可用
2. 日志高速复制、压缩、恢复
3. 快照生成、恢复,支持按需配置与定时生成
4. 节点管理,支持动态增减节点
5. 容忍一定程度的多数派故障
6. 容忍网络分区导致的节点失联、节点故障
7. 日志一致性的最终保证
8. 支持阻塞同步和异步发送日志
9. 支持批量发送日志,提升发送效率
#### 版本更新说明
- v2.1-beta.2
- 修复日志在发送过程中的索引不匹配问题
- 修复findLeader()会出现集群刚启动时的leader扰动问题
- WalStore使用文件存储来代替内存存储, 修复节点重启时wal日志容易丢失的问题
- 完善各个功能
- [更多版本更新历史](./docs/Versions.md)
#### 项目结构
| 模块 | 说明 |
|---|---|
| core | raft核心包,其它需要使用raft功能需要引入此包 |
| test | 测试用例包,主要用来测试raft各个功能 |
| diskv | demo包,用raft实现的一个简易版本的分布式缓存 |
#### 环境与版本支持
- JDK版本 >= 1.8
- Maven版本 >= 3.6.2
#### 项目如何引入
##### Maven
本仓库目前使用的jitpack,因此需要配置jitpack仓库
~~~xml
jitpack.io
https://www.jitpack.io
~~~
引入airy-raft-core坐标
~~~xml
com.gitee.openbyte.raft
airy-raft-core
{lastVersion}
~~~
#### 使用文档
- [初始化与配置](./docs/Config.md)
- [API使用文档和示例](./docs/API.md)
- [常见问题](./docs/QNA.md)
#### 谁在使用
- [mocha 2.x 一个优秀的开源注册中心](https://gitee.com/open-byte/mocha2)
#### 如何参与
1. Fork 本仓库
2. 提交代码
3. 提交 issue,以便我们更好完善本框架
#### 特别感谢
本框架参考了etcd、braft、raft4j等raft框架的实现原理,在此感谢这些优秀的框架和其作者。
#### 责任声明
1. 本框架为作者自己开发,投入精力有限,希望与更多开源爱好者一起完善。
2. 本框架遵循Apache2.0开源协议,若您用到了本框架请遵守协议规定。
3. 本框架全部代码均开源,使用者自行负责。